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 avec les sessions


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 158
    Par défaut Problème avec les sessions
    mes sessions ne fonctionnent pas ! voici mon code
    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
    45
    46
    47
     
    function connect()
    {
      $connexion = odbc_connect("conference","Mary","") or die;
      return $connexion;
    };
     
     
    connect();
     
    $login = trim($_POST['user']);
    $pass = trim($_POST['mdp']);
     
    if (!empty($login) && !empty($pass)) 
    {
     
     $req2 = " select count(nom) as nbre  from lecteur where nom='".$login."' and mdp='".$pass."'";
     $connexion = connect();
     $result2 = odbc_do($connexion,$req2);
     $ligne = odbc_fetch_array($result2);
     
     
    	if ($ligne ['nbre'] == 1) 
    	{
    	$req = " select id, nom , prenom  from correspondant where nom='".$login."' and mdp='".$pass."'";
    	$result = odbc_do($connexion,$req2);
    	$tablo = odbc_fetch_array($result);
     
     
    	session_start();
         $_SESSION['id'] = $tablo['id'];
         $_SESSION['nom'] = $tablo['nom'];
    	 $_SESSION['prenom'] = $tablo['prenom'];
     
     
       require('demarage.php'); //et on vous envoie a la page " principale"
    	}
    		else 
    		{
    		require('connexionfaux.php');  
    		}
    }
    else
    		{
    		require('connexionfaux.php'); 
    		};
     odbc_close($connexion);
    ça m'ouvre ma page demarage .php:
    mais avec ça en haut :

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1-8\www\conference\senregistrer.php:3) in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 30

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\conference\senregistrer.php:3) in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 30

    Notice: Undefined index: id in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 31

    Notice: Undefined index: nom in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 32

    Notice: Undefined index: prenom in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 33

    Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\conference\demarage.php on line 2


    MERCI A TOUS

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Eu en generale on met le session_start() tout en haut de la page pour eviter ce genre de soucis...

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par cerede2000
    Eu en generale on met le session_start() tout en haut de la page pour eviter ce genre de soucis...
    Je dirais même plus : il faut mettre le session_start() avant tout autre code dans la page.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par Celira
    Je dirais même plus : il faut mettre le session_start() avant tout autre code dans la page.
    Pour être exact : ce n'est pas une obligation tant que rien n'est envoyé au client et qu'on ne cherche pas à utiliser les sessions avant, nous pouvons n'y faire appel qu'au dernier moment. Je pourrais très bien la démarrer en fin de script. De plus, ce raisonnement n'est pas valable si on place des objets dans la session car leurs déclarations doivent ensuite apparaître avant l'appel à session_start.

    Il faut trouver ce qui est envoyé au navigateur avant : un BOM, l'envoi d'un warning, un espace ou un saut de ligne avant les balises PHP, un echo, autres ...

    De plus, les clés correspondant à $tablo['id'], $tablo['nom'] et $tablo['prenom'] ne sont pas définies donc vous avez une autre correction à apporter (mais ça se produit après donc ce n'est pas l'origine des warnings liés aux sessions).

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    D'ou mon "En generale"
    Par contre je ne comprend pas ceci:
    De plus, ce raisonnement n'est pas valable si on place des objets dans la session car leurs déclarations doivent ensuite apparaître avant l'appel à session_start.
    Pour placer des objets?
    Comme quoi?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par cerede2000
    Comme quoi?
    Ce qu'on veut

    Citation Envoyé par cerede2000
    Pour placer des objets?
    Ben, oui, exemple :
    Code utilisateur.class.php : 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
    class Utilisateur {
        var $identifiant;
        var $login;
     
        function Utilisateur($id, $login) {
            $this->identifiant = $id;
            $this->login = $login;
        }
     
        function getLogin() {
            return $this->login;
        }
     
        function getIdentifiant() {
            return $this->identifiant;
        }
    }
    Enregistrement dans la session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session_start();
    require_once('utilisateur.class.php'); // Peut être effectué avant comme après session_start()
     
    $_SESSION['util'] = new Utilisateur(1, 'toto');
    Et, enfin utilisation des données de la session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    require_once('utilisateur.class.php'); // Déclaration impérativement avant session_start()
    session_start();
     
    if (isset($_SESSION['util'])) {
        echo 'Bonjour ' . $_SESSION['util']->getLogin();
    }
    Ai-je répondu à vos questions ?

Discussions similaires

  1. [Cookies] Problème avec les sessions PHP !!!
    Par boukay dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2006, 18h32
  2. Problème avec les sessions!!!
    Par frutix dans le forum Langage
    Réponses: 2
    Dernier message: 20/01/2006, 12h35
  3. problème avec les sessions
    Par DiverSIG dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2005, 12h01
  4. Problèmes avec les Sessions
    Par alexthomas dans le forum Langage
    Réponses: 5
    Dernier message: 20/11/2005, 22h53
  5. Problème avec les sessions
    Par philippef dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 16h19

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