Problème avec mes GET_ ...

Fermé
Aaymeric91 Messages postés 12 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 26 avril 2016 - 21 oct. 2013 à 18:06
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 21 oct. 2013 à 19:42
Bonjour,
ma question est toute simple mais bizarrement ca pose un problème dans mon code. pour faire simple, un utilisateur rentre des valeurs dans un champs de texte (pseudo) et et token/clé est généré (token) et cela les envoie via l'URL qui est le suivant:
http://127.0.0.1/test/activation.php?pseudo='.urlencode($pseudo).'&token='.urlencode($token).'

Ma page "activation.php" quant à elle récupère bien la valeur de pseudo et la token/clé dans l'URL mais lorsque que je fais par exemple echo 'Pseudo: '.GET['pseudo']; ca m'affiche un message d'erreur comme quoi la variable n'existe pas alors que la valeur de cette variable est visible dans l'URL. Une petite idée ?

Merci

8 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
21 oct. 2013 à 18:32
Salut,

Les paramètres GET sont accessibles via la variable $_GET et non GET.
Essaye comme ceci :
echo 'Pseudo: ' . $_GET['pseudo'];

Bonne journée
1
Aaymeric91 Messages postés 12 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 26 avril 2016
21 oct. 2013 à 18:45
Un tout grand merci, la réponse est tellement simple que c'est frustrant de ce dire que j'ai passé 2 jours dessus :) Merci
0
Aaymeric91 Messages postés 12 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 26 avril 2016
Modifié par Aaymeric91 le 21/10/2013 à 18:49
Je profite vite fait de ta présence pour te demander si tu pouvais résoudre ce probleme suivant: j'ai ce bout de code:

     $stmt = $bdd->prepare("SELECT token,actif FROM membres WHERE pseudo like :login ");
if($stmt->execute(array(':pseudo' => $login)) && $row = $stmt->fetch())
{
$clebdd = $row['token']; // Récupération de la clé
$actif = $row['actif']; // $actif contiendra alors 0 ou 1
}

Et j'ai l'erreur suivant: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\test\activation.php on line 45
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
21 oct. 2013 à 19:09
L'erreur vient du paramètre nommé :pseudo qui n'existe pas dans ta requête préparée :

$stmt = $bdd->prepare("SELECT token,actif FROM membres WHERE pseudo like :login ");
if($stmt->execute(array(':login' => $login)) && $row = $stmt->fetch())
{
// ...
}
0

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

Posez votre question
Aaymeric91 Messages postés 12 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 26 avril 2016
21 oct. 2013 à 19:11
Je m'étais fais la reflexion mais je fais passer :pseudo ou :login c'est la valeur envoyé par l'utilisateur non ? Si c'est oui, pourquoi mettre :login et $login ?

La réponse sera toute simple je suppose -_-"
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
21 oct. 2013 à 19:19
Il ne faut pas confondre la paramètre nommé :login et la variable php $login.

Tu peux le faire en nommant ton paramètre :pseudo, mais il faut utiliser ce même nom dans la fonction execute() :

$stmt = $bdd->prepare("SELECT token,actif FROM membres WHERE pseudo like :pseudo");
if($stmt->execute(array(':pseudo' => $login)) && $row = $stmt->fetch())
{
// ...
}

L'important est d'utiliser le même nom de paramètre dans la requête préparée et dans la fonction execute().
0
Aaymeric91 Messages postés 12 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 26 avril 2016
Modifié par Aaymeric91 le 21/10/2013 à 19:27
Ok ok. J'ai en fait, fait un copié collé donc j'ai un peu du mal avec mon code.
La ligne suivante: AND $row = $stmt->fetch()) {

$row prend les valeurs de la ligne lorsque le login rentré correspond à celui dans la bdd stmt c'est ca ? car 2 ligne plus loin j'ai ce bout de code: $actif = $row['actif']; et j'ai une erreur plus loins comme quoi $actif n'est pas définie

Dans ma base de donné $actif devrait prendre la valeur 0 mais apparement ce n'est pas le cas.


EDIT: En fait, je remarque qu'il rentre même pas dans le if alors que le pseudo existe ..
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
21 oct. 2013 à 19:42
Tu dois savoir que le copier/coller est l'ennemi du développeur ;)

Je te conseil de trouver un tuto sur PDO, il y en a plein sur le net et ce sera beaucoup plus facile pour le reste de tes développements de bien comprendre son fonctionnement.

N'hésites pas à revenir si tu as des questions plus précises, mais ça ne sert à que t'explique ici comment utiliser PDO alors qu'un bon tuto sera bien plus efficace :)
0