drebin78945
Messages postés15Date d'inscriptionmercredi 29 mars 2006StatutMembreDernière intervention11 avril 2006
-
1 avril 2006 à 14:25
sidf
Messages postés1216Date d'inscriptionmardi 20 décembre 2005StatutMembreDernière intervention18 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>
drebin78945
Messages postés15Date d'inscriptionmercredi 29 mars 2006StatutMembreDernière intervention11 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>