IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Variable de session affectée via page appelée


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut Variable de session affectée via page appelée
    Bonjour,

    J'essaye d'intégrer un "captcha" à mon formulaire , seulement , je n'arrive pas à sauvegarder une valeur dans une variable de session..

    Voici la ligne qui appelle le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img id="captcha" src="<?php echo DIR_CLASSES;?>securimage_show.php?sid=<?php echo md5(uniqid(time())); ?>" alt="text Image">
    Voici la page securimage_show.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    include 'securimage.php';
     
    $img = new securimage();
     
    $img->show();
    Déjà à ce niveau ci , si j'écris : $_SESSION["test"]="test" , ça ne fonctionne pas.
    Voici la partie intéressante de securimage.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    class Securimage {
    ...
    var $code;
    var $code_entered;
    var $correct_code;
     function Securimage()
      {
        if ( session_id() == '' ) { // no session has been started yet, which is needed for validation
          session_start();
        }
      }
     function show($background_image = "")
      {
        if($background_image != "" && is_readable($background_image)) {
          $this->bgimg = $background_image;
        }
     
        $this->doImage();
      }
     function doImage()
      {
    .. 
    $this->createCode();
     ..
      }
    function createCode()
      {
        $this->code = false;
     
        if ($this->use_wordlist && is_readable($this->wordlist_file)) {
          $this->code = $this->readCodeFromFile();
        }
     
        if ($this->code == false) {
          $this->code = $this->generateCode($this->code_length);
        }
     
        $this->saveData();
      }
    function saveData()
      {
        $_SESSION['securimage_code_value'] = strtolower($this->code);
      }
    En résultat , cette variable $_SESSION['securimage_code_value'] n'existe pas , hors , j'ai testé $this->code , il est correcte.

    Lors du passage dans cette classe , ma session est déjà crée et contient déjà d'autre variable.

    Pourriez-vous m'éclairer?

    Merci d'avance.

  2. #2
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bonsoir,

    Une question sûrement bête mais puisque tu ne le montres pas, je me permets de la poser. Tu as fait un session_start() avant tout affichage dans le navigateur (même un simple espace) ?

    Si oui, ton session start est bien antécédent à ton $_SESSION ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Bonsoir.

    Attention à ne pas conserver la valeur dans la session sinon l'utilisateur peut se resservir de son code plusieurs fois...

    A+
    De retour parmis vous après 10 ans!!

  4. #4
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Oui , je démarre bien ma session , lorsque je teste le contenu de la variable de session à la fin de la page appelante du script (cnf post précédant,1é code)
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [language] => fr [new_visitor] => 1 )
    Si dans cette même page , j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['securimage_code'] = "test";
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [language] => fr [new_visitor] => 1 [secureimage_code] => test)
    Par contre , si je l'ajoute plutôt dans securimage_show.php ou secureimage.php , celà ne fonctionne pas !

    Peut être est-ce parce que j'appelle la page via un echo et non un include.. je n'avais jamais utilisé ceci , pourtant ça fonctionne bien dans d'autres cas..

Discussions similaires

  1. [Débutant] appeler une variable de session dans une page
    Par cyriane dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/05/2012, 12h16
  2. Réponses: 2
    Dernier message: 16/08/2011, 13h58
  3. Réponses: 4
    Dernier message: 29/07/2009, 16h36
  4. Réponses: 3
    Dernier message: 04/08/2008, 16h33
  5. Réponses: 6
    Dernier message: 15/11/2007, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo