JeuWeb - Crée ton jeu par navigateur
Problème dans mon code - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Problème dans mon code (/showthread.php?tid=1575)



Problème dans mon code - julios - 10-08-2007

bon voila j'ai fais le début de mon jeu php avec une base fournie par le site http://www.aramiil.net cependant mon système de conexion ne marche pas, alors que l'inscription fonctionne, pourquoi ? voici mes fichiers que j'utilises avec wamp

index.php
Code :
<?php
if(isset($_POST['pseudonyme']))
{
include('fonctions_login.php');
connexion($_POST['pseudonyme'], $_POST['password']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<title>Accueil</title>
<link rel="stylesheet" type="text/css" href="config.css" />
</head>

<body>
<div id="box1">
<form method="post" action="index.php">
Pseudonyme : <input name="pseudonyme" /><br />
Mot de passe : <input name="password" type="password" /><br />
<input name="Valider" type="submit" value="Valider" />
</form><br /><br />
<a href="inscription.php">S'inscrire</a>
</div>
</body>

</html>

config.php
Code :
<?php

$hostMysql = 'localhost'; //Le serveur MySQL
$pseudoMysql = 'root'; //Le nom d'utilisateur MySQL
$passMysql = ''; //Le mot de passe correspondant à l'utilisateur MySQL
$baseMysql = 'blob'; //Le nom de la base MySQL

?>

home.php
Code :
<?php
include('fonctions_login.php');

//On vérifie la connexion
if(check() === false)
{
header('location: index.php');
die();
}

if(isset($_GET['logout']))
{
deconnexion();
header('location: index.php');
die();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<link rel="stylesheet" type="text/css" href="config.css" />
<title>Accueil - Connecté</title>
</head>

<body>
<div id="box1">
Vous êtes connecté.<br />
<a href="home.php?logout=true">Se déconnecter</a>
</div>
</body>
</html>

inscription.php
Code :
<?php

//Vérification de l'envoi des informations
if(isset($_POST['pseudonyme']))
{

//On récupère les informations
$pseudonyme = $_POST['pseudonyme'];
$password = $_POST['password'];

//On inclu nos fonctions
include('fonctions_login.php');

//On fait le switch
switch (inscription($pseudonyme, $password))
{
case 1 :
$erreur = 'Votre pseudonyme et votre mot de passe doivent être composés uniquement de chiffres et de lettres';
break;
case 2 :
$erreur = 'Votre pseudonyme doit faire entre 1 et 10 caractères. Votre mot de passe doit faire entre 4 et 16 caractères.';
break;
case 3 :
$erreur = 'Ce pseudonyme est déjà utilisé.';
break;
case 5 :
connexion($pseudonyme, $password);
break;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<link rel="stylesheet" type="text/css" href="config.css" />

<title>Inscription</title>
</head>

<body>
<div id="box1">
<?php
//Si il y a une erreur, on l'affiche
if(isset($erreur))
{
echo $erreur;
}
?>

Pour vous inscrire, remplissez ce formulaire:
<br />
<!-- Formulaire d'inscription -->
<form method="post" action="inscription.php">
Pseudonyme désiré : <input name="pseudonyme" /><br />
Mot de passe : <input name="password" /><br />
<input type="submit" name="Valider" value="Valider" />
</form>
</body>
</body>

</html>

fonctions_login.php
Code PHP :
<?php

function inscription($pseudonyme, $password)
{
//Vérification de la conformité du pseudonyme et du mot de passe
if(preg_match('/[^a-z0-9]/i', $pseudonyme) || preg_match('/[^a-z0-9]/i', $password))
{
return
1;
}

//Vérification de la longueur du pseudonyme et du mot de passe
if(strlen($pseudonyme) > 10 || strlen($pseudonyme) == 0 || strlen($password) < 4 || strlen($password) > 16)
{
return
2;
}

//Vérification de l'unicité du pseudonyme

//On inclu le fichier de configuration créé en 1.
include('config.php');

//On créé une connexion à la base de données
$db = mysql_connect($hostMysql, $pseudoMysql, $passMysql) or die(mysql_error());
mysql_select_db($baseMysql, $db);

//On prépare notre requete
$sql = 'SELECT pseudonyme FROM joueurs WHERE pseudonyme = "' . $pseudonyme . '"';

//On l'execute
$resultat = mysql_query($sql, $db) or die(mysql_error());

//On compte les résultats
if(mysql_num_rows($resultat) > 0)
{
return
3;
}

//On vide le résultat
mysql_free_result($resultat);

//Choix des valeures par défaut
$vie = 100;
$mana = 100;
$regen = 5;
$force = 1;
$defense = 1;
$magie = 1;

//Enregistrement du résultat

//On prépare la requête
$sql = "INSERT INTO `joueurs`
( `pseudonyme` , `password` , `vie` , `viemax` , `mana` , `manamax` , `regeneration` , `force` , `magie` , `defense` , `experience` , `tour` )
VALUES ( '
$pseudonyme', '$password', '$vie', '$vie', '$mana', '$mana', '$regen', '$force', '$magie', '$defense', '0', '0')";

//On l'enregistre
mysql_query($sql, $db) or die(mysql_error());

//On ferme la connexion MySQL
mysql_close($db);

//On renvoi la bonne valeure
return 5;
}

function
connexion($pseudonyme, $password)
{
//Vérification de la conformité du pseudonyme et du mot de passe
if(preg_match('/[^a-z0-9]/i', $pseudonyme) || preg_match('/[^a-z0-9]/i', $password)
||
strlen($pseudonyme) > 10 || strlen($pseudonyme) == 0 || strlen($password) < 4 || strlen($password) > 16)
{
header('location: index.php');
die();
}

//Récupération des informations

//On inclu le fichier de configuration créé en 1.
include('config.php');

//On créé une connexion à la base de données
$db = mysql_connect($hostMysql, $pseudoMysql, $passMysql) or die(mysql_error());
mysql_select_db($baseMysql, $db);

//On prépare notre requete
$sql = 'SELECT pseudonyme FROM joueurs WHERE pseudonyme = "' . $pseudonyme . '"';

//On l'execute
$resultat = mysql_query($sql, $db) or die(mysql_error());

//Vérification du mot de passe

//On vérifie qu'il y a eu un résultat
if(mysql_num_rows($resultat) == 0)
{
header('location: index.php');
die();
}

//On met en forme les informations
$informations = mysql_fetch_assoc($resultat);

//On libère le résultat et on ferme la connexion MySQL, on en aura plus besoin
mysql_free_result($resultat);
mysql_close($db);

//On vérifie maintenant le mot de passe
if($informations['password'] != $password)
{
header('location: index.php');
die();
}

//Création de la session

//On démarre la session
if(!isset($_SESSION))
{
session_start();
}

//On enregistre les informations
$_SESSION = $informations;

//Redirection
header('location: home.php');
die();
}

function
check()
{

//Lancement de la session
if(!isset($_SESSION))
{
session_start();
}

if(isset(
$_SESSION['pseudonyme']))
{
return
$_SESSION;
} else {
return
false;
}
}

function
deconnexion()
{

//Destruction de la session
session_unset();
session_destroy();
}
?>


config.css

Code :
body {
background-image:url(image_de_fond.jpg);
z-index: 1;
Background-attachment: fixed;
}
#box1 {
background-image:url(image_de_fond22.png);
background-repeat: no-repeat;
background-position: 50% 50%;
Background-attachment: fixed;
padding-top: 80px;
padding-right: 100px;
padding-bottom: 10px;
padding-left: 100px;
z-index: 2;
}


h1 {
font-family:verdana, sans-serif;
font-size:80%;
color:#ffa500;
background-color:transparent;
text-align:center;
}
h2 {
font-family:verdana, sans-serif;
font-size:80%;
color:#ffa500;
background-color:transparent;
text-align:left;
}
h3 {
font-family:verdana, sans-serif;
font-size:80%;
color:black;
background-color:transparent;
text-align:left;
}
p {
font-family:verdana, sans-serif;
font-size:80%;
color:black;
background-color:transparent;
text-align:left;
margin-left:0px;
margin-right:0px;
}
li {
font-family:verdana, sans-serif;
font-size:80%;
color:black;
background-color:transparent;
text-align:left;
margin-left:0px;
margin-right:0px;
}
a:link {
font-family:verdana, sans-serif;
font-size:90%;
color:navy;
background-color:transparent;
text-decoration:underline;
}
a:visited {
font-family:verdana, sans-serif;
font-size:90%;
color:#ffa500;
background-color:transparent;
text-decoration:underline;
}
a:hover {
font-family:verdana, sans-serif;
font-size:90%;
color:#ffa500;
background-color:transparent;
text-decoration:underline;
}
table {
border-color:transparent;
border-style:solid;
border-width:2px;
}
td {
font-family:verdana, sans-serif;
font-size:80%;
color:black;
text-align:left;
background-color:transparent;
border-color:transparent;
border-style:solid;
border-width:1px;
}


Merci d'avance au surdoué qui sera me répondre.


RE: PRobleme dans mon code - Catch_Me - 11-08-2007

Le c/c bête et méchant, c'est le Mal.
Comprends ton code avant de l'utiliser .____."


RE: PRobleme dans mon code - Loetheri - 11-08-2007

Alors ce serait cool de savoir où se trouve l'erreur, s'il y en a une d'afficher.
Ce serait bien aussi d'indenter ton code, de ne taper que le code sur le forum qui est intéressant (genre le CSS ... on s'en fout).

Évite les inclusions dans les inclusions. C'est assez mal ^^ Utilise peut-être une fonction comme include_once ou require_once. De plus, trop d'inclusion tue l'inclusion.


RE: PRobleme dans mon code - julios - 11-08-2007

oui je comprend le code, j'ai appris le big tutorial de mateo sur le site du zéro, je pense que le problème viens dans la page home.php mais je ne sais pas ou. Le problème viens d'une redirection qui ne se fait pas. je ne peut pas avoir accès a ceci
Code :
<body>
<div id="box1">
Vous êtes connecté.<br />
<a href="home.php?logout=true">Se déconnecter</a>
</div>
</body>
dans le fichier home, je suis toujours redirigé vers index.php

Code :
<?php
include('fonctions_login.php');

//On vérifie la connexion
if(check() === false)
{
header('location: index.php');
die();
}

if(isset($_GET['logout']))
{
deconnexion();
header('location: index.php');
die();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<link rel="stylesheet" type="text/css" href="config.css" />
<title>Accueil - Connecté</title>
</head>

<body>
<div id="box1">
Vous êtes connecté.<br />
<a href="home.php?logout=true">Se déconnecter</a>
</div>
</body>
</html>



RE: PRobleme dans mon code - Loetheri - 11-08-2007

Tu fais une égalité stricte (ou identique pour être exact) ... et c'est là, me semble-t-il, que ça fait mal !

(Cfr http://fr.php.net/manual/fr/language.operators.comparison.php )

Maintenant je me trompe peut-être.


RE: PRobleme dans mon code - julios - 11-08-2007

moi aussi j'ai pensais la même chose, pourtant sa ne fonctionne pas plus avec un simple "=="


RE: PRobleme dans mon code - julios - 16-08-2007

vous pouvez suprimer ce sujet puisque j'ai totalement refait le script


RE: PRobleme dans mon code - Fidelcastor - 17-08-2007

Pourquoi supprimer, cela peux servir à un autre.

Edit: Loin de moi cette idée, je change le sens de ma phrase


RE: PRobleme dans mon code - Mysterarts - 17-08-2007

Attention a ne pas vouloir prendre la place des modos Fidelcastor ^^
J'ai eu assez de mal pour l'obtenir Smile
Néanmoins, ta remarque est pertinente ^^
Je m'en charge donc...

Mysterarts