Header("location: page.php")

cs_benstar Messages postés 81 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 12 octobre 2009 - 13 mai 2005 à 12:51
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 13 mai 2005 à 23:09
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

cs_destiny Messages postés 249 Date d'inscription jeudi 17 février 2005 Statut Membre Dernière intervention 29 août 2011
13 mai 2005 à 14:23
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!
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 mai 2005 à 17:58
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>
0
OniTalus Messages postés 39 Date d'inscription samedi 7 mai 2005 Statut Membre Dernière intervention 20 juin 2005
13 mai 2005 à 23:02
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
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 mai 2005 à 23:09
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>
0
Rejoignez-nous