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 :

Problème de création de variable session


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Par défaut Problème de création de variable session
    Bonjour,

    Je suis actuellement bloqué sur un problème avec mes sessions et malgré mes recherches un peu partout sur le net, tutos et faq, je ne comprend pas d'où vient mon erreur.

    J'ai deux fichiers :

    depos_form.php qui permet de renseigner un formulaire et de le transmettre.
    insert_form.php qui insère en base de données ce qui a été saisie dans le formulaire.

    Bout de code de depos_form.php (partie qui nous intéresse, j'ai enlevé le reste pour ne pas avoir un post trop long) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    session_start();
    include( "includes/header.html" );
    include( "includes/menu.php" );
    if(isset($_SESSION['InsertOk']) && $_SESSION['InsertOk'] == 'ok')
    {
    echo "<div id='return_insert'><p>Les donn&eacutes;es saisies ont bien &eacute;t&eacute;es enregistr&eacute;es</p></div>";
    }
    echo '<div id="conteneur_form">
    <form id="depositaire_form" action="include/insert_form.php" method="post">
    .....
    </form>
    </div>';
    Bout de code de insert_form.php (pareil j'ai coupé le code qui ne concerne pas notre sujet) :
    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
     
    <?php
    session_start();
     
    function ControlSaisie($aValue){
    //code de contrôle de saisie
    }
     
    ....
     
    $bControle = ControlSaisie($aFormValue);
     
    if($bControle){
    //préparation de la requête et insert
    if($bInsert){
    $_SESSION['InsertOk'] = 'ok';
    }
    else{
    $_SESSION['InsertOk'] = 'ko';
    }
    }
    header('chemin vers depos_form.php');

    Le problème vient que lorsque je fais ma première validation, si le formulaire est bien rempli alors :
    - insertion en base de données OK
    - Création de ma variable session OK (j'ai placé un die($_SESSION['InsertOK']) juste après et elle existait bien.
    - redirection vers depos_form.php OK
    - rentre dans la condition pour afficher la div "return_insert" KO. (j'ai fait un echo de $_SESSION['InsertOK'] et j'ai eu un retour vide).

    Ce que je ne comprend pas c'est qu'en validant une deuxième fois, là j'ai bien toutes les étapes :
    - insertion BDD
    - création de variable session
    - redirection
    - affichage de la div


    Si quelqu'un a une idée de comment résoudre le problème ou juste me dire ce que je n'ai pas bien compris ce serait super sympa.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    C'est que au premier tour le if($bControle) est à faux

    Tu peux donner cette fonction ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Par défaut
    La fonction n'est pas encore implémentée elle me retourne toujours true.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function ControlSaisie($aValue){
    //code de contrôle de saisie
    // Faire appel à une fonction JS et controle de regex PHP en cas de désactivation JS
     
    return true;
     
    }
    Au pire, si la fonction était implémenter je contrôlais le return de ma fonction avant de faire l'insert, et au premier passage l'insert a bien lieu.

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Ajoutes des var_dump et des echo dans les conditions genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if($bInsert){
    echo 'ici';
    $_SESSION['InsertOk'] = 'ok';
    }
    else{
    echo 'est Ici';
    $_SESSION['InsertOk'] = 'ko';
    }

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Par défaut
    Comme c'est une page de traitement j'ai mis un die à la place, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if($bInsert){
    die('ici');
    $_SESSION['InsertOk'] = 'ok';
    }
    else{
    die('est Ici');
    $_SESSION['InsertOk'] = 'ko';
    }
    Au premier passage, j'ai ceci :

    ici

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Attention: die est un alias de la fonction exit, dans tous les cas ce n'est pas à utiliser dans les phases de prod ...

    Sinon, à part qu'avec le die tu auras pas $_Session initialisé (et on s'en fou d'ailleurs ), blague à part $_SESSION est bonne et est bien initialisée donc rien de ce côté là.

    les session_start sont bon, juste la ligne 1 à virer car jamais d'espaces en début de fichier avant un <?php

    Regardes sur session telle que:
    Si une session n'arrive pas à démarrer, alors FALSE est retourné. Précédemment TRUE était retourné.

Discussions similaires

  1. Variable session non retenue / problème sur Firefox
    Par hatembr dans le forum Langage
    Réponses: 10
    Dernier message: 25/04/2007, 17h22
  2. Problème de récuperation des variables de session
    Par paradeofphp dans le forum ASP.NET
    Réponses: 10
    Dernier message: 02/03/2007, 15h40
  3. Réponses: 4
    Dernier message: 20/06/2006, 13h12
  4. Problème de duplication de variables session
    Par boubsa dans le forum Langage
    Réponses: 5
    Dernier message: 10/05/2006, 16h49
  5. [xmlrad]problème avec la variable session
    Par ekmule dans le forum XMLRAD
    Réponses: 5
    Dernier message: 22/02/2006, 13h22

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