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, 15h47   #1
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
Par défaut Impossible de créer des sessions

Bonjour à tous, je me permets de vous demander de l'aide car après avoir consulté les FAQ et autres je ne trouve pas la solution à mon problème...

J'ai une page de connexion ou l'utilisateur rentre login+mdp, il est ensuite dirigé vers la page login.php qui vérifie ses identifiants et normalement créé la session mais c'est là que ce pose le problème...

J'obtiens ces erreurs pourtant je n'envoie pas d'infos avant et je n'ai pas d'espace avant <?php :

Citation:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1-8\www\blog\admin\login.php:1) in c:\program files\easyphp1-8\www\blog\admin\login.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\blog\admin\login.php:1) in c:\program files\easyphp1-8\www\blog\admin\login.php on line 2
Voici mon fichier login.php

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
58
59
60
61
62
63
64
65
66
67
68
<?php
session_start();
 
require("../page/fonctions.php");
 
//Appel de la fonction connexion 
connexion();
 
// Récupération du login
$login  = $_POST['login'];
$login  =addslashes($login);
 
//Recupération du mot de passe
$passwd= $_POST['passwd'];
$passwd=addslashes($passwd);
 
 
if ($login=="") {
	echo "Vous n'avez pas saisi de login.<br /><a href='./index.php'>Retour à la page précédente</a>";
 
}
else if ($passwd=="") {
	echo "Vous n'avez pas saisi de mot de passe.<br /><a href='./index.php'>Retour à la page précédente</a>";
 
}
 
else {
	$mdp="";
	$type="";
 
	$listeU= mysql_query ("SELECT * from user WHERE LoginUser='$login';",connexion());
	$nbU=mysql_num_rows($listeU);
 
	//Verification que l'utilisateur soit connu
	if ($nbU==0) {
		echo "L'utilisateur n'existe pas.<br /><a href='index.html'>Retour</a>";
	}
 
	else {
		while ($ad=mysql_fetch_object($listeU))
			{
			$mdp=$ad->MdpUser;
			$stat=$ad->Admin;
			}
 
		if ($mdp==md5($passwd)) {
 
				//Creation de la session
				$_SESSION["login"] = $login;
				$_SESSION["passwd"] = $mdp;
				$_SESSION["stat"] = $stat;
 
				if ($stat==0)
				{	
					echo "<META http-equiv=\"refresh\" content=\"1.5; URL=redacteur.php\">";
				}
				else
				{
					echo "<META http-equiv=\"refresh\" content=\"1.5; URL=admin.php\">";
				}
		}
		else {
			//Mot de passe incorrect
			echo "Mauvais mot de passe<br /><a href='index.php'>Retour à la page précédente</a>";
		}
	}
}
?>
Merci de m'aider
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 16h10   #2
Invité de passage
 
Inscription : octobre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 7
Points : 2
Points : 2
Bonjour,
si tu es chez free comme hébergeur : il te faut créer un répertoire session/ ou sessions/ (je ne sais plus) à la racine de ton site...

Bonne soirée
Philinfo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 16h16   #3
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
Citation:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1-8\www\blog\admin\login.php:1) in c:\program files\easyphp1-8\www\blog\admin\login.php on line 2
==> il n'est pas chez free donc le problème ne vient pas de la.

As-tu modifié ton php.ini ? il y a surement quelquechose sur le stockage des sessions regarde.
SOAD08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 16h21   #4
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
Merci de vos réponses, en effet je ne suis pas chez Free, et je n'ai jamais touché php.ini..

Voici la partie sessions du phpinfo() :

session
Session Support enabled
Registered save handlers files user

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path C:/Program Files/EasyPHP1-8\tmp\ C:/Program Files/EasyPHP1-8\tmp\
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 17h42   #5
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
essaye avec

Code :
session.use_cookies=off
dans ton php.ini
SOAD08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2006, 17h51   #6
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
J'obtiens plus qu'un seul message d'erreur en suivant ton conseil, mais j'ai toujours :

Citation:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\blog\admin\login.php:1) in c:\program files\easyphp1-8\www\blog\admin\login.php on line 2
Pour info, je développe en local sous easyphp 1.8
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 10h34   #7
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
Bon j'ai résolu une partie de mon problème, mais j'ai toujours un problème avec mes sessions et cela ne vient pas de mon fichier de configuration.

J'ai un fichier index.php :

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
<?
//En-tête
echo "<html>"
	."<head>"
	."<title>.:Partie Administration:.</title>"
	."<link rel=\"stylesheet\" type=\"text/css\" href=\"styleadmin.css\">"
	."</head><body>";
 
echo "<form method=\"POST\" action=\"connect.php\">
	<div style=\"text-align:center\">
  	<table cellpadding=\"1px\" cellspacing=\"1px\" style=\"width:30%;border: 1px #006699 solid;background-color:#FFFF99;margin-left:auto;margin-right:auto;text-align:center \">
	<td align=\"center\" class=\"haut\" colspan=2><b>Connexion</b></td></tr>
	<tr><td class=\"media\"><br />Pseudo</td>
	<td class=\"media\"><br /><input type=\"text\" name=\"pseudo\" size=\"20\"></td></tr>
	<tr><td class=\"media\" valign=\"top\"><br />Mot de passe</td>
	<td class=\"media\" valign=\"top\">
	<br /><input type=\"password\" name=\"pass\" size=\"20\"></td></tr><br />
    <tr><td colspan=2 align=center class=\"media\">
	<br/><input type=\"submit\" name='submit' value=\"Envoyer\"></td></tr>
	</table></div>
	</form><div style=\"text-align:center\"><a href=\"../index.php\">Retour au blog</a></div>";
 
//Fin de la page
echo "</body></html>";
?>
Ensuite j'ai un fichier qui vérifie la connexion :

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
<?
session_start();
 
include("page/fonctionsadmin.php");
 
connexion();
 
//Recuperation des variables postées
$pseudo=$_POST["pseudo"];
$pass=$_POST["pass"];
 
$listeU= mysql_query ("SELECT * from user WHERE LoginUser='$pseudo';",connexion());
$nbU=mysql_num_rows($listeU);
 
//cryptage du mot de pass
$pass=md5($pass);
 
if ($nbU==0) {
		echo "L'utilisateur n'existe pas.<br /><a href='index.html'>Retour</a>";
	}
 
	else {
		while ($ad=mysql_fetch_object($listeU))
			{
			$mdp=$ad->MdpUser;
			$stat=$ad->Admin;
			}
 
		if ($mdp==$pass) {
 
				//Creation de la session
				$_SESSION["login"] = $pseudo;
				$_SESSION["passwd"] = $pass;
				$_SESSION["registered"]= "ok";
 
				echo "Vous êtes connecté en tant que"
				. $_SESSION["login"];
 
				if ($stat==0)
				{	
					echo "<META http-equiv=\"refresh\" content=\"1.5; URL=redacteur.php\">";
				}
				else
				{
					echo "<META http-equiv=\"refresh\" content=\"1.5; URL=admin.php\">";
				}
		}
		else {
			//Mot de passe incorrect
			echo "Mauvais mot de passe<br /><a href='index.php'>Retour à la page précédente</a>";
		}
	}
//Fin de la page
echo "</body></html>";
?>
Ici les sessions se créent et j'affiche même le contenu de la variable $session pseudo juste avant la redirection.

Le problème se situe au niveau des pages admin.php et redacteur.php qui ne peuvent prendre en compte les session_start().

Code d'admin.php :

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
 
session_start();
//Si il n'y a pas de session on redirige sinon on affiche le menu
if(!session_is_registered("registered"))
{
		//En-tête
		echo "<html>"
			."<head>"
			."<title>Admin</title>"
			."<link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\">"
			."</head><body>";
		echo "<br><center><font style=\"font-family:Arial,sans-serif;font-size:12\">Connectez-vous afin d'accéder à cette partie <a href=\"index.php\"><br><br>Réessayer</a></font>";
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<title>Admin</title>
<link rel="stylesheet" type="text/css" href="styleadmin.css" />
</head>
 
<body>
<div id="top_nav">
<p id="titre2">Administration générale
<br /><br />
</p>
 
 
<div id="container">
	<div id="left_col">
	<a href="./admin.php?page=accueil">Accueil</a><br />
	<br />
	</div>
 
	<div id="left_col1">
	<a href="./admin.php?page=ajoutuser">Ajouter un utilisateur</a><br />
	<br />
	<a href="admin.php?page=deleteuser">Supprimer un utilisateur</a><br />
	<br />
	</div>
 
	<div id="left_col2">
	<a href="admin.php?page=ajoutbillet">Ajouter un billet</a><br />
	<br />
	<a href="admin.php?page=modifbillet">Modifier un billet</a><br />
	<br />
	<a href="admin.php?page=deletebillet">Supprimer un billet</a>
	</div> 
 
	<div id="left_col3">
	<a href="admin.php?page=ajoutcateg">Ajouter une catégorie</a><br />
	<br />
	<a href="admin.php?page=modifcateg">Modifier une catégorie</a><br />
	<br />
	<a href="admin.php?page=deletecateg">Supprimer une catégorie</a>
	</div>
 
	<div id="left_col4">
	<a href="admin.php?page=deletecom">Supprimer un commentaire</a><br />
	</div>
 
	<div id="page_content">
		<?php
 
		//Inclusion des autres pages
		if (isset($_GET['page']))
		{
			// On affiche une phrase résumant les infos sur l'utilisateur courant
			$p=$_GET['page'];
			require("page/$p.php");
		}
		else
		{
			// On affiche une phrase résumant les infos sur l'utilisateur courant
			$p="accueil";
			require("page/$p.php");
		}
		?>
	</div>
</div>
 
 
</body>
 
</html>
<?php
}
?>
Je dois avoir un problème dans mon code qui m'empeche de faire des session_start mais ou?

Le message d'erreur est :

Citation:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\blog\admin\admin.php:1) in c:\program files\easyphp1-8\www\blog\admin\admin.php on line 2
Merci de m'aider
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 11h37   #8
Membre habitué
 
Avatar de Akramweb
 
Inscription : avril 2005
Messages : 168
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 168
Points : 125
Points : 125
Envoyer un message via MSN à Akramweb
bonjour je pense que tu dois aller sur le fichier php.ini qui se trouve :

Program Files ==> EasyPHP1-7 ==> apache ==> php.ini

et de mettre

session.cache_limiter = nocache

et j'espere que sa marchera

tiens moi au courant
Akramweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 11h42   #9
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
la valeur que tu me proposes pour session.cache-limiter est déjà à nocache.

Le pire c'est que j'ai un autre site avec des sessions qui fonctionne très bien avec Easy Php. Donc à mon avis j'ai une erreur dans mon code.. merci de ton aide
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 11h46   #10
Membre habitué
 
Avatar de Akramweb
 
Inscription : avril 2005
Messages : 168
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 168
Points : 125
Points : 125
Envoyer un message via MSN à Akramweb
si tu vx faire une petite viste sue ce lien:
http://php.developpez.com/faq/?page=...s_already_sent
peut etre qu'il t'aidera
Akramweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 11h57   #11
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
merci pour le lien, mais je comprend toujours pas pourquoi j'ai ce problème, c'est trop bizarre
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 12h43   #12
Membre habitué
 
Avatar de Akramweb
 
Inscription : avril 2005
Messages : 168
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 168
Points : 125
Points : 125
Envoyer un message via MSN à Akramweb
est ce que je px recuperer la redacteur.php
Akramweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 12h49   #13
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
Voilà la partie, j'obtiens la même erreur qu'avec un admin si l'utilisateur loggé est un rédacteur

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
<?
session_start();
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<title>Admin</title>
<link rel="stylesheet" type="text/css" href="styleadmin.css" />
</head>
 
<body>
 
<div id="top_nav">
<p id="titre2">Administration
pour rédacteurs<br /><br />
</p>
 
 
<div id="container">
	<div id="left_col">
	<a href="redacteur.php?page=ajoutbillet">Ajouter un billet</a><br />
	<br />
	<a href="redacteur.php?page=modifbillet">Modifier un billet</a><br />
	<br />
	<a href="redacteur.php?page=deletebillet">Supprimer un billet</a>
	</div> 
 
	<div id="page_content">
	<?php
 
		//Inclusion des autres pages
		if (isset($_GET['page']))
		{
			$p=$_GET['page'];
			require("page/$p.php");
		}
		else
		{
			$p="accueil";
			require("page/$p.php");
		}
	?>
	</div>
</div>
 
 
</body>
 
</html>
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 13h01   #14
Membre habitué
 
Avatar de Akramweb
 
Inscription : avril 2005
Messages : 168
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 168
Points : 125
Points : 125
Envoyer un message via MSN à Akramweb
sincerement le code marche a merveille je pense que t'as un probleme de php.ini donc si tu veux le modifier par celui-ci.
copier le contenu et coller le dans php.ini
Fichiers attachés
Type de fichier : txt php.txt (39,7 Ko, 14 affichages)
Akramweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2006, 13h14   #15
Membre habitué
 
Inscription : novembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 189
Points : 145
Points : 145
Alors là je te dis un grand MERCI !!!

Ca marche enfin ! Merci de ton aide, ça me fait très plaisir...
Ben42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web