Bug en PHP, alors que selon moi c'est juste..

Fermé
Ralsalerm - 19 juin 2010 à 11:23
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 - 19 juin 2010 à 16:32
Bonjour,

Alors voilà, je suis en train de programmer un petit moteur de jeu par navigateur en PHP et MySQL, j'ai réussi à résoudre tout les derniers bugs, sauf un ...
Si vous pouviez m'aider, je ne vois vraiment pas le problème. Voici le code :
<?php
if (!isset($_SESSION['login'])) { 
   header ('Location: dejaco.php'); 
   exit();  
}  
?>

<?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
	// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
		// on teste les deux mots de passe
		if ($_POST['pass'] != $_POST['pass_confirm']) {
			$erreur = 'Les 2 mots de passe sont différents.';
		}
		else {
			$base = mysql_connect ('sql.olympe-network.com', 'worldofmagic', 'vcorma24s');
			mysql_select_db ('worldofmagic_membre', $base);

			// on recherche si ce login est déjà utilisé par un autre membre
			$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
			$data = mysql_fetch_array($req);

			if ($data[0] == 0) {
				$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass']).'", "'.mysql_escape_string($_POST['puissance']).'")';
				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

				session_start();
				$_SESSION['login'] = $_POST['login'];
				header('Location: maison.php');
				exit();
			}
			else {
				$erreur = 'Un membre possède déjà ce login.';
			}
		}
	}
	else {
		$erreur = 'Au moins un des champs est vide.';
	}
}
?>
<html>
<head>
<title>WorldOfMagic - Inscription</title>
</head>
<body>
<TABLE BORDER="0">
<CAPTION><h1>WorldOfMagic</h1><br></CAPTION>
  <TR>
 <TH>
<a href='index.php'>Accueil</a> <br>
<a href='connect.php'>Connexion</a> <br>
<a href='inscript.php'>Inscription</a> <br>
<a href='maison.php'>Ma Maison</a> <br>
<a href='entrain.php'>Entrainement</a> <br>
<a href='combat.php'>Combat</a> <br>
<a href='credits.php'>Crédits</a> <br>
</TH>
<TD> 

<strong> Inscription à WorldOfMagic</strong><br>
<form action="inscript.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
<input type="hidden" name="puissance" value="5" />
<input type="submit" name="inscription" value="Inscription">
</form>
<a href='connect.php'>Tu as déjà un compte ?</a>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?>

</TD>
  </TR>
</TABLE> 

</body>
</html>



Et donc, voici l'erreur affichée :
Parse error: syntax error, unexpected ';' in /www/worldofmagic/inscript.php on line 27


inscript.php est la page que vous voyez ci-dessus !
Donc, merci de m'aider, moi franchement je ne vois pas de problème.
( Oui, mon code est brouillon et j'ai fait un design en tableau parce que le design je m'en fout, pour le moment je veux que sa soit fonctionnel )

A voir également:

4 réponses

_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 6 058
19 juin 2010 à 11:39
Bonjour,
Quand tu es persuadé qu'une ligne est sans erreur, mets-la en commentaire et relance. Deux cas possibles:
1- l'erreur disparaît: alors étudie sérieusement la ligne de code que tu viens de commenter;
2- l'erreur est encore présente (même cause et même numéro de ligne): cela signifie que l'erreur est avant cette ligne. Remonte alors dans le code.

Ritchi
0
Ha ouais, je connaissais pas cette technique !
A chaque fois je relisais tout le code pour trouver l'erreur, mais sa, c'est pas bête. Merci encore !
0
Bon, euh, maintenant sa me met directement un 404, donc bon ...
0
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 6 058
Modifié par _Ritchi_ le 19/06/2010 à 16:33
Normal puisqu'en mettant en commentaire la ligne 27 "$sql = 'INSERT INTO membre VALUES(...", la variable $sql n'est pas initialisée...

La solution à ton problème est que effectivement la ligne 27 contient une erreur !
Mais non pas sur le caractère ";" mais sur le nombre de parenthèses fermantes.
La solution est :
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'" , "'.mysql_escape_string(md5($_POST['pass']).'" , "'.mysql_escape_string($_POST['puissance']).'" ))';
Cette dernière parenthèse ferme la parenthèse ouvrante de VALUE.

Conseil: Utilise un éditeur de texte qui te permet de mettre en surbrillance les couples de parenthèses ouvrante/fermante. Sur Mac (mon cas) j'utilise Smultron.

Ritchi
0