Problème avec mes GET_ ...

Aaymeric91 Messages postés 12 Statut Membre -  
Pitet Messages postés 2845 Statut Membre -
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

  1. Pitet Messages postés 2845 Statut Membre 530
     
    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
  2. Aaymeric91 Messages postés 12 Statut Membre
     
    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
  3. Aaymeric91 Messages postés 12 Statut Membre
     
    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
  4. Pitet Messages postés 2845 Statut Membre 530
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Aaymeric91 Messages postés 12 Statut Membre
     
    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
  7. Pitet Messages postés 2845 Statut Membre 530
     
    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
  8. Aaymeric91 Messages postés 12 Statut Membre
     
    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
  9. Pitet Messages postés 2845 Statut Membre 530
     
    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