Warning: Cannot modify header information

bitta Messages postés 59 Statut Membre -  
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un code qui marche bien mais dès que je met un: location: header... ça me met un message d'erreur:
Warning: Cannot modify header information - headers already sent by(output started at /var/www/vhost/xxxxx/home/html/haut_color.php:4) in /var/www/vhost/xxxxxx/home/html/verification.php on line 257

aidez moi SVP

je vous remercie d'avance

<?php
session_start();
require_once('config.php');
require_once "verification.php";
$titre_page='Inscription';
include_once('haut_color.php');
?>
<form method='post' action='inscription.php' enctype='multipart/form-data'>
<?php
/**************************VALIDATION*********************************/
if (isset($_POST["email"]))
{
//echo'inscription';
// Verification et envoi du mail de confirmation
inscription();
}
else if(isset($_GET["code"]))
{
echo'code_check';
// Verification du code et blacklistage si besoin
code_check($_GET["code"],$_GET["BL"]);
}

/************************************************************/

?>

<table width="520" border="0" align="center">
<tr>
<td colspan="2" class="menu">Formulaire d'Inscription</td>
</tr>
<tr>
<td><label for="pseudo">
<div align="left">Pseudo (5 à 15 caractères)* </div>
</label></td>
<td><input name="pseudo" type="text" id="pseudo" value="<?php if(isset($_POST['pseudo'])) echo $_POST['pseudo']; ?>"/></td>
</tr>
<tr>
.....................
</table></td>
</tr>
<tr>
<td><div align="left"><font face="Arial"><font size="-1">Adresse* </font></font></div></td>
<td><div align="left">
<input type="text" name="adresse_livraison" id="adresse_livraison" size="25" value="<?php if(isset($_POST['adresse_livraison'])) echo $_POST['adresse_livraison']; ?>"/>
</div></td>
</tr>
<tr>
<td><div align="left"><font face="Arial"><font size="-1">Ville* </font></font></div></td>
<td><table border="0" cellspacing="0" cellpadding="0" width="400" >
<tr>
<td nowrap="nowrap" width="95"><input type="text" name="ville_livraison" id="ville_livraison" size="12" value="<?php if(isset($_POST['ville_livraison'])) echo $_POST['ville_livraison']; ?>"/></td>
<td nowrap="nowrap" width="10"> </td>
<td nowrap="nowrap" width="106"><div align="left"><font face="Arial"><font size="-1"> Code postal*: </font></font></div></td>
...................... align="left">
<input name="submit2" type="submit" value="Valider" />
</div>
<div align="right"><a href="connexion.php"></a> <a href="connexion.php">Retour</a></div>
</div></td>
</tr>
</table>
</div>
</form>
<!-- <center><a href="connexion.php"></a>
</center>-->
<?php
include_once('bas.php');
?>

verification.php
<?php
session_start();
function inscription()
{
require_once('config.php');
//$titre_page='Verification';
//include_once('haut_color.php');
$email=formulaires($_POST['email']);//$email=htmlentities($_POST['email']);
$pseudo=formulaires($_POST['pseudo']);
............
$pays_livraison=formulaires($_POST['pays_livraison']);

/**************************************/
$page=$serveur.$_SERVER["PHP_SELF"];

/***************************************/
$IP=$_SERVER['REMOTE_ADDR'];
$heure=time();
/*************************************************/
// Attendre qu'il n'y ait pas d'autres user avec le même numéro de session.
do
{
$cle_activation=md5(time());
$resultat = mysql_query("SELECT * FROM membres WHERE cle_activation='$cle_activation'");
}
while(false!=($ligne = mysql_fetch_array($resultat)));
/**************************************************************/
//// VERIFICATIONS BANALES ////
if(!$mdp || !$mdp2 || strlen($mdp) < 5 || strlen($mdp) > 15)
{

echo'<div align="center" ><p><strong>Votre mot de passe ou sa confirmation est inexisant ou votre mot de passe n\'est pas compris entre 5 à 15 carractères</strong></p><br />';
echo"<script>alert(\"Votre mot de passe ou sa confirmation est inexisant ou votre mot de passe n\'est pas compris entre 5 à 15 carractères ! \")</script>";
include_once('bas.php');
return FALSE;
}
if($mdp!=$mdp2)
{
echo'<div align="center" ><p><strong>Votre mot de passe n\'est pas le meme que sa confirmation</strong></p><br />';
echo"<script>alert(\"Votre mot de passe n\'est pas le meme que sa confirmation ! \")</script>";
include_once('bas.php');
return FALSE;
}
if(!$pseudo || strlen($pseudo) < 5 || strlen($pseudo) > 15)
{
echo'<div align="center" ><p><strong>Votre pseudo est inexisant ou n\'est pas compris entre 5 et 15 carractères</strong></p><br />';
echo"<script>alert(\"Votre pseudo est inexisant ou n\'est pas compris entre 5 et 15 carractères ! \")</script>";
include_once('bas.php');
return FALSE;
/*header('Location:inscription.php?eerror=ee_pseudo');
return FALSE;*/
}
if(!$email || !VerifierAdresseMail($email))
{
echo'<div align="center" ><p><strong>Veuillez entrer ou vérifier votre adresse e-mail</strong></p><br />';

if(!$ville)
{
echo'<div align="center" ><p><strong>Veuillez entrer le nom de votre VILLE</strong></p><br />';
echo"<script>alert(\"Veuillez entrer le nom de votre VILLE ! \")</script>";
include_once('bas.php');
return FALSE;
}
if(!$pays)
{
echo'<div align="center" ><p><strong>Veuillez entrer votre PAYS</strong></p><br />';
echo"<script>alert(\"Veuillez entrer votre PAYS ! \")</script>";
include_once('bas.php');
return FALSE;
}
if(!$titre)
{
echo'<div align="center" ><p><strong>Veuillez indiquer votre civilité</strong></p><br />';
echo"<script>alert(\"Veuillez indiquer votre civilité ! \")</script>";
include_once('bas.php');
return FALSE;
}
....................

/*************************/
if($code_postale_livraison){
if(strlen($code_postale_livraison )!= 5 || !is_numeric($code_postale_livraison))
{
echo'<div align="center" ><p><strong>Veuillez vérifier votre CODE POSTALE de livraison</strong></p><br />';
echo"<script>alert(\"Veuillez vérifier votre CODE POSTALE de livraison ! \")</script>";
include_once('bas.php');
return FALSE;
}
}
/************************************/
//// VERIFICATIONS DES EXISTANCES ////
$reponse_mail=mysql_query("SELECT email FROM membres WHERE email='$email'") or die ('Erreur : '.mysql_error()); //verification si e-mail existe déjà
$count_mail=mysql_num_rows($reponse_mail);
if($count_mail == 1)
{
echo'<div align="center" ><p><strong>Cet E-mail existe déjà</strong></p><br />';
echo"<script>alert(\"Cet E-mail existe déjà ! \")</script>";
include_once('bas.php');
return FALSE;
}
$reponse_pseudo=mysql_query("SELECT pseudo FROM membres WHERE pseudo='$pseudo'") or die ('Erreur : '.mysql_error()); //verification si pseudo existe déjà
$count_pseudo=mysql_num_rows($reponse_pseudo);
if($count_pseudo == 1)
{
echo '<div align="center" ><p><strong>Ce Pseudo existe déjà</strong></p><br />';
echo"<script>alert(\"Ce Pseudo existe déjà ! \")</script>";
include_once('bas.php');
return FALSE;
}
//verification si le numéro de cleint existe déjà
do
{
for ($ligne=0;$ligne<30;$ligne++) //Création d'un identifiant aléatoire
{
@$session.=substr('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN',(rand()%(strlen('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN'))),1);
}
/***************************************************/

$resultat = mysql_query("SELECT * FROM membres WHERE session='$session'");
}
while(false!=($ligne = mysql_fetch_array($resultat)));

$mdp=md5($mdp); //Codage du mot de passe

/*************************************************************/
//$cle_activation=md5(time());

$resultat = mysql_query("SELECT * FROM membres WHERE email='$email' AND level='blacklist'");
if(false!=($ligne = mysql_fetch_array ($resultat))){
echo '<div align="center" ><p><strong>L\'adresse e-mail (".$email.") est dans la liste noire. Utilisez une autre adresse mail.</strong></p><br />';die('Erreur : '.mysql_error());} // Si l'e-mail est dans la blacklist

...................

// Envoi du mail
/**************/

/*****************************/
if(@mail($email, $subject, $message, $headers))
{
mysql_query("INSERT INTO membres VALUES ('', '$session', '$pseudo', '$mdp', '$email', '$societe','$siret','$adresse','$code_postale', '$ville', '$pays', '$titre','$nom', '$prenom', '$telephone', '$mobile', '$fax','$cle_activation','en_attente','$IP','$heure','$societe_livraison','$adresse_livraison','$ville_livraison','$code_postale_livraison','$pays_livraison')") or die ('Erreur : '.mysql_error());//insertion dans la bdd
/**************/
mysql_close();

/*****************************/
//mysql_query($query);
// mysql_close();
/*$page_confirmation = "<div align='center' >Merci pour votre inscription !<br />Vous devriez recevoir un e-mail à l'adresse suivante : ".$email.".";
$page_confirmation .= '<div align="center" >Veuillez confirmer l\'inscription en cliquant sur le lien se trouvant sur le mail.<br />';
echo $page_confirmation;*/

header('Location:mail_validate.php?ok=i_email');
return false;
}
else
{
header('Location:mail_validate.php?ok=in_email');
return false;
/*echo '<div align="center" ><p><strong>Le mail de confirmation n\'a pu être envoyé. Peut-être que l\'adresse n\'est pas valide. Veuillez contacter le webmaster s\'il vous plait</strong></p><br /><a href="inscription.php" onClick="history.back()">Retour</a>';
//include_once('bas.php');
//return FALSE;*/
}
}

function code_check($code="",$BL="")
{
require "config.php";

$heure=time();

...................
{
mysql_query("UPDATE membres SET level='registered' WHERE cle_activation ='$cle_activation' AND level='en_attente'");
$page_validation = "Merci, vous êtes maintenant enregistré ! Vous pouvez maintenant vous connectez librement <a href='connexion.php'>Identifiez vous !</a>'";

if ($mail_controle==1)
{
...............
}
}
// Si l'utilisateur vient pour être blacklisté, on passe son level de "en_attente" à "blacklist"
// Mais avant une petite confirmation
if($BL==1)
{
$page_validation = "Vous souhaitez ajouter votre adresse mail à notre blackliste. Cliquez <a href=\"".$_SERVER["PHP_SELF"]."?code=".$code."&BL=2\">ici</a> pour que vous puissiez confirmer.";
}
// Si l'utilisateur a confirmé qu'il veut être dans la liste noire, on l'y met
if($BL==2)
{
mysql_query("UPDATE membres SET level='blacklist' WHERE cle_activation ='$cle_activation' AND level='en_attente'");
$page_validation = 'Votre e-mail a été blacklisté. Vous ne receverez plus aucun e-mail de notre part.';
}
mysql_close();
}
echo "<p>".$page_validation."</p>";
}
?>

8 réponses

avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Tu ne peux pas utiliser la fonction header() lorsque un caractère a été envoyé (caractère avant "<?php" ou avec un echo)
1
Tunisieweb Messages postés 68 Statut Membre
 
J'ai copier/coller le code pour voir la ligne 257 mais je vois des commentaires.
Pouvez-vous s'il vous plait me faire copier/coller la ligne 257 ?
0
bitta Messages postés 59 Statut Membre
 
réponse pour "Tunisieweb",

effectivement j'avais supprimer quelques ligne des messages d'erreurs que j'affiche car mon code est très long:
voici la ligne demandé(257): header('Location:mail_validate.php?ok=i_email');
return false;

je vous remercie bcp pour votre réponse

réponse pour"avion-f16,
je suis d'accord mais dans mon code normalement je rentre dans la boucle de header si seulement si j'ai pas d'erreur donc pas d'echo et en plus le code html je l'appel dans la page inscription.php et pas dans verification.php.

si vous avez des remarques n'hésiter pas car je suis débutant en php

je vous remercie bcp aussi pour votre réponse
0
Tunisieweb Messages postés 68 Statut Membre
 
A ce que je vois jusqu'à présent le header est envoyé par la page 'haut_color.php' ce que vous permet pas de la renvoyer a nouveau. donc ca sera encore mieux de l'enlever.

Tu peux me dire aussi le pourquoi cette répétition :

header('Location:mail_validate.php?ok=i_email');
return false;
}
else
{
header('Location:mail_validate.php?ok=in_email');
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Si ta page est en UTF-8, vérifie qu'il n'y ait pas le BOM.
0
bitta Messages postés 59 Statut Membre
 
Réponse pour "Tunisieweb",

Tu peux me dire aussi le pourquoi cette répétition :

header('Location:mail_validate.php?ok=i_email');
return false;
}
else
{
header('Location:mail_validate.php?ok=in_email');

en fait c'est presque identique mais pas identique: Regarde la fin ce n'est pas pareil.
1 ère ligne: .... ok=i_email
2 ère ligne: .... ok=in_email

merci pour votre réponse
0
bitta Messages postés 59 Statut Membre
 
avion-f16,

Si ta page est en UTF-8, vérifie qu'il n'y ait pas le BOM.

est ce que vous pouvez m'expliquer un plus SVP?
UTF-8 et BOM?
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Dans Notepad++ : "UTF-8 sans BOM"
0