OVH Cloud OVH Cloud

Session_start

3 réponses
Avatar
Marc Stevenson
J'ai un problème bizarre avec session_start :


si index. php est :
------------------------
<?php
session_start();
?>
<HTML>
<HEAD>
</HEAD>
<BODY>
<A HREF="Do_login_valide.php">Lien</A>
</BODY>
</HTML>
-----------------------------


et si Do_login_valide.php est :
-----------------------------
<?php
session_start();
session_register('id_utilisateur');
?>
-----------------------------

alors ... j'obtiens :
-----------------------------
Warning: Cannot send session cache limiter - headers already sent (output
started at c:\program files\easyphp\www\intranet\do_login_valide.php:1) in
c:\program files\easyphp\www\intranet\do_login_valide.php on line 2
-----------------------------------

ET JE NE SAIS PAS POURQUOI
et ... c'est très agaçant.
Merci d'éclairer ma lanterne.

3 réponses

Avatar
julien palluel
"Marc Stevenson" wrote in message
news:bk9pg9$mdg$

alors ... j'obtiens :
-----------------------------
Warning: Cannot send session cache limiter - headers already sent (output
started at c:program fileseasyphpwwwintranetdo_login_valide.php:1) in
c:program fileseasyphpwwwintranetdo_login_valide.php on line 2
-----------------------------------


Essaye d'enlever le session_start(); dans Do_login_valide.php .

Avatar
nachix
Bonjour,
Il ne faut tout simplement aucun espace avant le début de la balise php.
Il y a une grande différence entre:
------------------------------------------------------
<?php
session_start();
session_register('id_utilisateur');
?>
------------------------------------------------------
et:
------------------------------------------------------
<?php
session_start();
session_register('id_utilisateur');
?>
------------------------------------------------------
Les espaces sont interprétés par le serveur apache et seulement après le
code php débute. Mais les espaces sont déjà envoyés au navigateur.
Hors, le début d'une session (session_start()) implique la création d'un
cookie sur le poste client, le cookie étant un header. Sans trop rentrer
dans la théorie, il ne faut aucun espace ou ligne vide ou texte avant un
session_start(), car le header ne pourra pas être créé.

D'ailleurs, le message est très explicite : les outputs (envoi de
données au poste client) ont débuté à la ligne 1 de Do_login_valide.php,
donc à la ligne 2 il ne peut pas créer les headers...

Cordialement,
nachix


J'ai un problème bizarre avec session_start :


si index. php est :
------------------------
<?php
session_start();
?>
<HTML>
<HEAD>
</HEAD>
<BODY>
<A HREF="Do_login_valide.php">Lien</A>
</BODY>
</HTML>
-----------------------------


et si Do_login_valide.php est :
-----------------------------
<?php
session_start();
session_register('id_utilisateur');
?>
-----------------------------

alors ... j'obtiens :
-----------------------------
Warning: Cannot send session cache limiter - headers already sent (output
started at c:program fileseasyphpwwwintranetdo_login_valide.php:1) in
c:program fileseasyphpwwwintranetdo_login_valide.php on line 2
-----------------------------------

ET JE NE SAIS PAS POURQUOI
et ... c'est très agaçant.
Merci d'éclairer ma lanterne.


Avatar
josephcachico
Si tu veut conserver ton fichier Do_login_valide.php tel quel (car il est
utiliser ailleur par ex.) il te faut tester si la session existe et
eventuellement la lancer :
if ( ! $_SESSION)
session_start()