Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/11/2006, 16h46   #1
Futur Membre du Club
 
Inscription : mai 2005
Messages : 129
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 129
Points : 15
Points : 15
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 :

Citation:
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
arnogef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 16h51   #2
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if(!empty($cookie)){
//Ton envoi de cookie
}
 
html
........
.....
echo
......
.....
 
$cookie = 1;
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 17h52   #3
Futur Membre du Club
 
Inscription : mai 2005
Messages : 129
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 129
Points : 15
Points : 15
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..
arnogef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 18h24   #4
Membre habitué
 
Avatar de SOAD08
 
Inscription : juillet 2004
Messages : 101
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juillet 2004
Messages : 101
Points : 104
Points : 104
Envoyer un message via MSN à SOAD08 Envoyer un message via Skype™ à SOAD08
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..)
SOAD08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 20h16   #5
Futur Membre du Club
 
Inscription : mai 2005
Messages : 129
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 129
Points : 15
Points : 15
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 :
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>
arnogef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 21h32   #6
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
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.
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 21h35   #7
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
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.
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 21h35   #8
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
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
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 21h51   #9
Futur Membre du Club
 
Inscription : mai 2005
Messages : 129
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 129
Points : 15
Points : 15
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...
arnogef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2006, 11h46   #10
Futur Membre du Club
 
Inscription : mai 2005
Messages : 129
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 129
Points : 15
Points : 15
pas d'idées sur l'origine du probleme?..
arnogef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2006, 11h52   #11
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
L'erreur est dans la page inscription.php, celle que tu nous as montrée c'est une autre ?
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h07.


 
 
 
 
Partenaires

Hébergement Web