Fonction header redirection dans include [Résolu]

Messages postés
15
Date d'inscription
mercredi 29 mars 2006
Dernière intervention
11 avril 2006
- 1 avril 2006 à 14:25 - Dernière réponse :
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
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>
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 1 avril 2006 à 16:35
3
Merci
$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')";

Merci sidf 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de sidf
Messages postés
87
Date d'inscription
samedi 14 janvier 2006
Dernière intervention
5 décembre 2008
- 1 avril 2006 à 14:37
0
Merci
vous avez la balie <script> avant header("Location : xxxxxxxxxxxxxxxx")

toujour header et placer avant les echo et les balises HTML
Commenter la réponse de yanne1985
Messages postés
15
Date d'inscription
mercredi 29 mars 2006
Dernière intervention
11 avril 2006
- 1 avril 2006 à 15:32
0
Merci
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>
Commenter la réponse de drebin78945

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.