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

- - Dernière réponse :  Ny89 - 6 sept. 2015 à 00:54
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.
Afficher la suite 

20/40 réponses

Meilleure réponse
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1368
42
Merci
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....

Dire « Merci » 42

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63246 internautes nous ont dit merci ce mois-ci

thx skunki ... utf-8 sans bom ça marche nickel !!!
Je ne Comprend pas, J'ai pour temps tous essayez utf-8 sans BOM Ainsi est même le javascript rien ne marche sauf ansi mais enfaite en format anssi mon code php ne fonctionne pas es-ce normale Ou non ? s'il vous Plait Aider moi je suis débutent en PHP je viens d'apprendre a utiliser un système de connexion via PHP est MYSQL voici mon code.

<?php
session_start();
if(isset($_POST['submit']))
{
$pseudo = htmlspecialchars(trim($_POST['pseudo']));
$password = htmlspecialchars(trim($_POST['password']));
  if($pseudo&&$password)
  {
	  $password = md5($password);
	  $connect = mysql_connect('l*******',*******','*****);
	  mysql_select_db('******');
	  
	  $log = mysql_query("SELECT * FROM users WHERE pseudo='$pseudo' AND password='$password'");
	  $rows = mysql_num_rows($log);
	  if($rows==1)
	  {
	  $_SESSION['pseudo']=$pseudo;
	  header('Location:membre.php');
	  }else echo"Pseudo Ou mot de Passe Incorect";
	  
  }else echo"Veuiller Remplir Tous Les Champs";
}

?>
> Mrhack38 -
pour regler ton probleme il faut pas utiliser session start(); et header en meme temps , c'est pas possible le header il faut le faire en javascript !
Rhodya
Messages postés
34
Date d'inscription
dimanche 18 septembre 2011
Statut
Membre
Dernière intervention
8 avril 2013
-
Salut tout le monde !

Je vous remercie, grâce à vos commentaires qui m'a débloqué (mon équipe et moi)! On a galéré durant 2h pour un simple espace qui s'est glissé entre le début du script et la balise <?php !!!
morganamona
Messages postés
1
Date d'inscription
mardi 27 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
-
Thank you so much
Messages postés
5
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014
21
20
Merci
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 !
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.
lionhell454
Messages postés
13831
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
4 décembre 2019
1107 -
merci aussi!!
Merciii

C'était bien le souci du caractère invisible pour ma part !
trosh
Messages postés
1
Date d'inscription
samedi 16 mai 2015
Statut
Membre
Dernière intervention
16 mai 2015
-
Merci de ton aide qui m'a aussi été très précieuse !
4
Merci
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
L'encodage au format ANSI fonctionne !!!!!!!!!!!!!!!!
Je ne cromprend toujours pourquoi parcontre ?

Merci !!!
> Mx -
Bonjour

Il y a des problèmes avec certains éditeurs (Notepad++) en UTF8 parce qu'ils insèrent un caractère (BOM pour Byte Order Mark, prévu par le standard) invisible en début de fichier. Donc avant le <?php. Donc problème pour les headers.
On peut très bien garder son source PHP en UTF8 à condition de l'enregistrer sans BOM.
cyrilherve
Messages postés
324
Date d'inscription
dimanche 12 août 2007
Statut
Membre
Dernière intervention
26 août 2011
8 -
j'ai le mm probleme ,, j'utilise dreamweaver,,, comment est que je peux passer mon fichier index en ANSI
svp
cdlt
> cyrilherve
Messages postés
324
Date d'inscription
dimanche 12 août 2007
Statut
Membre
Dernière intervention
26 août 2011
-
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
Sous dreamweaver aller à : Modifer > Propriété de la page > Titre et encodage
Messages postés
2899
Date d'inscription
dimanche 30 juillet 2006
Statut
Modérateur
Dernière intervention
10 novembre 2019
655
2
Merci
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
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 !
2
Merci
Sayé 2minutes mon suffit !
Chez free il faut créer un dossier "sessions" a la racine du site !

Sa marche parfaitement !
Salut,

Moi aussi, j'ai résolu mon problème en créant un dossier 'sessions' à la racine du site ...
ouf apres le 25eme commentaire je trouve la solution grace a toi: mettre un repretoire sessions....je suis chez free aussi enfin je teste chez eux pour une cliente...
je ne suis pas en utf-8 mais en iso
Merci merci merci 1 000 fois !!!!!!!!!
Super @lex, c'était ça tout simplement !

Créer un dossier session vide à la racine !

VIVAAAAAAAA !!!!!!!
YES!!!
OVH
Creer un dossier sessions vide dans le www
supprimer les cookies du nav et ca marche :D
1
Merci
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.
1
Merci
Merci les gars ,oui en fait faut vraiment pas d'espace avant le session start()...
1
Merci
ouai mais la tu mm pas...
kilian
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1368 -
Mais si je t'aime bien...
kilian
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1368 -
Ca signifie que tu as déjà envoyé les en-têtes http (via session_start()) tu ne peux plus les renvoyer (comme le fait header), donc au lieu de faire redirection avec

header("Location: index.php?identifiant=$identifiant");

Il faut que tu utilises autre chose: http://www.commentcamarche.net/faq/sujet 4640 webmaster faire une redirection
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 //.. -_-
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.
c'est pas moi qu'il ai trouvé, mais je l'ai lu dans un forum ^^.
0
Merci
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
Messages postés
2899
Date d'inscription
dimanche 30 juillet 2006
Statut
Modérateur
Dernière intervention
10 novembre 2019
655 -
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
> Ssylvainsab
Messages postés
2899
Date d'inscription
dimanche 30 juillet 2006
Statut
Modérateur
Dernière intervention
10 novembre 2019
-
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
Ssylvainsab
Messages postés
2899
Date d'inscription
dimanche 30 juillet 2006
Statut
Modérateur
Dernière intervention
10 novembre 2019
655 > latino58 -
0
Merci
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...
0
Merci
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!
0
Merci
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 :)
0
Merci
Y a un Espace derriere <php?,
Efface le !:!
Et après ça marchera
"Warning: session_start(): Cannot send session cookie" easyphp
Messages postés
4
Date d'inscription
vendredi 4 avril 2008
Statut
Membre
Dernière intervention
13 avril 2008
0
Merci
merci
0
Merci
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.
0
Merci
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
0
Merci
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.
0
Merci
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...
0
Merci
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
kilian
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1368 -
0
Merci
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
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1368 -
Je suis prêt à parier que dans session.php tu as un session_start() qui traine....