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 :

[Cookies] Erreur d'ouverture de sessions


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut [Cookies] Erreur d'ouverture de sessions
    Bonjour, dans mon script d'espace membre, quand je clique sur inscription,
    j'ai les message d'erreurs suivants :

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at d:\test\inscription.php on line 22

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at d:\test\inscription.php:1) in d:\test\inscription.php on line 22

    Warning: Cannot modify header information - headers already sent by (output started at d:\test\inscription.php:1) in d:\test\inscription.phpon line 27
    je voulais savoir a quoi ca pouvait etre du et si c'était grave..
    Merci pour votre aide

  2. #2
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Salut,

    Ces messages indiquent que tu as déjà envoyé autre chose avant d'effectuer l'envoi de cookie, en gros soit des header, soit un autre session_start.

    De plus tu as du surement faire des echo ou du html entre les premiers envois et ceux-ci.

    Pour y remédié tu dois soit:

    - te débrouiller pour ne pas avoir d'envoi de cookie à cette endroit là
    - Supprimer les echo et le html entre les deux envois.

    Un conseil, les if peuvent te servire, en mettant par exemple une condition en haut de page qui s'active lorsqu'un variable de milieu de page est activée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(!empty($cookie)){
    //Ton envoi de cookie
    }
     
    html
    ........
    .....
    echo
    ......
    .....
     
    $cookie = 1;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    salut
    je me suis renseigné sur internet car apparemment c'est une erreur fréquente
    mais meme en mettant le session_start() tout en haut du code :

    <?php
    session_start();
    etc..

    et en faisant gaffe aux espaces, j'ai toujours le meme probleme : il plante a la ligne 2 en me disant que j'ai déjà envoyé qqch à la ligne 1...

    je me demande si cela n'est pas du au fait que je travaille en local..

  4. #4
    Membre régulier
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Points : 108
    Points
    108
    Par défaut
    la page générant cette erreur est-elle inclue dans une autre, ou se lance-t-elle de manière autonomoe ? car dans le cas d'un page inclue, le session_start() doit etre dans la page "mère" si celle-ci contient de l'HTML (ou plus globalement si elle envoie quelquechose au navigateur : texte, header, cookie, etc..)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    en effet elle est appelée a partir d'un lien sur une autre page
    ci-dessous le code (en gras et en rouge l'appel a la page qui bug des le départ). Merci pour votre aide:

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     <?php
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
        if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
    
            $base = mysql_connect ('localhost', 'root', ''); 
            mysql_select_db ('testsql', $base);
    
            $sql = 'SELECT id FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';
            $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            $nb = mysql_num_rows($req);
    
            if ($nb == 1) {
                $data = mysql_fetch_array($req);
    
                session_start();
                $_SESSION['login'] = $_POST['login'];
                // on enregistre en plus l'id du membre dans une variable de session
                $_SESSION['id'] = $data['id'];
    
                mysql_free_result($req);
                mysql_close();
    
                header('Location: membre.php');
                exit();
            }
            elseif ($nb == 0) {
                $erreur = 'Compte non reconnu.';
            }
            else {
                $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
            }
            mysql_free_result($req);
            mysql_close();
        }
        else {
            $erreur = 'Au moins un des champs est vide.';
        }
    }
    ?>
    <html>
    <head>
    <title>Accueil</title>
    </head>
    
    <body>
    Connexion à l'espace membre :<br />
    <form action="index.php" method="post">
    Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>"><br />
    <input type="submit" name="connexion" value="Connexion">
    </form>
     <a href="inscription.php">Vous inscrire</a>
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?>
    </body>
    </html>

  6. #6
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Désolé si je me trompe mais je ne vois pas d'include dans ta page. Tu as juste fait un hyperlien standard.

    Je vois pas ce qui peut planter dans ce code.

  7. #7
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Déjà il me semble reconnaitre ce code comme venant d'un tutoriel "Le php facile" ou quelque chose du genre.

    Et le header en plein milieu alors que ya eu du html avant, c'est pas très bon.

    Je te conseil de revoir un peu ton code avant de te lancer dans le problème.

  8. #8
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut, je sais pas si t'as fait un copier/coller tel quel mais y a un caractère avant la balise <?php qui pourrait faire planter.
    Bye

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    tout a fait il s'agit du tutoriel du php facile sur la messagerie interne
    j'essaye de l'adapter pr créer la messagerie de mon site
    sinon, pour Djakisback, le caractere avant la balise <?php n'est pas dans le code, c'est en faisant le copier coller sur le forum que je l'ai mis.
    sinon moi non plus je vois pas pourquoi ca plante etant donné qu'en effet, c'est un hyperlien qui appelle la page...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    pas d'idées sur l'origine du probleme?..

  11. #11
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    L'erreur est dans la page inscription.php, celle que tu nous as montrée c'est une autre ?

Discussions similaires

  1. Erreur ouverture de session windows
    Par zulot dans le forum Windows XP
    Réponses: 4
    Dernier message: 04/07/2009, 00h09
  2. [Cookies] erreur Cannot send session cookie
    Par dubitoph dans le forum Langage
    Réponses: 10
    Dernier message: 05/01/2009, 15h33
  3. Erreur d'ouverture de session "headers already sent"
    Par sibile dans le forum Langage
    Réponses: 7
    Dernier message: 19/08/2008, 19h22
  4. Réponses: 5
    Dernier message: 23/01/2007, 21h44
  5. [Cookies] Erreur lors de la création de Session ..
    Par Klimium dans le forum Langage
    Réponses: 6
    Dernier message: 07/10/2006, 15h40

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