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 20/03/2006, 14h53   #1
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
Par défaut Mon header("Location: page.php"); ne fonctionne pa

Bonjour,

J'utilise le code suivant pour me connecter à une partie privée d'un site mais j'ai un problème au niveau de la redirection à la suite de l'authentification.

L'authentification fonctionne correctement mais la redirection qui devrait se faire avec la fonction header("Location: page.php"); mais ca ne fonctionne pas...

Voici la page en question :

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
<?php
session_start();
if (isset($HTTP_POST_VARS['user'])&& isset($HTTP_POST_VARS['pass'])){
	// Si l'utilisateur a essayé d'ouvrir une session
	$user = $HTTP_POST_VARS['user'];
	$pass = $HTTP_POST_VARS['pass'];
	//appel de la page de connexion à la base
	include("site_fns.php");
	//Connexion au serveur mySQL
  	$db_conn = db_connect();
  	mysql_select_db($cd_db, $db_conn);
   	//envoi de la requête destinée à savoir si la base de donnée contient un enregistrement qui correspond
  	$query = 'select * from cd_auth '
           	."where user = '$user' "
		   	." and pass = password('$pass')";
  	$result = mysql_query($query, $db_conn);
if (mysql_num_rows($result)>0) {
  // S'il est enregistré dans la base de donnée
  $HTTP_SESSION_VARS['valid_user']= $user;
  header("Location: index_adm.php");
 }
}
?>
<html>
<head>
<title></title>
</head>
<body bgcolor="#005BDD">
<br><br>
<table width="100%">
<tr>
<td align="center" bgcolor="#EFEEE7"><br><font face="Arial, Helvetica, sans-serif"><b>ACCES A LA PARTIE PRIVEE DU SITE<br></b></font><br><br></td>
</tr>
<tr>
<td height="20"></td>
</tr>
<tr>
<td  align="center" bgcolor="#ffffff">
<?
if (isset($HTTP_SESSION_VARS['valid_user'])) {
	echo '<br>Vous êtes connecté en tant que : <a href="index_adm.php" title="cliquer pour revenir sur votre compte">'.$HTTP_SESSION_VARS['valid_user'].'</a>'; 
}
else {
if (isset($user)) {
	// Si sa tentative d'ouverture de session a échoué
	echo 'Identifiant ou mot de passe incorrect.</font>';
}
else {
  	//L'utilisateur n'a pas de session ouverte
  	echo '<font Face="Arial" Size="2"><b>IDENTIFICATION</b></font><br><br>';
  	echo '<font face="Arial" Size="2"><b>Information de Session : </b>vous n\'êtes pas connecté.</font>';
}
}
echo '
<!--Affichage du formulaire d\'ouverture de session-->
<br><br>
<form method="post" action="auth.php">
	<table border="0">
		<tr>
			<td align="right"><font face="Arial" Size="2">Nom d\'utilisateur :</font></td>
			<td><input type="text" name="user"></td>
		</tr>
			<td align="right"><font face="Arial" Size="2">Mot de passe :</font></td>
			<td><input type="password" name="pass"></td>
		<tr>
			<td colspan="2" align="center"><input type="submit" value="Entrer"></td>
		</tr>
	</table>
</form>';
?>
</td>
</tr>
</table>
</body>
</html>
Merci de vos suggetions
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 14h59   #2
Rédactrice
 
Avatar de xave
 
Inscription : mai 2002
Messages : 860
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mai 2002
Messages : 860
Points : 824
Points : 824
Y a un message d'erreur quelconque ou rien, la page blanche?
__________________
Les règles du forum
Cours et tutoriels php
Développements web (CSS, (X)HTML,javascript, etc...)
Cours et tutoriels MySQL
Tutoriels Ajax
Initiation à PHP-GTK1


Il n'est point de bonheur sans liberté, ni de liberté sans courage. Péricles
xave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 15h00   #3
Membre éprouvé
 
Avatar de gofono_bass
 
Inscription : décembre 2005
Messages : 385
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : décembre 2005
Messages : 385
Points : 409
Points : 409
Salut,
Il y a une erreur qui s'affiche? laquelle?
sinon t'es sur que tu n'as rien envoyé avant le header()? par exemple dans ton include.

En passant, si tu as une version de php pas trop vieille, utilises plutot $_POST(et $_GET) et $_SESSION au lieu de $HTTP_POST_VARS et $HTTP_SESSION_VARS
__________________
mais pourquoi tu cours?
gofono_bass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 15h13   #4
Membre du Club
 
Avatar de Jimmy_S
 
Inscription : octobre 2005
Messages : 214
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 214
Points : 50
Points : 50
Edit : Trompé de topic ^^
Jimmy_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 15h15   #5
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
Citation:
Envoyé par Jimmy_S
Edit : Trompé de topic ^^
Tu aurais meme pu supprimer ton message en cliquant sur la ptite croix
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 15h21   #6
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
Code :
1
2
3
4
5
if (mysql_num_rows($result)>0) {
  // S'il est enregistré dans la base de donnée
  $HTTP_SESSION_VARS['valid_user']= $user;
  header("Location: index_adm.php");
 }
si tu ne rentres pas dans cette condition, c'est que la condition ne le permet pas... (donc, que ton utilisateur n'existe pas...)

Sinon, tu dois avoir une erreur qui te retourne une entete...

change ca:

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
session_start();
if (isset($HTTP_POST_VARS['user'])&& isset($HTTP_POST_VARS['pass'])){
	// Si l'utilisateur a essayé d'ouvrir une session
	$user = $HTTP_POST_VARS['user'];
	$pass = $HTTP_POST_VARS['pass'];
	//appel de la page de connexion à la base
	include("site_fns.php");
	//Connexion au serveur mySQL
	$db_conn = db_connect();
	mysql_select_db($cd_db, $db_conn) or die(mysql_error());
	//envoi de la requête destinée à savoir si la base de donnée contient un enregistrement qui correspond
	$query = "
		select 
			* 
		from 
			cd_auth 
		where 
			user = '".$user."' and 
			pass = password('".$pass."')";
	$result = mysql_query($query, $db_conn) or die("Erreur dans la requete.\n".mysql_error());
if (mysql_num_rows($result)>0) {
	// S'il est enregistré dans la base de donnée
	$HTTP_SESSION_VARS['valid_user']= $user;
	header("Location: index_adm.php");
	}
}
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 16h02   #7
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
En fait, j'ai testé et je rentre bien dans cette condition :

Code :
1
2
3
4
5
6
 
if (mysql_num_rows($result)>0) {
  // S'il est enregistré dans la base de donnée
  $HTTP_SESSION_VARS['valid_user']= $user;
  header("Location: index_adm.php");
 }
En fait, j'ai pas d'erreur qui s'affiche, l'utilisateur existe bien car en fait, je rentre également dans la condition suivante :
Code :
1
2
3
4
 
if (isset($HTTP_SESSION_VARS['valid_user'])) {
   echo '<br>Vous êtes connecté en tant que : <a href="index_adm.php" title="cliquer pour revenir sur votre compte">'.$HTTP_SESSION_VARS['valid_user'].'</a>';
}
Donc en cliquant sur le lien, j'accède bien à ma page protégée.
Par contre le header ne me redirige pas automatiquement vers cette page après authentification comme il devrait le faire.
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 16h07   #8
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
je comprends pas, si tu rentre dans le premier block logiquement tu ne rentres pas dans le second, puisque tu rediriges...

Tu rediriges sur la même page ?
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 17h04   #9
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
ca redirige pas, je sais pas pourquoi.

Et je redirige pas sur la même page bienentendu.

Mais théoriquement mon header est bien placé non ?
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 17h12   #10
Membre émérite
 
Avatar de Yobs
 
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 808
Points : 808
Envoyer un message via MSN à Yobs
Est ce que ton php est configuré pour afficher les erreurs?
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés
Yobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 17h15   #11
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
petite curiosité...
ta fonction db_connect(), elle renvoit quoi ?
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 19h15   #12
Membre du Club
 
Inscription : décembre 2004
Messages : 52
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 52
Points : 53
Points : 53
Envoyer un message via ICQ à Galak`
ne pas oublier le exit(); apres le header. J'ai déjà eu le cas ou la redirection ne se faisait pas à cause de son absence.
Galak` est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 22h34   #13
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
ok, je vais utiliser exit();

Pour répondre à la question de Sio_Sempai, db_connect estune fonction me permettant de mettre dans une page différente la connexion à la base.

Comme ca, je n'ai pas à répéter le sacrosaint mysql_connect('host','user','pass'); à chaque fois que je dois me connecter à la base.
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 23h17   #14
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
Salut

Je pense que Sion_Sempai voulait dire que tu as peut-être une erreur de connexion à ta base de données mais que tu ne la gères pas, ce qui laisse s'exécuter le reste de la page alors qu'il y a déjà eu une erreur.
Utilises-tu or die(mysql_error()) à la suite de mysql_connect(), mysql_select_db() et mysql_query() ?
__________________
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 23/03/2006, 23h42   #15
Invité de passage
 
Inscription : mars 2006
Messages : 1
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1
Points : 1
Points : 1
Bonjour,

Veiller à ce que du HTML ne soit pas généré avant l'instruction header(). Comme c'est correct à première vue, une piste a explorer me parait être la page appellée par la fonction include : site_fns.php
Controler si aucun HTML n'est généré dans cette page.Par exemple, même des sauts de ligne aprés le ?> final suffisent à causer l'erreur.

zh.
zhub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 09h32   #16
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
Salut,

La connexion à ma basede donnée est correct pour répondre à Kirkis.

Je vais explorer la piste de Zhub.

Merci
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 22h54   #17
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 125
Points : 35
Points : 35
Merci pour vos contributions.

Je viens de résoudre mon problème.
Flushovsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 23h49   #18
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
Citation:
Envoyé par zhub
Bonjour,

Veiller à ce que du HTML ne soit pas généré avant l'instruction header(). Comme c'est correct à première vue, une piste a explorer me parait être la page appellée par la fonction include : site_fns.php
Controler si aucun HTML n'est généré dans cette page.Par exemple, même des sauts de ligne aprés le ?> final suffisent à causer l'erreur.

zh.
Correction : ce sont les affichages avant le premier <?php qui peuvent poser problème, non ceux situés après le dernier ?>
__________________
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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h03.


 
 
 
 
Partenaires

Hébergement Web