Header(location: .....) dsl toujours pas compris

Header(location: .....) dsl toujours pas compris - PHP - Programmation

Marsh Posté le 03-12-2002 à 19:27:15    

j'ai bien utiliser la recherhce mais je ne comprend toujours pas le probleme (ca parle d'espace... alors que je n'en ai pas apres le <? )
 
bref voici mon code :
 

<body bgcolor="#E8E8E8"><?php
 
require ("connect.php" );
 $connect=mysql_connect(SERVEUR, NOM, PASSE);
 mysql_select_db(BASE, $connect);
 $obj="SELECT nom FROM User WHERE nom='$nom'";
 $req=mysql_query($obj);
 $row=mysql_numrows($req);
if ($row!=0)
 {
  echo "ce pseudo est deja pris";
 }
if (empty($nom) OR empty($password) OR empty($email))
 {
  echo "les champs <br>NOM, PASSWORD et EMAIL</br> ne doivent pas etre vides";
 }
else
 {
  $obj="INSERT INTO User VALUES ('$email', '$nom', '$prenom', '$password', '$AnneeNaiss', '$pays')";
  $req=mysql_query($obj) or die ('error sql'.sql.'<br>'.mysql_error());
  header("Location:formulaire%20inscription.html" );
 }
 
 
mysql_close($connect);
 
?></body>


 
et l'erreur
 

Warning: Cannot add header information - headers already sent by (output started at /var/www/free.fr/13/f/a/w/t/fawteam/php test/add.php:10) in add.php on line 11


 
c'est grave doc? :(

Reply

Marsh Posté le 03-12-2002 à 19:27:15   

Reply

Marsh Posté le 03-12-2002 à 19:31:23    

On ne peut pas faire de header si du texte a déjà été envoyé au navigateur.
Ca veut dire rien avant le premier "<?" du fichier principal, rien entre les ">?" et le "<?" suivant quand ils sont situer avant le header rien avant le premier "<?" de chaque fichier inclus, rien après le dernier "?>" des fichiers inclus, rien entre les ">?" et le "<?" suivant dans les fichiers inclus et aucun echo, print et autres instructions envoyant du texte au navigateur d'exécuté avant ton header.
 
Relis ton code et dis moi ce que tu lis au début.
 
EDIT : Rajout des conditions manquantes.


Message édité par omega2 le 03-12-2002 à 19:36:37
Reply

Marsh Posté le 03-12-2002 à 19:35:53    

ben body :/
 
ca veut dire que je doit le foutre apres le </body> :??:
 
genre a la fin je rajoute <? header("....." )?>
 
?

Reply

Marsh Posté le 03-12-2002 à 19:36:12    

enfin mem apres le </html>

Reply

Marsh Posté le 03-12-2002 à 19:37:01    

C est pour envoyer une entete HTTP tu ne doit envoyer rien comme code html avant (pas de body, head, meta, que dal)...

Reply

Marsh Posté le 03-12-2002 à 19:40:14    

chacal_one333 a écrit a écrit :

ben body :/
 
ca veut dire que je doit le foutre apres le </body> :??:
 
genre a la fin je rajoute <? header("....." )?>
 
?



Bon, on réexplique calmement :
tout ce qui précède le premier "<?" est envoyé de suite au navigateur donc là, t'as du texte qu'est envoyé au navigateur. Ensuite tu essayes de faire un header. Comment veux tu que camarche alors qu'il faut qu'il n'y ai rien d'envoyer au navigateur avant de faire le header?
Là, il faut juste que tu remplaces  
<body bgcolor="#E8E8E8"><?php
par les lignes
<?php
echo "<body bgcolor=\"#E8E8E8\">";


Message édité par omega2 le 03-12-2002 à 19:41:17
Reply

Marsh Posté le 03-12-2002 à 19:44:38    

si j'ai bien compris ( :( )
 

<?php
echo "<body bgcolor=\"#E8E8E8\">";
 
require ("connect.php" );
 $connect=mysql_connect(SERVEUR, NOM, PASSE);
 mysql_select_db(BASE, $connect);
 $obj="SELECT nom FROM User WHERE nom='$nom'";
 $req=mysql_query($obj);
 $row=mysql_numrows($req);
if ($row!=0)
 {
  echo "ce pseudo est deja pris";
 }
if (empty($nom) OR empty($password) OR empty($email))
 {
  echo "les champs <br>NOM, PASSWORD et EMAIL</br> ne doivent pas etre vides";
 }
else
 {
  $obj="INSERT INTO User VALUES ('$email', '$nom', '$prenom', '$password', '$AnneeNaiss', '$pays')";
  $req=mysql_query($obj) or die ('error sql'.sql.'<br>'.mysql_error());
  header("Location:formulaire%20inscription.html" );
 }
 
 
mysql_close($connect);
echo "</body>";
?>


 
right or wrong?

Reply

Marsh Posté le 03-12-2002 à 19:53:28    

j'ai relu et donc [quote]pas de echo ou print avant
 
donc logiquement ( ma logique [:thesphinx] )
 
 

<?php
header("Location:formulaire%20inscription.html" );
echo "<body bgcolor=\"#E8E8E8\">";
 
require ("connect.php" );
 $connect=mysql_connect(SERVEUR, NOM, PASSE);
 mysql_select_db(BASE, $connect);
 $obj="SELECT nom FROM User WHERE nom='$nom'";
 $req=mysql_query($obj);
 $row=mysql_numrows($req);
if ($row!=0)
 {
  echo "ce pseudo est deja pris";
 }
if (empty($nom) OR empty($password) OR empty($email))
 {
  echo "les champs <br>NOM, PASSWORD et EMAIL</br> ne doivent pas etre vides";
 }
else
 {
  $obj="INSERT INTO User VALUES ('$email', '$nom', '$prenom', '$password', '$AnneeNaiss', '$pays')";
  $req=mysql_query($obj) or die ('error sql'.sql.'<br>'.mysql_error());
   
 }
 
 
mysql_close($connect);
echo "</body>";
?>

Reply

Marsh Posté le 03-12-2002 à 20:01:03    

chacal_one333 a écrit a écrit :

j'ai relu et donc [quote]pas de echo ou print avant
 
donc logiquement ( ma logique [:thesphinx] )
 
 

<?php
header("Location:formulaire%20inscription.html" );
echo "<body bgcolor=\"#E8E8E8\">";
 
require ("connect.php" );
 $connect=mysql_connect(SERVEUR, NOM, PASSE);
 mysql_select_db(BASE, $connect);
 $obj="SELECT nom FROM User WHERE nom='$nom'";
 $req=mysql_query($obj);
 $row=mysql_numrows($req);
if ($row!=0)
 {
  echo "ce pseudo est deja pris";
 }
if (empty($nom) OR empty($password) OR empty($email))
 {
  echo "les champs <br>NOM, PASSWORD et EMAIL</br> ne doivent pas etre vides";
 }
else
 {
  $obj="INSERT INTO User VALUES ('$email', '$nom', '$prenom', '$password', '$AnneeNaiss', '$pays')";
  $req=mysql_query($obj) or die ('error sql'.sql.'<br>'.mysql_error());
   
 }
 
 
mysql_close($connect);
echo "</body>";
?>






 
et ca marche???  
 
 
 :hello:


---------------
** STRAVA || Photos flick r || Pooky's world trip **
Reply

Marsh Posté le 03-12-2002 à 20:02:39    

nan [:dawa]

Reply

Marsh Posté le 03-12-2002 à 20:02:39   

Reply

Marsh Posté le 03-12-2002 à 20:29:22    

:bounce: svp jvoudrait bien apprendre ca ca me parait important

Reply

Marsh Posté le 03-12-2002 à 20:38:49    

Bin déjà, ça c'est bien TOUT le code de ta page ? J'veux dire, y a pas de <html> ou <head> avant ? Passke ton code PHP avec le header() DOIT être écrit avant tout ça.
Sinon, c'est quoi le message d'erreur maintenant ? Si c'est toujours le même, c'est que tu fais des print ou des echo avant de faire ton header().

Reply

Marsh Posté le 03-12-2002 à 20:40:11    

vala tout el fichier
 

<?php
 
require ("connect.php" );
 $connect=mysql_connect(SERVEUR, NOM, PASSE);
 mysql_select_db(BASE, $connect);
 $obj="SELECT nom FROM User WHERE nom='$nom'";
 $req=mysql_query($obj);
 $row=mysql_numrows($req);
if ($row!=0)
 {
  echo "ce pseudo est deja pris";
 }
if (empty($nom) OR empty($password) OR empty($email))
 {
  echo "les champs <br>NOM, PASSWORD et EMAIL</br> ne doivent pas etre vides";
 }
else
 {
  $obj="INSERT INTO User VALUES ('$email', '$nom', '$prenom', '$password', '$AnneeNaiss', '$pays')";
  $req=mysql_query($obj) or die ('error sql'.sql.'<br>'.mysql_error());
  header("location: formulaire%20inscription.html" );
  exit;
 }
 
 
mysql_close($connect);
echo "</body>";
?>


rien avant rien apres

Reply

Marsh Posté le 03-12-2002 à 20:41:28    

erreur:
 

Warning: Cannot add header information - headers already sent by (output started at /var/www/free.fr/13/f/a/w/t/fawteam/php test/connect.php:11) in add.php on line 21


 
et quand je le met au debut le pbm est le meme seule la ligne change :/

Reply

Marsh Posté le 03-12-2002 à 20:45:16    

:pfff:  
http://www.php.net/manual/fr/function.header.php
 
Je cite :

Citation :


Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header() ne soit appelée.

Reply

Marsh Posté le 03-12-2002 à 20:47:03    

ben j'ai retirer l'espace du require mais ca marche pas qd meme
 

<?php
require("connect.php" );
 $connect=mysql_connect(SERVEUR, NOM, PASSE);
 mysql_select_db(BASE, $connect);
 $obj="SELECT nom FROM User WHERE nom='$nom'";
 $req=mysql_query($obj);
 $row=mysql_numrows($req);
if ($row!=0)
 {
  echo "ce pseudo est deja pris";
 }
if (empty($nom) OR empty($password) OR empty($email))
 {
  echo "les champs <br>NOM, PASSWORD et EMAIL</br> ne doivent pas etre vides";
 }
else
 {
  $obj="INSERT INTO User VALUES ('$email', '$nom', '$prenom', '$password', '$AnneeNaiss', '$pays')";
  $req=mysql_query($obj) or die ('error sql'.sql.'<br>'.mysql_error());
  header("location: formulaire%20inscription.html" );
  exit;
 }
 
 
mysql_close($connect);
echo "</body>";
?>

meme erreur :'(

Reply

Marsh Posté le 03-12-2002 à 20:49:03    

RAH !@#  :fou:  
Ce que DIT le manuel c'est de NE PAS utiliser include() ou require(). C'est bon, tu t'en sors ?

Reply

Marsh Posté le 03-12-2002 à 20:49:31    

C'est dans connect.php qu'il doit y avoir des lignes vides ou des espaces.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-12-2002 à 20:50:33    

Taiche a écrit a écrit :

RAH !@#  :fou:  
Ce que DIT le manuel c'est de NE PAS utiliser include() ou require(). C'est bon, tu t'en sors ?



Heu si, il peut l'utiliser, il faut juste qu'ils produisent rien en sortie.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-12-2002 à 20:51:25    

Ah oué, autant pour moi, désolé :o

Reply

Marsh Posté le 03-12-2002 à 20:55:07    

ben vala mon connect.php
 

<?php
 define(NOM, "****" );
 define(PASSE, "***" );
 define(SERVEUR,
"http://fawteam.free.fr/php%20test/" );
 define(BASE, "****" );
?>


 
ya pas d'espace au define :/


Message édité par Profil supprimé le 03-12-2002 à 20:55:52
Reply

Marsh Posté le 03-12-2002 à 20:57:12    

Les caractères qui ont été envoyés sont à la ligne 11 de connect.php. Or vu ce que tu postes il ne fait pas 11 lignes. Tu dois donc avoir des lignes vides après le ?> de connect.php.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-12-2002 à 20:58:26    

Humpf. Fous un exit() ou un die() après l'echo du premier if.
Pis euh, l'echo "</body>" de la fin il est tout seul sans echo "<body>" ? :D

Reply

Marsh Posté le 03-12-2002 à 20:58:56    

je les ai retiré j'avais en effet du <html> <body> ....
 
plus maintenant

Reply

Marsh Posté le 03-12-2002 à 21:00:57    

ca marche now !!!!
 
j'avais un espace avant le <?php :heink:

Reply

Marsh Posté le 03-12-2002 à 21:53:35    

chacal_one333 a écrit a écrit :

ca marche now !!!!
 
j'avais un espace avant le <?php :heink:  




 
 :lol:  :lol:  :lol:  
c pour ca que j'adore programmer  [:noelgrin]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed