Header("location: page.php")

Signaler
Messages postés
81
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
12 octobre 2009
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
j'ai eu ce msg d'erreur "Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-7\www\formation\creer_etu_form.php:140) in c:\program files\easyphp1-7\www\formation\creer_etu_form.php on line 239" quand j'ai fais <? session_start() ?> au debut bien avnt <html> et apres j'ai mis le code (header("location: page.php")) entre les balises .


en fait j'ai dejà reussi ce code ds une autre page mais sur une nouvelle page ou je voulais une redirection il me renvoie cette erreur.
keske je peux faire pour eliminer une fois pr tte cette erreur ?

benstar

4 réponses

Messages postés
249
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
29 août 2011

en faite un header() doit etre tj avant l'affichage d'un echo par ex. En gros il ne faut rien ecrire avant un header! tu peut faire des requete sql etc traitement mais ne rien ecrire.

Exemple (ne fonctionne pas):
...
echo $var1;
if ($var1 != 0) {
header("location:page.php")
} else {
...
}

Cela ne peut fonctionné parceque t'as deja ecrit sur t'as page

Mais comme jt'ai dit tu peut faire des traitement avant

Exemple (fonctionne):

if($_GET['action'] == 'login') {


require_once('../config/connect.php');

mysql_select_db($database_mc, $mc);
$req = "SELECT * FROM tbl_membre WHERE utili='".$pseudo."'";
$exec = mysql_query($req);
$result = mysql_fetch_array($exec);

$req1 = "SELECT * FROM tbl_admin WHERE admin='".$pseudo."'";
$exec1 = mysql_query($req1);
$result1 = mysql_fetch_array($exec1);

if ($result1['admin'] == $pseudo && $result1['pass'] == $password) {
$_SESSION['admin'] = $pseudo;
header("location: admin/acc-admin.php");
exit;
}


if ($result['utili'] == $pseudo && $result['mdp'] == $password){
$_SESSION['pseudo'] = $pseudo;
setcookie("clpass","$password",time()+365*24*3600);
setcookie("cllog","$pseudo",time()+365*24*3600);
header("location: acc.php");
exit;
}
else if($result['utili'] != $pseudo)
{
header("location: acc.php?erreur=1");
exit;
}
}

Sa ca fonctionne.

J'ai eu le prob aussi jcaptai pas

allez a+ :)

Try to dodge my skill noob!
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



tout en haut de ta page (avant toute sortie html) place ceci :



ob_start();



ensuite tout en bas :



ob_end_flush();



tu peux maintenant faire ton header où bon te semble.



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
39
Date d'inscription
samedi 7 mai 2005
Statut
Membre
Dernière intervention
20 juin 2005

Lut,

Remarque antho, y'a aussi ob_start('ob_gzhandler'); (au debutr avnt
tout code <html> / echo) qui marche (sans avoir bsoin de mettre
end_flush) :p
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Ouais, cette méthode permet de compresser si le navigateur l'accepte
(ainsi que le serveur) les données (c'est d'ailleurs ce que j'utilise
sur mon site même si mon hébergeur ne le prend pas en compte).

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>