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 :

Affichage d'erreurs via variables Sessions


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut Affichage d'erreurs via variables Sessions
    Bonjour,
    J'ai voulu mettre en place un système d'affichage d'erreurs.
    Ca marche systématiquement quand la variable session est initialisé dans le même fichier où le message seras affiché
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php if(XXXX) { $_SESSION['erreur'] = 'Une erreur';
    <body>
    <?php include 'includes/infos.php'; ?>
    </body>
    Infos.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
    <?php if(!empty($_SESSION['erreur'])){ ?>
     
    	<div class="alert alert-danger alert-dismissable">
    	  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
    	  <h4><i class="icon fa fa-ban"></i> ERREUR !</h4>
    	    <?php echo $_SESSION['erreur'] ?>
    	</div>
     
    <?php }
    if(!empty($_SESSION['succes'])){ ?>
     
    	<div class="alert alert-success alert-dismissable">
    	  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
    	  <h4><i class="icon fa fa-ban"></i> SUCCES !</h4>
    	    <?php echo $_SESSION['succes'] ?>
    	</div>
     
    <?php }
    	unset($_SESSION['succes'], $_SESSION['erreur']);
    ?>
    Ceci fonctionne.

    Mais lorsque je veux afficher l'erreur sur une autre page, cela ne fonctionne pas.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(!isset($_SESSION["username"]))
      {
        $_SESSION["erreur"] = "Vous devez être connecté afin de voir un événement précis";
        header('location: login.php');
      }
    (Avec bien sur "<?php include 'includes/infos.php'; ?>" sur la page login.php)

    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php session_start(); ?>
    Dernière modification par sabotage ; 02/03/2016 à 10h16.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Non, ils sont bien includes a chaque page :S

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as mis ton include() après ton utilisation de $_SESSION.
    Le session_start() doit non seulement evidemment être avant l'utilisation de la session mais avant tout envoi vers le navigateur (donc avant le <body> par exemple).
    Ce genre de problème provoque une erreur PHP, veille à bien afficher ou contrôler les erreurs PHP quand tu developpes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Je ne vois pas ce que tu veux dire.
    Le session_start(); est tout en haut de chaque pages avant le DOCTYPE HTML
    Les erreurs sont toutes activés en mode développement

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux décrire plus precisement ton problème alors ?
    Ou est l'affichage de l'erreur dans login.php ?
    Sachant dans login.php tu nous montres du code supprimer $_SESSION['erreur'].
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Invité
    Invité(e)
    Par défaut
    bonjour,
    on s'est mal compris : session_start() (A LIRE !)

    session_start — Démarre une nouvelle session ou reprend une session existante
    Il faut donc mettre à chaque début de page* :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php session_start(); ?>

    * un fichier en include(...) ou require(...) est considéré comme faisant partie intégrante de la page.

    Donc, quand on est pas sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if( session_id()=='' ){ session_start(); } ?>

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Dans login.php l'inclusion de infos.php (qui affiche les messages si $_SESSION['erreur'] existe)ce fais ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <body class="hold-transition login-page">
        <div class="login-box">
          <!-- Erreurs/Succes --> 
          <?php include 'includes/infos.php' ?>
          <div class="login-logo">
            <a href="index.php"><b>Nom</b> LOGO</a>
          </div><!-- /.login-logo -->
    ....
    ....
    Dans infos.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
    <?php if( session_id()=='' ){ session_start(); }
    if(!empty($_SESSION['erreur'])){ ?>
     
    	<div class="alert alert-danger alert-dismissable">
    	  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
    	  <h4><i class="icon fa fa-ban"></i> ERREUR !</h4>
    	    <?php echo $_SESSION['erreur'] ?>
    	</div>
     
    <?php }
    if(!empty($_SESSION['succes'])){ ?>
     
    	<div class="alert alert-success alert-dismissable">
    	  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
    	  <h4><i class="icon fa fa-ban"></i> SUCCES !</h4>
    	    <?php echo $_SESSION['succes'] ?>
    	</div>
     
    <?php }
    	unset($_SESSION['succes'], $_SESSION['erreur']);
    ?>
    Dans le fichier verify.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        if(isset($_SESSION["username"])){
     
        } else {
          $_SESSION['erreur'] = "Vous devez être connecté afin d'ajouter un événement a votre compte";
          header('location: login.php');
        }
    Le problème est que si je fais un header pour rediriger l'utilisateur, le message ne s'affiche pas sur cette page (login.php).
    En revanche, si je ne fais pas de header, le message s'affichera bien sur la page actuel (verify.php)

    Je ne vois pas ce que je peux ajouter d'autre.
    Merci encore


    DE PLUS :
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php 
      session_start();
    var_dump($_SESSION);
    sur la page redirigé (login.php) var_dump me renvoi un tableau vide.
    alors que le message a bien été envoyé juste avant le header dans verify.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          $_SESSION['erreur'] = "Vous devez être connecté afin d'ajouter un événement a votre compte";
          header('location: login.php');

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Résolu !
    Il faut ajouter
    avant la redirection sinon la session se ferme apparemment.
    Source : http://php.net/manual/fr/session.exa...sic.php#109981

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur sur variable de session
    Par Kazumi dans le forum Langage
    Réponses: 7
    Dernier message: 31/05/2013, 15h37
  2. ERREUR variable session contenant un objet
    Par hammag dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2009, 17h15
  3. [MySQL] Sauvegarde via variable de session lors d'un select.
    Par sdgarf dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/06/2008, 12h01
  4. transfert de tableau via variable de session
    Par sbitsch dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2007, 15h54
  5. recuperer champs texte dans variable session via javascript
    Par richton95 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/03/2006, 14h17

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