Problème de variable

Bartheleway Messages postés 76 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 12 mai 2008 - 15 mai 2006 à 19:56
Phil0 Messages postés 10 Date d'inscription dimanche 6 novembre 2005 Statut Membre Dernière intervention 29 août 2006 - 15 mai 2006 à 22:41
Voilà, j'ai un site avec une partie membre. Pour s'y inscrire, il faut remplir un formulaire d'inscription qui m'est envoyé pour que je valide l'inscription. Dans le message qui m'est envoyé, ce trouve un lien comme celui-ci : [...]/validation.php?login=$login&pass=$pass
Ce lien arrive sur une page qui entre les informations contenu en $login et $pass dans ma base de données Mysql ($login dans login et $pass dans pass_md5).
Le problème, est que ce script ne rentre rien dans la base de données Mysql !!!

Voilà mon script(la partie en php) :
<?php
if (isset($_GET['login']) and isset($_GET['pass']))
{
$recherche_login=$_GET['login']
$recherche_pass=$_GET['pass'];
$base = mysql_connect ('xxxxxxx', 'xxxxxxx', 'xxxxxxxx'); mysql_select_db ('xxxxxx', $base);// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error()); //ligne 29
$data = mysql_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.addslashes($_POST['login']).'", "'.md5(addslashes($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
}
else // si login existe
{$erreur="Le pseudo choisi est déjà utilisé !!!"}
?>

Je ne trouve pas le problème et je cherche depuis 2 semaine !!! Merci pour vos réponses !!!
Il me dit aussi parse error : unexpect T_VARIABLE sur la ligne 29

Quand je trouve pas ça m'énerve !!!

5 réponses

cs_Tizard Messages postés 20 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 19 juin 2006
15 mai 2006 à 20:22
Bon l'erreur est donc qu'il arrive pas à faire ceci =>
mysql_query('SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'"');
Ton erreur vient sûrement du $_POST['login'] en effet il comprends pas que tu remette des guillemets

SOLUTION possible:
Soit tu remplace tout simplement par $_POST["login"];

Mais personnellement je préfère mettre des doubles guillements par défaut dans ce genre de variables
$sql="SELECT COUNT(*) FROM membre WHERE login='".$_POST['login']."';";

Le point virgule à la fin de la variable est totalement facultatif et ne sert que si on met plusieurs requetes SQL dans le meme query.
Seulement je trouves qu'on s'y retrouve mieux entre toutes ces guillemets de savoir où on en est!

Voilà sinon si ça marche toujours pas, vérifie la casse (par rapport à la bdd), etc...

@++ Bonne chance


tiz
0
Bartheleway Messages postés 76 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 12 mai 2008
15 mai 2006 à 21:15
Après plusieurs, essais mon erreur devrait venir d'ici :
if (isset($_GET['login']) and isset($_GET['pass'])) { $recherche_login=$_GET["login"]
$recherche_pass=$_GET["pass"]}

Je pense que c'est la fonction $recherche_login et la fonction $recherche_pass qui ne sont pas reconnu par IFRANCE !!!
Cette partie devrait en principe prendre les informations $login et $pass situé dans l'URL !!!
Ces informations arrive dans le lien par la fonction $_GET !!!!
J'espère que tu pourra encore m'aider. Merci !!!

Quand je trouve pas ça m'énerve !!!
0
cs_Tizard Messages postés 20 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 19 juin 2006
15 mai 2006 à 21:36
Ok,

Primo, $recherche_login et l'autres sont des VARIABLES et non des fonctions.
Secondo t'oublie PLEIN DE POINTS-VIRGULES ! ULTRA IMPORTANT !!!

Le code que tu m'as fourni devient = >
if (isset($_GET['login']) && isset($_GET['pass']))
{
$recherche_login=$_GET["login"];
$recherche_pass=$_GET["pass"];
}
$_GET n'est pas non plus une fonction mais une variable superglobale (= Elle existe partout dans la page) de type tableau (array).

Après si tu veux voir si il les reconnaits tu peux tenter de mettre ça au tout début de ton script (oublie rien même le HTML avant) =>

<?PHP
print_r($_GET);
exit;
?>

Ca t'affichera le tableau $_GET avec toutes les variables dedans (et RIEN d'autre et ça fera RIEN d'autre à cause du exit;)
Si il est vide ya un problème, si tu retrouve tes pass, login, etc c'est bon et je pense que ça sera ça.

Après essaye ce script là =>

<?php
if (isset($_GET['login']) && isset($_GET['pass']))
{
$recherche_login=addslashes($_GET['login']);
$recherche_pass=addslashes($_GET['pass']);
$base
= mysql_connect ('xxxxxxx', 'xxxxxxx', 'xxxxxxxx'); mysql_select_db
('xxxxxx', $base);
$sql = "SELECT count(*) FROM membre WHERE login='$recherche_login'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
$nombre=mysql_result($sql, 0); /* La fonction mysql_result(x, y, {z}) va prendre le y ème enregistrement de x et prendre le champ z (si il n'y a qu'un seul champ pas besoin de le mettre)*/
if ($nombre == 0) {
$sql2 = "INSERT INTO membre VALUES('', '$recherche_login', '$recherche_pass')";
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'
'.mysql_error());
}
else // Pas besoin d'accolades si ya qu'une seule instruction en dessous !, ceci dit ça marchera quand meme
$erreur="Le pseudo choisi est déjà utilisé !!!"; // Sache que ça n'affichera rien ça, tu déclares juste la variable.

?>

Un autre conseil ===> http://www.siteduzero.com/tuto-3-4-0-un-site-dynamique-avec-php.html

tiz
0
Bartheleway Messages postés 76 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 12 mai 2008
15 mai 2006 à 22:34
J'ai fait tes modif, plus les corrections d'erreur qu'il y avait (d'après le site), mais il en reste une que je n'ai toujours pas comprise : Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in [...]/site/Membre/validation.php on line 27

Donc, revoilà ma source :
<?php if (isset($_GET['login']) & isset($_GET['pass'])) { $recherche_login="addslashes($_GET['login']");
$recherche_pass="addslashes($_GET['pass']");
$base = mysql_connect ('xxxxxxx', 'xxxxxxxx', 'xxxxxxxx');
mysql_select_db ('xxxxxxxx', $base);
$sql = "SELECT count(*) FROM membre WHERE login='$recherche_login'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
$nombre=mysql_result($sql, 0); /* La fonction mysql_result(x, y, {z}) va prendre le y ème enregistrement de x et prendre le champ z (si il n'y a qu'un seul champ pas besoin de le mettre)*/
if ($nombre == 0) {
$sql2 = "INSERT INTO membre VALUES('', '$recherche_login', '$recherche_pass')";
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'
'.mysql_error());
}
else // Pas besoin d'accolades si ya qu'une seule instruction en dessous !, ceci dit ça marchera quand meme
{$erreur="Le pseudo choisi est déjà utilisé !!!";} // Sache que ça n'affichera rien ça, tu déclares juste la variable.
?>

Je n'ai pas compris ta fonction mysql_resul (à quoi sa sert les x, y, z ?) !!! Il semblerai que l'erreur vienne d'ici : $recherche_login="addslashes($_GET['login']");
$recherche_pass="addslashes($_GET['pass']");
Je comprend pas grand chose au PHP (débutant de 2 semaine et pas trop envie de tout apprendre) lol !!! Si je veux que la phrase :"Le pseudo choisi est déjà utilisé" m'apparaisse comme un message d'erreur IE que dois-je faire ???

Quand je trouve pas ça m'énerve !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil0 Messages postés 10 Date d'inscription dimanche 6 novembre 2005 Statut Membre Dernière intervention 29 août 2006
15 mai 2006 à 22:41
$recherche_login="addslashes($_GET['login'])";

$recherche_pass="addslashes($_GET['pass'])";

les guillemet de chaque côté de la fonction et pas en plein dedans
0
Rejoignez-nous