PHP erreur headers already sent by [Résolu/Fermé]

Signaler
Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
-
Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
-
Bonjour,
Je sus en train de migrer mon site de xamp en local vers un hebergeur.
Une fois en ligne mon code plante a cet endroit (en gras).
<?php
// Script faisant appel aux sessions
session_start();

// appele la classe carte site
include_once ("obj/carte_site.php");
include_once ("obj/carte_site_declar.php");

// appelle la connection a la base de données
$site->cobd();

// recuperation des donner par la methode post du fichier identification.php
$pseudo = $_POST["user_pseudo"];
$pass = $_POST["user_pass"];

// requete qui dit que si le couple $pseudo et $pass et valide
$requete = "SELECT * FROM user "." WHERE user_pseudo='$pseudo' AND user_pass='$pass'";

$result = @mysql_query($requete);

if ($enreg = @mysql_fetch_array($result)) {
// Si une ligne a été trouvée c'est que le couple
// (identifant, mot de passe) est valide
// je creer une variable de session membre ty bolean true/false
// et une autre membre id qui sera le pseudo
$_SESSION["validate"] = TRUE;
$_SESSION["membre"] = $pseudo;
header("Location: sectionmembre_acces_accueil.php"); die();
} else {
$_SESSION["validate"] = FALSE;
header("Location: sectionmembre_acces_invalide.php"); die();
}
?>
<p><a href="index.php">retour</a> gestion des bases</p>

Et il m'affiche ce message erreur:
Warning: Cannot modify header information - headers already sent by (output started at /home/lionhell/public_html/obj/carte_site.php:2) in /home/lionhell/public_html/identif.php on line 34

1/Pourquoi ce message érreur (et pas en local)?
2/Pouvez vous m'expliquer une autre méthode pour la redirection vers les pages souhaitées

Merci d'avance...

4 réponses

Messages postés
2
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
5 février 2012
1
personnnellement, j'utlise cette fonction a la place de headers

function document_location($location)
{
echo "
<script language='javascript' > document.location='$location' </script>
";
}


dans ton cas essaie :
document_location("sectionmembre_acces_accueil.php");

apres avoir inclus la fonction précédente dans ton code
1
Merci

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

CCM 60467 internautes nous ont dit merci ce mois-ci

Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
1 350
j'ai essayer comme ceci:
function document_location($location)
{
echo "
<script language='javascript' > document.location='$location' </script>
";
}

if ($enreg = @mysql_fetch_array($result)) {
// Si une ligne a été trouvée c'est que le couple
// (identifant, mot de passe) est valide
// je creer une variable de session membre ty bolean true/false
// et une autre membre id qui sera le pseudo
$_SESSION["validate"] = TRUE;
$_SESSION["membre"] = $pseudo;
document_location("sectionmembre_acces_accueil.php");
die();
} else {
$_SESSION["validate"] = FALSE;
document_location("sectionmembre_acces_invalide.php");
die();
}
?>

Mais j'ai encore une erreur , peut etre du à autre chose.
Peut tu me dire si c'est bien comme cela que tu m'as dit de l'insérer dans la page?

merci d'avance....
Utilisateur anonyme
c'est quoi l'erreur, qu'est ce qu'il affiche ?
Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
1 350
Une erreur que j'avais dans toutes mes pages a cause d'un include de
inc1.php:
<?php
// verifie si une session est en cour et permettre de traiter les liens pour les identifier et les visiteurs.
session_start();
if(isset($_SESSION['membre']))
$identification = $_SESSION['membre'];
else
$non_identifier = 'visiteur';
?>

il a fallu que je le leve de toutes mes page car cela fesait comme si y a aviait un espace ou un caractere insérer avant

l'erreur est:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/lionhell/public_html/obj/carte_site.php:2) in /home/lionhell/public_html/inc1.php on line 3

http://www.mars-radio-dnb.com

Mais la je comprend pas car je fait pas apel a inc1.php.
Comme c'est tout frais je vais regarder y a un truc que j'ai du mal lire.
et je pense que ce que vous m'avez indiqué est exacte mais que je me retrouve avec une autre erreur...
Merci a vous!
Utilisateur anonyme
attention session_start() doit etre utilisé comme ceci:
juste apres <?php
et ce dernier (<?php) doit être au debut du code de la page, il ne doit rien y avoir avant même pas un espace.
Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
1 350
Ca y est j avance encore une ptite erreur mais tous vos conseils mon fait gagner du temps....
Merci!

salut,
c'était la fonction session_start(); qui envoyait les informations au client et là plus possible d'utiliser une redirection avec header. Seule une redirection en javascript est possible.
La reponse de assitance enligne semble pouvoir résoudre ton problème.
1
Merci

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

CCM 60467 internautes nous ont dit merci ce mois-ci

Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
1 350
cool
Oui ca à l'air bon, je pense que c'est un autre truc qui va pas ....
merci
Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
1 350
Toutes les erreurs que j'avais, était corriger par vos explications....
j'ai presque tout corriger, la seule chose que je comprend pas c'est pourquoi en local ca marcher?
Encore merci....

XP pro dual (boot)linux Fédora
Processeur=E6600 2.4Ghz 4mo Overclocker a 2.8 ratio:8 fsb rated oc:1399Mhz
fsb:349mhz
ram=Corsair 2*VS1GB667D2 PC2-5300(333mHz) en dual channel)+1 512 --->Overclock ram:437,2Mhz
Double écran lcd Asus 1920*1080

Disque dur:4 hd 16 partitions 2*500Go, 2*1000Go= 3000Go tous en 32mo de cache

ça c'est du pc que tu as là :) c'est peut être pour cela qu'il s'en fout des petites erreurs de code et que tout marche en local ^^

Plus sérieusement, c'est juste la configuration du serveur en ligne qui diffère de celle de ton serveur local. Mais dans tout les cas il faut savoir que ce genre d'erreur est à éviter, pas de fonction setcookie(), session_...(); et une redirection avec header() dans le même code.
Messages postés
13776
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
1 septembre 2020
1 350
Slt ah!!! il à fait son temps et je l'ais fait encore plus soufrir lol!
va falloir que je le change, au lieu de monter des config pour les autres.

aussi plus serieusement, j'ai bien compris.
je savais pas pour :
pas de fonction setcookie(), session_...(); et une redirection avec header()
Ca fait un moment que je me suis pas remis au php. J'ai apris pas mal tout seul, avec quelques livre/tuto et je galère un peu.
En tout cas merci pour les conseils.*
Bn route