Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/03/2007, 09h06   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut [Cookies] Redirection Header qui ne fonctionne pas

Bonjour,

J'ai réalisé un script d'autentification à l'aide d'une condition logique.
Suivant les conditions j'aimerai faire une redirection avec la fonction Header.

Le soucie est que celle ci ne fonctionne pas, pourtant aucun code html est écrit avant cette fonction.

Auriez vous une idée ?

Voici la page :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
//Ouverture SESSION
session_start();
 
//connexion SQL
require_once('../mysql/connexion_sql.php');
 
//Récupération des variables du formulaire login.php
$login = $_POST["login"];
$password = md5($_POST["password"]);
 
//SQL : vérifie si le login et mot de passe est correcte
$request_user=mysql_query("SELECT * FROM technicien WHERE login = '$login' AND password = '$password'");
 
//Si login et mot de passe correct
if(mysql_num_rows($request_user)>0){
	$res_user=mysql_fetch_assoc($request_user); 
	$_SESSION['user_id']=$res_user['id'];
	$_SESSION['prenom_nom_technicien']=$res_user['prenom']." ".$res_user['nom'];
	$_SESSION['email']=$res_user['email'];
	$_SESSION['statut']=$res_user['statut'];
 
	//Redirection
	header('Location: ../index.php');
}
 
//Sinon afficher un message box pour dire que le login et le mot de passe sont incorrectes
else{
 
	?>
	<script language="javascript" type="text/javascript">
	alert( "Nom d'utilisateur ou mot de passe incorrect. Merci de réessayer." );
	</script>
	<?php
	//Redirection
	header('Location: ../index.php');
}
?>
Merci d'avance

Arnaud
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 09h14   #2
Membre éclairé
 
Avatar de TucSale
 
Inscription : novembre 2005
Messages : 265
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2005
Messages : 265
Points : 301
Points : 301
Envoyer un message via MSN à TucSale
bonjour,

Dans ton else tu affiche un script avant ton header. Ensuite donne nous l'erreur affichée s'il ta plait, s'il y en a pas dant ton php.ini

error_reporting = E_ALL
display_errors = On

Ca aide souvant a y voir plus clair
TucSale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 09h24   #3
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Oui pour le else, il y a un script, je me doutais que ca fonctionnerai pas pour ce cas. Je devrai surment faire une redirection en javascript pour ce cas là. Tu me conseils quoi ? Mais pour le 1er cas, ca ne fonctionne pas non plus.

Voici l'erreur pour le 1er cas :

Citation:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\hd\mysql\connexion_sql.php:11) in c:\program files\easyphp1-8\www\hd\login\verification.php on line 35
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 09h28   #4
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
et voila ma page "connexion_sql.php"

Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
   die('Impossible de se connecter : ' . mysql_error());
}
// Rendre la base de données helpdesk, la base courante
$db_selected = mysql_select_db('helpdesk', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
?>
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 11h14   #5
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
SI :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
else{
 
	?>
	<script language="javascript" type="text/javascript">
	alert( "Nom d'utilisateur ou mot de passe incorrect. Merci de réessayer." );
	</script>
	<?php
	//Redirection
	header('Location: ../index.php');
}
tu as du code javascript juste avant ton header , me semble que c est une raison d'echec !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 11h24   #6
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Oui ca je sais, et c'est normal que ca ne fonctionne pas. Pour cecas la j'ai fais une redirection JS.

Mais pour ce cas ci :

Code :
1
2
3
4
5
6
7
8
9
10
11
//Si login et mot de passe correct
if(mysql_num_rows($request_user)>0){
	$res_user=mysql_fetch_assoc($request_user); 
	$_SESSION['user_id']=$res_user['id'];
	$_SESSION['prenom_nom_technicien']=$res_user['prenom']." ".$res_user['nom'];
	$_SESSION['email']=$res_user['email'];
	$_SESSION['statut']=$res_user['statut'];
 
	//Redirection
	header('Location: ../index.php');
}
Je ne comprend pas trop le problème...
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 11h25   #7
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Code :
1
2
 
header('Location: "../index.php"');
A confirmer ^^
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 11h25   #8
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Le headers a deja ete envoyé par lse session_start() me semble - t - il donc erreur !

Sinon essaie la baslise html "<meta refresh>"
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h20   #9
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
tu trouveras plus d'explications sur cette erreur dans la FAQ :
http://php.developpez.com/faq/?page=...s_already_sent
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h58   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
session_start() prépare bel et bien un header mais n'envoie pas "les headers".
Ce que PHP entend par "headers already sent" est qu'ils ont été envoyés au navigateur. Lorsqu'on appelle une fonction qui utilise des headers, comme les fonctions de manipulation de cookies par exemple, on n'envoie pas réellement le header au navigateur : il est mis en cache par PHP jusqu'à ce que la page commence à être envoyée.

Scénario :
Code :
1
2
3
4
5
session_start(); // PHP sait qu'il devra envoyer un cookie
header('Location: index.php'); // PHP sait qu'il devra envoyer un header de redirection
header('Location: admin.php', TRUE); // PHP remplace le header précédent, ça tombe bien puisqu'il n'a pas été envoyé à proprement parler
 
echo 'test'; // Envoi de données, donc envoi préalable de tous les headers mis en cache
Concernant la redirection JS, regarde la FAQ PHP : on y explique quelles sont les redirections et laquelle est la meilleure.

Si PHP dit que des headers ont été envoyés, essaie de trouver lesquels. Au passage, il faut mettre exit; après essayer une redirection.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 09h19   #11
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
ok, ce que j'ai fais c'est que j'ai utiliser des redirections javascripts quand je ne pouvais pas faire grand chose...

Merci de votre aide.

Arnaud
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h38.


 
 
 
 
Partenaires

Hébergement Web