Fonction header redirection dans include

Résolu
drebin78945 Messages postés 15 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 11 avril 2006 - 1 avril 2006 à 14:25
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 - 1 avril 2006 à 16:35
Bonjour,

Cette section correspond super bien à mon cas!!!!

J'ai une page d'index unique sur mon site avec des variables d'url (index.php?pid= 21212 par exemple)

Sa structure est en gros la suivante dans l'ordre de haut dans en bas dans un tableau:

include $entete
include $login
include $corps

le probleme vient de login.php où j'ai un script php pour permettre aux utilisateur de se connecter, ou afficher le pseudo si l'utilisateur est connecté. jusque là tout va bien.

Le probleme est que cet include $login contient des header pour rediriger vers une page ou sont stockés les messages d'erreurs en cas d'echec d'authentification ou autre, lien du type index.php?pid=666&erreur=utilisateur_inconnu

si je tape ce lien directement dans mon navigateur localhost/index.php?pid=666&erreur=utilisateur_inconnu ca marche très bien.

Par contre quand j'appelle cette page en faisant reellement une erreur d'authentification, ca m'affiche le message classique " Warning : Cannot modify header information - headers already sent by" bla bla bla

Pourtant j'ai bien nettoyé mon code, ya pas de ligne vide ou quoi...

je comprend pas pourquoi!!!

Merci pour votre aide!!!

ps: je sais pas si on peut poster le code, je tente, j'espere que je vais pas me faire engueuler!!

le code de l'include $login :

<?php
if (isset($_POST['login'])){
$login = $_POST['login'];
$pass = md5($_POST['pass']);
// requete sur la table administrateurs
mysql_select_db($database, $lien);
$verif_query=sprintf("SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
$verif = mysql_query($verif_query, $lien) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);
if ($utilisateur) { // On test s'il y a un utilisateur correspondant
session_register("authentification"); // enregistrement de la session
$id_user = $row_verif['id_user'];
//-------------enregistrement de la connexion dans la BD-----------------------
$date = date("Y-m-d"); //la date de connextion
$time = date("G:i:s"); //l'heure de connextion
$ip = $_SERVER['REMOTE_ADDR']; //l'adresse ip de connextion
$requete = sprintf(" INSERT INTO connexion(ref_id_user, date_connex, time_connex, adresse_ip_connex)
VALUES('$id_user', '$date', '$time', '$ip')");
mysql_select_db($database, $lien);
mysql_query($requete, $lien) or die('Erreur SQL !'.$requete.''.mysql_error());
$id_connextion = mysql_insert_id();
//-------------------------------------FIN ENREGISTREMENT DE LA CONNEXTION----------------------------------------------------
if ($row_verif['statuts'] == 1){
header("Location:index.php?pid=166&erreur=session_bloquer"); // redirection si utilisateur si session bloqués
}
elseif($row_verif['statuts'] == 3){
header("Location:index.php?pid=166&erreur=session_non_valider"); // redirection si utilisateur session non valider
}
else{
// déclaration des variables de session
$_SESSION ['id_user'] = $id_user;
$_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
$_SESSION['nom'] = $row_verif['nom']; // Son nom
$_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
$_SESSION['login'] = $row_verif['login']; // Son Login
$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
$_SESSION ['mail'] = $row_verif['mail']; // son mail
$_SESSION ['tel'] = $row_verif['tel']; //son telephone fixe
$_SESSION ['portable'] = $row_verif['portable']; //son telephone portable
$_SESSION ['statuts'] = $row_verif['statuts'];
$_SESSION ['id_connex'] = $id_connextion; //enregistrement de l'id de conexion (compteur)
$_SESSION ['variable_divers'] = null; //permet de stocker une variable!!
//ouverture de la page d'accueil avec pop up
print " <script language='javascript'> location.replace ('index.php');</script>";
header("Location:/index.php");
/*print " <script>
fs=window.open('','','resizable,scrollbars=auto');
fs.blur();
fs.resizeTo(screen.width,screen.height);
fs.moveTo(0,0);
fs.location= 'index.php';
fs.focus();
</script>"; */
header("Location:index.php"); // redirection si OK //sans pop up
}
}
else {
header("Location:index.php?pid=166&erreur=login"); // redirection si utilisateur non reconnu
}
}
// GESTION DE LA Déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un "contexte" de déconnexion
$prenom = $_SESSION['prenom']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
session_unset("authentification");
header("Location:index.php?pid=166&erreur=delog");
}
?>
<html>

<form action="" method="post" name="connect" class="Style6">
<table width="94%" border="0" cellpadding="0" cellspacing="0">
----, </td>
S'inscrire,
&nbsp;,
&nbsp;,

----

,
,
,
,

</td>
</tr>
</table>

</form>

</html>

3 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
1 avril 2006 à 16:35
$requete = sprintf(" INSERT INTO connexion(ref_id_user, date_connex, time_connex, adresse_ip_connex)
VALUES('$id_user', '$date', '$time', '$ip')");

a mon avis ça vient de là pourquoi sprintf ??

$requete = "INSERT INTO connexion(ref_id_user, date_connex, time_connex, adresse_ip_connex)
VALUES('$id_user', '$date', '$time', '$ip')";
3
yanne1985 Messages postés 87 Date d'inscription samedi 14 janvier 2006 Statut Membre Dernière intervention 5 décembre 2008
1 avril 2006 à 14:37
vous avez la balie <script> avant header("Location : xxxxxxxxxxxxxxxx")

toujour header et placer avant les echo et les balises HTML
0
drebin78945 Messages postés 15 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 11 avril 2006
1 avril 2006 à 15:32
Merci pour la reponse.
J'ai supprimé ce script et ca ne fonctionne toujours pas. Mon code m'a l'air pourtant propre maintenant:

<?php
if (isset($_POST['login'])){ // execution apres envoi du formulaire
$login = $_POST['login']; // mise en variable du nom d'utilisateur
$pass = md5($_POST['pass']); // mise en variable du mot de passe crypté
// requete sur la table administrateurs (on récupère les infos de la personne)
mysql_select_db($database, $lien);
$verif_query=sprintf("SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
$verif = mysql_query($verif_query, $lien) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);
if ($utilisateur) { // On test s'il y a un utilisateur correspondant
session_register("authentification"); // enregistrement de la session
$id_user = $row_verif['id_user'];
//-------------enregistrement de la connexion dans la BD-----------------------
$date = date("Y-m-d"); //la date de connextion
$time = date("G:i:s"); //l'heure de connextion
$ip = $_SERVER['REMOTE_ADDR']; //l'adresse ip de connextion
$requete = sprintf(" INSERT INTO connexion(ref_id_user, date_connex, time_connex, adresse_ip_connex)
VALUES('$id_user', '$date', '$time', '$ip')");
mysql_select_db($database, $lien);
mysql_query($requete, $lien) or die('Erreur SQL !'.$requete.''.mysql_error());
$id_connextion = mysql_insert_id();
//-------------------------------------FIN ENREGISTREMENT DE LA CONNEXTION----------------------------------------------------
if ($row_verif['statuts'] == 1){
header("Location:index.php?pid=166&erreur=session_bloquer"); // redirection si utilisateur si session bloqués
}
elseif($row_verif['statuts'] == 3){
header("Location:index.php?pid=166&erreur=session_non_valider"); // redirection si utilisateur session non validé
}
else{
// déclaration des variables de session
$_SESSION ['id_user'] = $id_user;
$_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
$_SESSION['nom'] = $row_verif['nom']; // Son nom
$_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
$_SESSION['login'] = $row_verif['login']; // Son Login
$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
$_SESSION ['mail'] = $row_verif['mail']; // son mail
$_SESSION ['tel'] = $row_verif['tel']; //son telephone fixe
$_SESSION ['portable'] = $row_verif['portable']; //son telephone portable
$_SESSION ['statuts'] = $row_verif['statuts'];
$_SESSION ['id_connex'] = $id_connextion; //enregistrement de l'id de conexion (compteur)
$_SESSION ['variable_divers'] = null; //permet de stocker une variable!!
header("Location:index.php"); // redirection si OK //sans pop up
}
}
else {
header("Location:index.php?pid=166&erreur=login"); // redirection si utilisateur non reconnu
}
}
// GESTION DE LA Déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un "contexte" de déconnexion
$prenom = $_SESSION['prenom']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
session_unset("authentification");
header("Location:index.php?pid=166&erreur=delog");
}
?>
<html>

<form action="" method="post" name="connect" class="Style6">
<table width="94%" border="0" cellpadding="0" cellspacing="0">
----, </td>
S'inscrire,
&nbsp;,
&nbsp;,

----

,
,
,
,

</td>
</tr>
</table>

</form>

</html>
0
Rejoignez-nous