Pb session php

Résolu
Bonjour,

je voudrais récupérer une variable session sur une autre page:

code qui teste mon login et le mot de passe membre:

<? session_start();?>

<?
include ('./connect/connection.php');
?>

<?

$email=$_POST['email']; //récup sur formulaire
$password=$_POST['password'];

if (empty($email) or empty($password)) //test si champs vides
{
?>
<script language="javascript">document.location.href='?rub=9'</script>
<?

}
else //champs rempli
{
$sql = "SELECT * FROM clients where mail_client='$email'and mdp_client=md5(md5('$password'))";
$req=mysql_query($sql);
$data= mysql_num_rows($req);

if ($data==0) // si mot de passe faux
{
?>
<script language="javascript">document.location.href='?rub=9'</script>

<?
}
else //sinon mot de passe vrai
{
$_SESSION['id_client']=$data['id_client'];
$_SESSION['mail_client']=$data['mail_client'];
$_SESSION['nom_client']=$data['nom_client'];
?>
<script language="javascript">document.location.href='./client.php'</script>
<?
}

}

mysql_close();
?>

dans ma page client.php je voudrais voir le mail du client mais ca ne fonctionne pas une idée???

code client.php

<? session_start();?>

<? echo $_SESSION['mail_client'];?>
Configuration: Windows XP Internet Explorer 6.0

20 réponses

  1. Contributeur
    bonjour :)

    $_SESSION['mail_client'] est défini pour les sessions utilisateurs, donc tant que tu n est pas connecté, cette variable n existe pas... pour y remédier :

    if isset($_SESSION['mail_client']){ // si une session existe => si un utilisateur connu est connecté ;)

    <? echo $_SESSION['mail_client'];?>
    <? echo $_SESSION['id_client'];?>

    }else{
    echo "Vous n'êtes pas encore logué";
    1. lol
      dis moi tu as l'air de t'y connaitre

      g une petitte question pour toi sur ma page client
      il me cette erreur kan j 'ouvre une nouvelle page

      Notice: Undefined index: mail_client in c:\program files\easyphp1-8\www\tabacpresseweb\site\client.php on line 3

      Notice: Undefined index: id_client in c:\program files\easyphp1-8\www\tabacpresseweb\site\client.php on line 4

      code page client

      <? session_start();?>
      <? echo session_id();?>
      <? echo $_SESSION['mail_client'];?>
      <? echo $_SESSION['id_client'];?>

      3 et 4 c'est les deux dernieres et kan je rafraichis la page et ke je rentre de nouvo les log
      sans pb g mes infos sur ma page client une idée??

      merci
      1. pour ceux qui regarderont cette solution j'avais fait une erreur
        voilà c mieux si ca peut aider

        et metter les balises comme il a dit le monsieur bien ke ca va changé grand chose
        mais bon c conseiller a +++

        <?
        session_start();
        include ('./connect/connection.php');
        ?>
        <?
        $email=$_POST['email'];
        $password=$_POST['password'];
        if (empty($email) or empty($password))
        {
        ?>
        <script language="javascript">document.location.href='?rub=9'</script><?
        }
        else
        {
        $sql = "SELECT * FROM clients where mail_client='$email'and mdp_client=md5(md5('$password'))";
        $req=mysql_query($sql);
        $data= mysql_num_rows($req);

        if ($data==0)
        {
        ?>
        <script language="javascript">document.location.href='?rub=9'</script><?
        }
        else {
        $data = mysql_fetch_assoc($req);

        $_SESSION['id_client']= $data['id_client'];
        $_SESSION['mail_client']= $data['mail_client'];
        $_SESSION['nom_client']= $data['nom_client'];

        ?>
        <script language="javascript">document.location.href='./client.php'</script>
        <?
        }
        }
        mysql_close();
        ?>
        1. Contributeur
          Bonjour :)

          OK.. juste un ptit conseil : une balise pour php c'est '<?php' et non juste '<?'.. pour fermer l'est bon, y a juste à mettre '?>'.
          1. bonjour
            voilà j'ai fait ca et ca marche sur ma page client s'affiche bien les infos si je fais un echo
            voilà merrci pour l'aide ^^

            <?
            session_start();
            include ('./connect/connection.php');
            ?>
            <?
            $email=$_POST['email'];
            $password=$_POST['password'];
            if (empty($email) or empty($password))
            {
            ?>
            <script language="javascript">document.location.href='?rub=9'</script><?
            }
            else
            {
            $sql = "SELECT * FROM clients where mail_client='$email'and mdp_client=md5(md5('$password'))";
            $req=mysql_query($sql);
            $data= mysql_num_rows($req);

            if ($data==0)
            {
            ?>
            <script language="javascript">document.location.href='?rub=9'</script><?
            }
            else {
            $data = mysql_fetch_assoc($req);

            session_start();
            $_SESSION['id_client']= $data['id_client'];
            $_SESSION['mail_client']= $data['mail_client'];
            $_SESSION['nom_client']= $data['nom_client'];

            ?>
            <script language="javascript">document.location.href='./client.php'</script>
            <?
            }
            }
            mysql_close();
            ?>
            1. un truc de fous toujours rien il me signale une erreur
              sur la ligne 1 donc session start
              et sur le header

              comprends plus????

              fodrait 'il ke je déclare les variables sessions vides apres session start comme c la premiere ke j'utilise dans mes pages?

              merci
              1. <? session_start();?>
                <?
                include ('./connect/connection.php');
                ?>
                <?
                $email=$_POST['email'];
                $password=$_POST['password'];
                if (empty($email) or empty($password))
                {
                header("Location: erreur.php");
                exit();
                }
                else
                {
                $sql = "SELECT * FROM clients where mail_client='$email'and mdp_client=md5(md5('$password'))";
                $req=mysql_query($sql);
                $data= mysql_num_rows($req);

                if ($data==0)
                {

                header("Location: erreur.php");
                exit();
                }
                else
                {
                $_SESSION['id_client']=$data['id_client'];
                $_SESSION['mail_client']=$data['mail_client'];
                $_SESSION['nom_client']=$data['nom_client'];
                header("Location: client.php");
                exit();
                }
                }
                mysql_close();
                ?>
                1. j'ai fait ca

                  <? session_start();?>
                  <?
                  include ('./connect/connection.php');
                  ?>
                  <?
                  $email=$_POST['email'];
                  $password=$_POST['password'];
                  if (empty($email) or empty($password))
                  {
                  header("location:erreur.php");
                  exit();
                  }
                  else
                  {
                  $sql = "SELECT * FROM clients where mail_client='$email'and mdp_client=md5(md5('$password'))";
                  $req=mysql_query($sql);
                  $data= mysql_num_rows($req);

                  if ($data==0)
                  {
                  header("location:erreur.php");
                  exit();
                  }
                  else
                  {
                  $_SESSION['id_client']=$data['id_client'];
                  $_SESSION['mail_client']=$data['mail_client'];
                  $_SESSION['nom_client']=$data['nom_client'];
                  header("location:client.php");
                  exit();
                  }
                  }
                  mysql_close();
                  ?>

                  et la il me signale une erreur a la ligne 10 qui correspond au header
                  j'ai fait une faute????
                  1. ok mais pourtant je l'ai déjà fait ailleurs ca fonctionner bien
                    ok v modifier ca

                    te remercie en tout cas
                    c gentil de ta part
                    1. mais c'est normal qu'il mette une erreur, t'as tjs du code js au milieu du php !
                      il tinterpretera tjs le code javascript, on peut pas en inclure au milieu du php
                      1. jai remplacé par header
                        comme ceci
                        <? session_start();?>
                        <?
                        include ('./connect/connection.php');
                        ?>
                        <?
                        $email=$_POST['email'];
                        $password=$_POST['password'];
                        if (empty($email) or empty($password))
                        {
                        ?>
                        <script language="javascript">document.location.href='?rub=9'</script>
                        <?
                        }
                        else
                        {
                        $sql = "SELECT * FROM clients where mail_client='$email'and mdp_client=md5(md5('$password'))";
                        $req=mysql_query($sql);
                        $data= mysql_num_rows($req);

                        if ($data==0)
                        {
                        ?>
                        <script language="javascript">document.location.href='?rub=9'</script>
                        <?
                        }
                        else
                        {
                        $_SESSION['id_client']=$data['id_client'];
                        $_SESSION['mail_client']=$data['mail_client'];
                        $_SESSION['nom_client']=$data['nom_client'];
                        header("location:./client.php");
                        exit();
                        }
                        }
                        mysql_close();
                        ?>

                        mais rien a faire il met une erreur une autre idée stp
                        merci d'avance
                        1. je viens de tester c'est le mm

                          quand je recup l' id session kan les champs sont vides c 2ebf5283bedf205931273af45500c11e
                          quand je recup l'id session kan les champs sont remplis et juste
                          il me donne 2ebf5283bedf205931273af45500c11e sur client.php

                          une idée stp?
                          1. Heu
                            au fait pourquoi tu passes par du javascript pour faire une redirection ?
                            pourquoi pas un simple header location en php ?
                            parce que ton code js dans le php comme ca, ca marche pas ...
                            1. re merci pour ta réponse
                              pourtant c'est la première session ke je démarre

                              dans client.php il m'affiche bien l'id session
                              mais comment vérifier puisque l'autre page est juste un test qui me renvoie sur cette page client.php

                              suis perdu lol
                              une idée pour m'aider?
                              1. pour visualiser le contenu de tes session il y a un truc très gentil :

                                echo '<pre>';
                                print_r($_SESSION);
                                echo '</pre>';

                                bien visualiser tes session t'aidrea a résoudre tes problèmes :)
                                1. Essayes de voir si déjà ils ont les mêmes id de session
                                  tu fais un echo session_id(); juste après tes session_start
                                  s'ils sont différents, c'est normal que ca n'affiche rien