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

Signaler
-
 Ny89 -
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.

40 réponses

alors pourquoi tu m'aide pas :-( sauf si tu trouve pas mon erreur
kilian
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1404
ouaw il me donne mal a la téte le .htacess je croi jvai abandonner mon projet
kilian
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1404
Prend pas le .htaccess, prend la méthode javascript, c'est la plus simple.
j'ai un autre problème dans mon j'arrive pas a récupérer le mot de passe pour me connecter au site avec l'hébergeur Free pourtant sa fonctionne correctement en localhost


<html>
<head>
<meta http-equiv="Refresh"
content="0;URL=http://dj.slyders.free.fr/">
</head>

<?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==0)
{

}
else
{
$_SESSION['identifiant']= $identifiant;
$_SESSION['password']= $passwd;
}

?>
</html>
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1404
Vérifie que la connexion se passe bien. Et fait un echo sur ta requête puis execute la dans phpMyadmin pour être sur qu'elle est bonne.
la connexion au serveur est bonne des de coté (free et easyphp) les requets aussi mais si localhost quand je m'identifie avec un login et mot de passe sa m'achiffe se message :

Notice: Undefined index: password in D:\DOCUMENT\Site\MON SITE\authentification.php on line 23

mais cela fonctionne quand même il retourne sur la page index avec la session de l'identifiant. Sur free sa redirige vers l'index mais il ne se passe rien, aucune session d'ouvert
personne pour m'aider
Messages postés
2899
Date d'inscription
dimanche 30 juillet 2006
Statut
Modérateur
Dernière intervention
10 novembre 2019
717
Postes un nouveau sujet, et arrêtes de "upper" s'il te plaît.
--
Sylvain
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1404
Wep, j'avoue que le problème initial étant résolu, et comme j'ai pas des masses de temps ce week end, je préfèrerais que cette nouvelle question soit déléguée à quelqu'un d'autre :-)
Bonjour

alors en fait moi aussi j'ai eu ce probleme : voici mon code (c'est pas une histoire de BOM ^^), vous allez tout de suite comprendre.
un fichier haut.inc.php

<?php session_start(); ?>

<!DOC...

un fichier incluant haut.inc.php

<?php include("haut.php"); ?>

et ben la j'avais les avertissemnt deviner pourquoi ?
les 3 espace avant le include ... (bon en fait cétait des tabulation ^^)
donc si votre déclaration session_start ce trouve dans un fichier include regarder plutot dans le / les fichier qui font appelle a lui.

Voila jespere vous avoir répondu
pardon je me suis mal exprimer et en plus j'ai fait une faute :

la syntaxe est plutot :

<?php include("haut.inc.php"); ?>

et les 3 espace sont devant le <?php include( ...

^^ Cordialement
Quand j'ai rencontré cette erreur, ma page était programmé ainsi :
............................
require('fonction.php');
session_start();
.................................

-> J'ai trouvé l'erreur en 7 - 8 minute :)

Voici ma page sans l'erreur :
.............................
session_start();
require('fonction.php');
.................................
Bonjour,

Je suis en train de creer un espace client pour un site internet hors quand je valide mon login et mot de passe voila ce qui s'affiche:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.136/dcvidloo/www/site3/index.php:7) in /homez.136/dcvidloo/www/site3/login.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /homez.136/dcvidloo/www/site3/index.php:7) in /homez.136/dcvidloo/www/site3/login.php on line 21

pour information login.php est intégré à index par un include

<div id="login">
<?php include("login.php"); ?>
</div>

Quelqu'un aurait-il la possibilité de me dire où ça coince??
Salut,


Un grand merci a tous, apres avoir cherche pendant 2 heures le pourquoi de ce message d'erreur
et c'etait a cause d'un fichier encode en UTF-8, passe a ANSI et ca a remache directe!
Merci!
Messages postés
243
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
5 décembre 2012
1
Bonjour,
J'étudie le fonctionnement de la solution opensource OSSIM qui est un logiciel de collecte, de traitement de log et de supervision de réseau à partir d'une interface Web.
La partie Web me pose problème. En fait, quand je tape http://localhost/ossim/index.php dans le navigateur, il m'affiche l'erreur et les trois warnings :

An error occured: XML data could not be loaded. Make sure you specified the correct path.
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /opt/ossim/include/classes/Security.inc:79) in /opt/ossim/include/classes/Session.inc on line 88

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /opt/ossim/include/classes/Security.inc:79) in /opt/ossim/include/classes/Session.inc on line 88

Warning: Cannot modify header information - headers already sent by (output started at /opt/ossim/include/classes/Security.inc:79) in /opt/ossim/include/classes/Session.inc on line 381



j'ai du mal à comprendre ( je suis débutant en ce qui concerne le dev web ...) mais j'ai déja lu tous ces posts au dessus.

-- Ces liens montrent que s'il y a un meme un seul espace entre session_start( ) et le début du code, ca ne fonctionne pas ...
-- Quand j'enlève tout ce qu'il y a avant l'appel de fonction session_start( ), ou quand je commente cet appel de fonction, j'ai plus ces warnings mais je me demande bien si cela ne va pas modifier le comportement du programme... du coup j'ai annulé les modifs et j'ai laissé le fichier tel qu'il etait au tout début.
-- pourquoi les developpeurs d'OSSIM auraient appeler cette fonction session_start après avoir mis des commentaires et d'autres code si on ne peut pas faire cela? ( car dans les liens ci-dessus, on dit qu'il ne faut rien mettre entre le début du code php et l'appel de la fonction session_start( ) ... )

Est ce que quelqu'un aurait une idée de ce que je dois faire/tester car je suis un peu confus.

Merci d'avance
deuxieme solution, si tu n'as pas le choix que de mettre le session start en premier caractere de ta page, tu mets un @ :

Comme ça :

@session_start();

Le @ fait que meme si un message d erreur apparait, elle ne s affiche pas

Bonjour à tous,

j'ai moi aussi des problèmes avec utf-8 session_start()

J'ai trouvé sur le forum une super soluce :

http://www.commentcamarche.net/forum/affich-6039112-ereure-php-i

et ca marche impec

En espérant apporter une aide à certains :)

Fleet
Messages postés
19
Date d'inscription
lundi 1 mars 2010
Statut
Membre
Dernière intervention
1 juin 2012
27
Si vous avez un problème de ce genre vous devez placer votre session_start(); avant le Doctotype, et si l'érreur persiste, vous devez :

1 vérifier s'il n'y a pas un espace (MËME LE PLUS PETIT) ou un saut de ligne avant le session_start();.

2 vérifier que votre fichier est codé en UTF8 SANS BOM.

Admin de http://b2geek.com | A votre service.

b2geek . com | Site communautaire d'entraide domaine informatique, jeux vidéos, et bien plus
Messages postés
1
Date d'inscription
samedi 5 juillet 2014
Statut
Membre
Dernière intervention
5 juillet 2014

Mon probleme:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/adobozfr/public_html/index.php:1) in /home/adobozfr/public_html/data_classes/server-data.php_data_classes-core.php.php on line 4

Mon code:

<?php
require_once('./data_classes/server-data.php_data_classes-core.php.php');
session_start();

if(isset($_GET['registerCancel']) && FilterText($_GET['registerCancel'] == "true")){
session_unset();
}

if(!session_is_registered(username)){

if(isset($_POST['username']) && isset($_POST['password'])){
$username = FilterText($_POST['username']);
$password = HoloHash($_POST['password'], $username);
$password2 = HoloHashMD5($_POST['password'], $username);

if(empty($username) || empty($_POST['password'])){
$login_error = "Usuário ou senha incorretos!";
} else {
$sql = mysql_query("SELECT id FROM users WHERE username = '".$username."' AND password = '".$password."' OR username = '".$username."' AND password = '".$password2."' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($sql) < 1){
$login_error = "El usuario o la contraseña son incorrectas!";
} else {
$userdata = mysql_fetch_assoc($sql);
$userid = $userdata['id'];
$ban = mysql_query("SELECT * FROM bans WHERE value = '".$username."' AND bantype = 'user' or value = '".$remote_ip."' AND bantype = 'ip' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($ban) < 1){

mysql_query("UPDATE users SET password = '".$password2."', ip_last = '".$remote_ip."' WHERE username = '".$username."'");

$_SESSION['username'] = $username;
$_SESSION['password'] = $password2;
if ($_POST['_login_remember_me'] == "true"){
setcookie("remember", "remember", time()+60*60*24*100, "/");
setcookie("rusername", $_SESSION['username'], time()+60*60*24*100, "/");
setcookie("rpassword", $_SESSION['password'], time()+60*60*24*100, "/");
}
header("location: $path/me"); exit;
} else {
$bandata = mysql_fetch_assoc($ban);
$timestamp = time();
if($bandata['expire'] > $timestamp){
$login_error = "Você foi banido por: \"" . $bandata['reason'] . "\" e acaba em: " . date('d.m.Y - H:i:s', $bandata['expire']) . ".";
} else {
mysql_query("DELETE FROM bans WHERE value = '".$username."' AND bantype = 'user' OR value = '".$remote_ip."' AND bantype = 'ip' LIMIT 1") or die(mysql_error());
mysql_query("UPDATE users SET password = '".$password2."', ip_last = '".$remote_ip."' WHERE username = '".$username."'");

$_SESSION['username'] = $username;
$_SESSION['password'] = $password2;
if ($_POST['_login_remember_me'] == "true"){
setcookie("remember", "remember", time()+60*60*24*100, "/");
setcookie("rusername", $_SESSION['username'], time()+60*60*24*100, "/");
setcookie("rpassword", $_SESSION['password'], time()+60*60*24*100, "/");
}
header("location: $path/me"); exit;
}
}
}
}
}



$body_id = "index";


?>
<!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><?php echo $shortname; ?> - Entrar</title>
<link href="css/je4n.css" type="text/css" rel="stylesheet" media="all" />

<!-- DESIGNED & CODED BY JE4N / LOUIS -->
<!-- PROPERTY OF WWW.PIXELACAO.ZZ.MU -->

</head>
<body>
<center>
<?php if(isset($login_error)){ ?>
<div class="mensagem-erro">El usuario o la contraseña es incorrecto!</div>
<?php } ?>

<div class="top">
<div class="container">
<div class="logo">
<form action="" method="POST">
<form action="/account/submit" method="post">
<div class="input user">
<input type="text" name="username" id="credentials-email" placeholder="Usuario">
</div>
<div class="input pass">
<input type="password" name="password" id="credentials-password" placeholder="Contraseña">
</div>
<input type="submit" value="Entrar" id="credentials-submit" name="login">
</form>
</div>
</div>
</div><br clear="all"/>
<div class="main container">
<div class="padding main">
<div class="content left">
<div id="load_data">
<div class="je4n-registro">
<span><a href="/quickregister/start" style="text-decoration:none;">Regístrate ahora!</a></span>
</div>


</head>
<body >

<div class="content_box"><div class="content_box bottom">
<h3><?php echo $shortname; ?>, Crea tu avatar, construye salas, haz amigos y diviértete!</h3>
<p><?php echo $shortname; ?>, Un lugar divertido con gente divertida.</p>

</div>
</div>
</div>
</div>
<div class="index-online">
<span><?php echo $online_count; ?></span><p>
Usuarios online
</p>
</div>
<br clear="all"/>
</div> </div>
<div class="bottom container">
<?php require_once('./templates/index_footer.php'); ?>
</div>
</div>
</div>
<?php


} else {
header("location:me.php");
}

?>
</body>
</html>

Que faire ?
1 2