Bug en PHP, alors que selon moi c'est juste..
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 :
Et donc, voici l'erreur affichée :
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 )
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 )
4 réponses
-
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 -
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 ! -
Bon, euh, maintenant sa me met directement un 404, donc bon ...
-
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