Bonjour à tous, j'ai un petit problème concernant ma session.

J'ai une fonction qui fait une vérification lors d'une connexion afin de voir si l'email et le password sont les bons.
Je veux créer par la suite un espace personnel en fonction de la session que j'ai récupérer afficher les informations de la personne.
Mais je n'arrive pas a passer la session dans la requête.
Voici mon code :

Page pour la connexion et vérification de la session

<?php
require_once('Connexion.php');    

session_start();
class GetSession
{

public static function isLogged($redir = true)
 {
    if (empty($_SESSION'email']) && $redir ) {
             header('Location:../view/login.html.twig');
    }

        return !empty($_SESSION'email']);
 }

public static function checkLogin($arr)
{
    $connexion = Connexion::getInstance();
    if (empty($arr'email']) or empty($arr'password'])) 
            {
                      header('Location:../view/login.html.twig');
                    echo"connexion pas ok";die;

            }
    else{

        if(isset($_POST'connexion'])){
            $arr'email'] = addslashes(($_POST'email']));
            $arr'password'] = addslashes(md5($_POST'password']));
        }
        $sql=sprintf("SELECT * from ps_membre where email_membre='".$arr'email']."'and password='".$arr'password']."'");
        $verif = $connexion->prepare($sql);
        $verif->execute();
        $row_verif=$verif->fetch(PDO::FETCH_ASSOC);
        $utilisateur =$verif->rowCount($verif);
        $resp = array_shift($row_verif);

         if ($utilisateur) {

        $_SESSION'email'] = $row_verif'email_membre']."<br>";
        $_SESSION'password'] = $row_verif'password']."<br>"; 

                header("Location:../index.php"); // redirection si OK
    }
     else {
            echo"<br>mauvais identifiants";
            header("Location:../view/login.html.twig"); // redirection si utilisateur non reconnu
     }     

           return $row_verif;
    }            

        } // endfunction

}
if(count($_POST))
{
    GetSession::checkLogin($_POST);
}

Voici une autre page avec une fonction pour récupérer les informations en fonction de la session:

function fetchInfoMembre()
{
     $connexion = Connexion::getInstance();
    //echo $session = "sabiiii@gmail.com";
  /* $row_verif'email']=$_SESSION'email'];
    $email=$row_verif'email'];*/
    include_once'GetSession.php';
    ;
    echo $email = $_SESSION'email'];
    $sql = $connexion->prepare("SELECT * from ps_membre as pm LEFT JOIN ps_information as pi ON pm.id_membre = pi.id_membre WHERE pm.email_membre = ?");
    $sql->bindValue(1,$email,PDO::PARAM_STR);
    $sql->execute(array($email));
    echo "<pre>";print_r($sql);
    $select = $sql->fetchAll(PDO::FETCH_OBJ); //selectionne les membres en fonction de l'id
    echo "<pre>";print_r($select);
    return $select; 
    //echo $_SESSION'email'];die;
    //$_SESSION'email']=$session;
    //$email=$_SESSION'email'];

}

et ma vue

class Info
   {
 static function testSession()
       {
        $twig= LoadingView::loadTwigView();
        $twig->addGlobal('test',new Info());
        echo $twig->render('EspacePersonnel.html.twig', array(
            'testin'=> fetchInfoMembre(),
                ));
       }                 
   }
Info::testSession();

Dans mon deuxième bout de code, lorsque je fais mon print_r de $email, dans ma vue j'ai bien l'email récupérer de la session, mais pas les informations complémentaires.
mais lorsque mon email je le note en dur tout marche.

exemple avec $email = $_SESSION'email'] ===> http://puu.sh/b1NhL/8ece13536d.png
===> http://puu.sh/b1Nre/886f8b1afc.png

exemple avec $email écrit en dur ==> http://puu.sh/b1NmO/e79e825478.png
http://puu.sh/b1Nom/4a1e35790b.png

J'espère que vous pourrez m'aider, merci d'avance....

4 réponses


Hamaryuginh
Réponse acceptée

Une fois la connexion effectuée tu fais:

$_SESSION'email'] = $row_verif'email_membre']."<br>";

Par conséquent en session ton email vaudra:

ton.email@blabla.fr<br>

Et c'est ce <br> que tu ne ne pas quand tu fais un echo de ton email qui ne donne pas de résultats dans ta requête.
Du coup, faut virer ces <br>

Il m'est avis que tu devrais utiliser un framework tel Symfony, Laravel ou autre, sa te simplifierait grandement les choses.

Merci beaucoup, tu me sauve la vie, ça fait 2jours que je bloque dessus
et la c'est fait....
Tout ces bug de merde à cause d'un "<br>" de m****de.

Pour éviter ce genre de désagrément, tu devrais vraiment partir sur un principe de MVC.
Ainsi ta couche logique et ta couche affichage seraient séparées.

Mon projet entier est en MVC sauf pour les sessions ou j'ai du bidouiller un peu.
Mais le fait d'utiliser déjà un moteur de template est une incitation à utiliser le MVC.
Mais merci de ta remarque qui est juste