PHP erreur headers already sent by

Résolu/Fermé
Utilisateur anonyme - 5 févr. 2012 à 23:24
 Utilisateur anonyme - 6 févr. 2012 à 23:30
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

assitance enligne Messages postés 2 Date d'inscription dimanche 5 février 2012 Statut Membre Dernière intervention 5 février 2012 1
5 févr. 2012 à 23:35
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
Utilisateur anonyme
5 févr. 2012 à 23:44
je vais essayer ca de suite je te remercie....
++
0
Utilisateur anonyme
5 févr. 2012 à 23:54
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....
0
Utilisateur anonyme
5 févr. 2012 à 23:59
c'est quoi l'erreur, qu'est ce qu'il affiche ?
0
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!
0
Utilisateur anonyme
6 févr. 2012 à 00:18
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.
0
Utilisateur anonyme
5 févr. 2012 à 23:57
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
Utilisateur anonyme
6 févr. 2012 à 00:09
cool
Oui ca à l'air bon, je pense que c'est un autre truc qui va pas ....
merci
0
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....
0
Utilisateur anonyme
6 févr. 2012 à 23:20
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.
0
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
0