Création
d'entreprise
Posez votre question Signaler

"session_start" et "header()" [Résolu]

hektoumayo - Dernière réponse le 24 mai 2012 à 15:18
Salut,
Voila j'ai fait un script dans lequel session_start et header( )n'est pas au début du script. J'ai des messages d'erreur du style :

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1\www\config.inc.php3:2) in c:\program files\easyphp1\www\inscription.php3 on line 23

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1\www\config.inc.php3:2) in c:\program files\easyphp1\www\inscription.php3 on line 23

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1\www\config.inc.php3:2) in c:\program files\easyphp1\www\inscription.php3 on line 25

Qu'est ce que je peux alors faire pour contourner ce problème. J'ai essayé de lire une solution à ce problème sur un site mais je n'ai rien compris. Si quelqu'un avait une reponse claire ça serait vraiment sympa.
Pour info ,je possède la derniere version de EasyPHP.
Merci d'avance.
Lire la suite 

"session_start" et "header()" »

83 réponses
Réponse
+34
moins plus
Salut... Ben pas le choix, il faut que ces instructions soient en début de script. Il ne faut pas qu'un seul caractère de texte soit généré avant....
donniecent- 9 janv. 2012 à 03:43
Octalion je ne sais pas comment tu savais qu'il fallait utiliser l'encodage UTF8 SAN BOM mais merciii mec tu m'as débloqué d'un casse tête de 6 jours lol :)
pupupu - 9 janv. 2012 à 20:55
et quand on veux utiliser session_start et header( ) en meme temps ??
comment fait-on ??
VanS - 24 mai 2012 à 15:18
Salut à tous !
Ce post est un peu vieux mais ayant rencontré ce soucis je tiens à partager la solution à mon problème.
Je code selon la méthode MVC (fichiers d'action, templates et classes). En fait mon fichier d'action incluait deux classes différentes selon le cas. Dans un cas, pas de problème avec les headers (pour faire un téléchargement de fichier) mais dans l'autre : header already sent bla bla bla...
Le problème venait simplement de deux lignes vides dans un des des fichiers "classes", à la fin du code après ?>.
Si cela vous arrive, pensez à vérifier tous les fichiers !
Tchu!
Ajouter un commentaire
Réponse
+18
moins plus
Merci pour vos infos, qui m'ont permis de trouver une solution pour le même problème : Cannot send session cache limiter - headers already sent. Je crée un site ouèbe chez Free (http://sivom.ambert.free.fr) avec Windows Vista, EasyPHP 2.0b1, phpMyAdmin 2.9.11, et chez free.fr avec phpMyAdmin - 2.11.3. Dès ma première page (index.php) j'ai eu l'erreur qui nous a tous embêté, lorsque cette page était chez Free (j'utilise FileZilla), mais elle ne provoquait pas d'erreur en local (avec EasyPHP) ! J'ai vérifié si un caractère pouvait être généré avant mon session_start(), s'il n'y avait pas de lignes vides, etc, le problème persistait.
Je crée mes textes.php avec Bloc-notes, et je les sauvegardais (fichier, enregistrer sous) avec Type : Tous les fichiers et Codage UTF-8. Lorsque j'ai changé ce dernier paramètre, c'est-à-dire Codage ANSI, le problème a disparu !
Ce qui signifie que pour Free, les textes.php en UTF-8 ne sont pas bien "digéré" : Free ne comprend bien que l'ANSI !
Allez Free, évolue un peu !
kilvan - 4 nov. 2011 à 15:06
Sauvegarder avec l'encodage ANSI, ce qu'il faut pas entendre (lire).

Pour info, il y a fort à parier pour que l'UTF 8 devienne un standard dans un avenir plus ou moins proche.

De ce fait, ceux qui veulent encoder leur site en UTF 8 n'ont cas choisir (comme dit plus haut) UTF8 sans BOM, le soucis du caractère 'invisible' sera résolu.
benny26 - 12 nov. 2011 à 22:31
merci
lionhell454- 5 févr. 2012 à 04:24
merci aussi!!
Ajouter un commentaire
Réponse
+3
moins plus
Bonjour à tous,
j'avais le même problème. Il y a une chose qui n'a pas été mentionnée.
J'utilise php pour générer du xsl à partir d'un xml. Pour utiliser les caractères spéciaux comme l'espace insecable j'ai mis le fichier php en utf-8.
J'avais donc ce warning. Je l'ai passé en code ANSI et ca marche.
Beaucoup d'erreurs proviennement d'encodage de fichier dans le monde du developpement Web ( cause plusieurs techno, plusieurs editeurs etc.). Il faut penser parfois à vérifier le charset des pages Web etc.

Entre utf-8 et iso-latin, ANSI...

Cordialement,
Benjamin
cyrilherve- 22 mai 2009 à 16:16
j'ai le mm probleme ,, j'utilise dreamweaver,,, comment est que je peux passer mon fichier index en ANSI
svp
cdlt
jsp47 - 23 mai 2009 à 14:14
Bonjour, je ne sais pas si c'est possible avec Dreamweaver, je ne l'utilise jamais pour le php ,mais télécharge si tu ne l'as pas notepad++ une fois installé ouvre ton fichier qui coince et va dans le menu format, déroule et clique sur convertir en utf8 sans bomenregistre le fichier et envoie le par ftp,cela doit marcher si pas d'autres erreurs de header.
Bonne chance
JSP
AmiROUCHE - 1 avril 2011 à 13:00
Sous dreamweaver aller à : Modifer > Propriété de la page > Titre et encodage
Ajouter un commentaire
Réponse
+2
moins plus
Sayé 2minutes mon suffit !
Chez free il faut créer un dossier "sessions" a la racine du site !

Sa marche parfaitement !
Vlad - 12 févr. 2011 à 12:37
Merci merci merci 1 000 fois !!!!!!!!!
Lutchaud - 21 mars 2011 à 17:14
Super @lex, c'était ça tout simplement !

Créer un dossier session vide à la racine !

VIVAAAAAAAA !!!!!!!
snake - 18 févr. 2012 à 01:22
YES!!!
OVH
Creer un dossier sessions vide dans le www
supprimer les cookies du nav et ca marche :D
Ajouter un commentaire
Réponse
+1
moins plus
Peut-être qu'il y a une sorte de caractère invisible au début de ton fichier.
Je crois que c'est possible (entre autres) si tu as édité ton fichier sous deux systèmes différents.
Efface le < de <?php, et "efface" ce qu'il y a avant, même si apparemment, tu n'effaces rien.
Ensuite, remets le chevron <, sauvegarde et essaye à nouveau.
--
Sylvain
Eversan - 31 oct. 2011 à 11:12
Merci 1000 fois, je sais je remonte un topic vieux de plusieurs années, mais c'est toujours d'actualité.

Pour moi, la soluce était celle ci :
1/ créer un dossier "session" à la racine de mon site
2/ Avec notepad++ ouvrir tous mes fichiers php (ou html) et dans le menu "encodage" cliquer pour chaque fichier sur "convertir en utf8 sans BOM".
3/ Toujours dans notepad++ faire la manip de Ssylvainsab. Enregistrez tout.
4/ Tout remettre par ftp sur mon serveur.

Et ca fonctionne enfin !
Ajouter un commentaire
Réponse
+1
moins plus
Merci les gars ,oui en fait faut vraiment pas d'espace avant le session start()...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Je suis sur ce problème depuis 2h j'implore votre aide.

l'erreur :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/lou/insa/Web/Final/index_deux.php:1) in /home/lou/insa/Web/Final/index_deux.php on line 2

le code :

<?php

session_start();

?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>



<head>



</head>



<body>



</body>

</html>
Ssylvainsab- 4 nov. 2007 à 19:16
Salut.

Cette erreur dit que tu as déjà envoyé les headers en affichant du texte.
output started at /home/lou/insa/Web/Final/index_deux.php:1
Tu as donc envoyé du texte à la ligne 1 du fichier /home/lou/insa/Web/Final/index_deux.php
Est-ce que, par hasard, ton fichier n'est pas inclus dans un autre ?
--
Sylvain
latino58 - 3 mai 2008 à 15:59
Salut,
Voila j'ai fait un script dans lequel session_start et header( )n'est pas au début du script. J'ai des messages d'erreur du style :

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1\www\config.inc.php3:2) in c:\program files\easyphp1\www\inscription.php3 on line 23

je précise que le fichier est inclus dans un autrre fichier (include)

dans un forum tu as posé la question a quelqun qui avait un probleme sans donner la reponse .....serais tu gentil de bien vouloir m'eclairer....
merci
Ajouter un commentaire
Réponse
+0
moins plus
La page que j'essaie d'afficher est réduite à son plus strict minimum. J'obtient l'erreur avec le code affiché ci dessus. Je ne fait aucun include ou require, aucun header et il ny a qu'un espace entre <?php et session_start().
Je comprends vraiment pas...
Ajouter un commentaire
Réponse
+0
moins plus
Il semble que ce soit le nom du mon fichier qui pose problème (index_deux.php). J'ai recréé un fichier (index2.php) et tout marche bien. C'est à n'y rien comprendre. Merci pour ton aide Sylvain en tout cas.
Bonne soirée!
Ajouter un commentaire
Réponse
+0
moins plus
Effectivement tu dois avoir l'explication, je n'ai pas pu vérifier le fichier est effacé. Mais je suis sous linux alors que mon collègue est sur windobe... Merci encore pour tant de lucidité un dimanche soir :)
Ajouter un commentaire
Réponse
+0
moins plus
Y a un Espace derriere <php?,
Efface le !:!
Et après ça marchera
"Warning: session_start(): Cannot send session cookie" easyphp
=) - 16 juin 2010 à 14:20
Merci =o
Ajouter un commentaire
Réponse
+0
moins plus
merci
Ajouter un commentaire
Réponse
+0
moins plus
Free supporte l utf 8 ... on balance pas de connerie comme ça ...

à mon avis quand tu as converti tes fichiers, tu as créé des caractères cabalistiques (é -> @#$#@$ ) ...

pour moi ça tourne nickel et j ai du grec.

je conseille pour les nouveaux, débutants et tout le monde d ailleurs d utiliser >>> notepad++ <<<.

Il a intégré des fonctions de conversions de fichiers simples, et il supporte tout les langages de prog.
Ajouter un commentaire
Réponse
+0
moins plus
Notepad++ est super, mais cela ne l'empêche pas de me rendre dingue avec cette histoire de caractère invisible.
Il a une fonction qui permet de basculer un fichier de ANSI en UTF8 (et dans une myriade d'autres formats).

J'ai essayé tous les trucs donnés ici. Aucun ne marche.

Je suis en localhost, avec ms4w.

Archeboc.
Ajouter un commentaire
Réponse
+0
moins plus
Peut-être qu'il y a une sorte de caractère invisible au début de ton fichier.
Je crois que c'est possible (entre autres) si tu as édité ton fichier sous deux systèmes différents.
Efface le < de <?php, et "efface" ce qu'il y a avant, même si apparemment, tu n'effaces rien.
Ensuite, remets le chevron <, sauvegarde et essaye à nouveau.


Mercii Beaucoup pour ton aide car au bout de 1h, je voulai me jeté par la fenetre , Merci Encore
Ajouter un commentaire
Réponse
+0
moins plus
franchement les gars un grand merci

j'ai crée un espace membre en local (truc de base) avec les pages index membre inscription deconnexion
tout est OK bien content je met sa sur mon ftp dans un dossier a par sa marche impec (content de moi).

sachant que je veut mettre sa dans la racine du site obliger de changer index en indexlog etc.. (j'utilise le bloc note et je modifie en même temps les header et form action j'enregistre)
donc je remet sa en ligne et la Oo sa marche plus.. jme dit c'est surement a cause du changement de nom..

je remet en index dans un dossier a par et la pareil.. marche plus..
sa fait deux jours que je suis la dessus je viens de réenregistrer mes page en ANSI et pouf.. sa marche ^^

c'est dingue qu'une petite chose aussi insignifiante empêche tout de marcher.

donc un grand merci a ceux qui on lancer cette hypothèse.
Ajouter un commentaire
Réponse
+0
moins plus
Désolé tout le monde mais mois sa ne marche pas !
J'ai fais egalement un espace membres mais voici mon code d'erreur enfin mes :
Warning: session_start() [function.session-start]: open(/mnt/167/sda/5/a/thekid06/sessions/sess_39a5ffb81faca44e16982191e9521955, O_RDWR) failed: No such file or directory (2) in /mnt/167/sda/5/a/thekid06/espace_membres/connexion.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/167/sda/5/a/thekid06/espace_membres/connexion.php:1) in /mnt/167/sda/5/a/thekid06/espace_membres/connexion.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/167/sda/5/a/thekid06/espace_membres/connexion.php:1) in /mnt/167/sda/5/a/thekid06/espace_membres/connexion.php on line 1

Warning: Unknown(): open(/mnt/167/sda/5/a/thekid06/sessions/sess_39a5ffb81faca44e16982191e9521955, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/167/sda/5/a/thekid06/sessions) in Unknown on line 0

et pourtant je suis sur qu'il ny a rien devant mon sessionstart ! J'ai enregistrer plusieur fois mes page en ANSI mais sa ne marche tjr pas...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour j'ai un probleme avec mon Header. j'utilise qu'un seule header qui est sensée mon ramener a la page index

Warning: Cannot modify header information - headers already sent by (output started at /mnt/102/sda/6/6/dj.slyders/authentification.php:4) in /mnt/102/sda/6/6/dj.slyders/authentification.php on line 25
Ajouter un commentaire
Réponse
+0
moins plus
Merci, mais j'ai un problème dans ce code. Je crois qu'il m'affiche le header( erreur) et donc il peut pas m'afficher le header(index) alors que sur localhost cela fonctionne parfaitement

voici le code :
<?php include("session.php");?>


<?php

include('connex.php');

$identifiant = $_POST["identifiant"];
$passwd =$_POST["password"];

$sql = "SELECT login FROM adherant WHERE login = '$identifiant' AND password = '$passwd'";
$result = mysql_query($sql);

while ($ligne = mysql_fetch_array($result))
{
$identifiant = $ligne['login'];
$passwd = $ligne['password'];
}

$nbLigne=mysql_num_rows($result);

if ($nbLigne==1)
{

}
else
{

$_SESSION['identifiant']= $identifiant;
$_SESSION['password']= $passwd;
header("Location: index.php?identifiant=$identifiant");
}

?>
kilian- 19 déc. 2008 à 11:58
Je suis prêt à parier que dans session.php tu as un session_start() qui traine....
Ajouter un commentaire
Réponse
+0
moins plus
ouai mais la tu mm pas...
gio - 22 févr. 2011 à 19:50
Bonjour a tous , j'ai eu le meme probleme sauf que la solution ne correspondant a aucune de ses solutions , du coup j'ai cherchais et le probleme etait que j'avais mis des commentaires <!-- --> dans une page PHP alors qu'il fallait mettre //.. -_-
Joe ben - 22 mars 2011 à 10:49
Slt tout le monde,

après être tombé dans ce problème j'ai pu trouver une solution qui m'a permis de le resoudre,
j'ai placé session_start() avant même le <!DOCTYPE ..., sa donnerai


<?php 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=iso-8859-1" />
<title>Test Page</title>
</head>

<body>
etc ....

pour moi ça a marché, je l'espère pour vous aussi.
Joe ben - 22 mars 2011 à 10:50
c'est pas moi qu'il ai trouvé, mais je l'ai lu dans un forum ^^.
Ajouter un commentaire
Ce document intitulé « "session_start" et "header()" » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
"session_start" et "header()" - page 2