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 18/02/2006, 19h24   #1
Invité régulier
 
Inscription : avril 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 15
Points : 6
Points : 6
Par défaut [Cookies] Problèmes de redirection

Bonjour tout le monde,
Je viens vers vous suite à un petit problème de connexion et de redirection ensuite.
Je m'explique, j'ai récupérer un script que j'ai adapté, le principe est classique, login, mot de passe et vérification dans la base de données mysql, si ok on continue sinon on est redirigé vers la page de login.
Bref, lorsque je test, j'obtien un jolie message de mon navigateur :

Citation:
Warning: Cannot modify header information - headers already sent by (output started at D:\SauvDocs\Mes sites web\RCM95\www\admin\templates\auth.php:38 ) in D:\SauvDocs\Mes sites web\RCM95\www\admin\templates\auth.php on line 55
Si j'ai bien compris, l'entête de la page a déjà reçu les infos et ne peut en recevoir d'autres.

je vous mets le script qui gére le contrôle et la redirection...
Si l'un d'entre vous y voit une erreur ou à une idée, je suis preneur.
Plizzz Help ^^

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
 
<?php
include "constant.php";
?>
<?php 
function MySQLDB(){
      /* Connection à la base */
      mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
      mysql_select_db(DB_NAME) or die(mysql_error());}
?>
<?php
function CheckUser(){
MySQLDB();
$name_query="select admin_login from admin where admin_login='".$login."' and admin_id='".$md5."'";
		$name_result=mysql_query($name_query) or die ('Explication :'.mysql_error());
		mysql_close();
		while($admin = mysql_fetch_array($name_result))
		{
$_SESSION['temp']=$admin['admin_login'];
}//fin while
if(isset($_SESSION['temp']))
{
return true;
}else{
return false;
}
}//fin function
?>
 
<?php
if(!isset($_POST['md5']))
{
  header("Location: ../login.php");
  die();
}
$md5=$_POST['md5'];
 
if(!isset($_POST['login']))
{
  header("Location: ../login.php");
  die();
}
$login=$_POST['login'];
 
if(!CheckUser($login,$md5))
{
  header("Location: ../login.php");
  die();
}
 
session_start();
 
$_SESSION['last_access']=time();
$_SESSION['ipaddr']=$_SERVER['REMOTE_ADDR'];
$_SESSION['user']=$login;
 
header("Location: ../page.php");
?>
Merci beaucoup à ceux qui pourraient m'aider.
mogway95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2006, 19h45   #2
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

N'y a-t-il pas une ligne vide au début du script ? C'est suffisant :/

[Edit] Si tu sors de PHP avec ?> et que tu y retournes ensuite avec <?php, alors cela te fait une sortie dans le navigateur également.
__________________
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 18/02/2006, 19h50   #3
Invité régulier
 
Inscription : avril 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 15
Points : 6
Points : 6
Salut

Tout d'abord, merci pour cette piste, je supprime la ligne vide de suite (y'en avait une) et si j'ai compris, il faut que je laisse seulement une balise ouvrante et une fermante. je teste et reviens pour donner des news ^^
mogway95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2006, 19h57   #4
Invité régulier
 
Inscription : avril 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 15
Points : 6
Points : 6
Alors là bravo !
je viens d'apprendre quelque chose d'important, je n'ai plus de messages d'erreur
par contre ma redirecion se fait par défaut sur le login.php, je dois avoir un problème dans ma tranmission des post, je vais chercher !
Merci encore !
mogway95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2006, 20h13   #5
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
Oh, tu peux faire ce que tu veux après l'appel à header(), il faut seulement ne rien envoyer au navigateur avant cet appel.
Sinon, d'une manière générale, il est préférable de ne pas entrer et sortir de PHP de cette manière car, le moment de se relire une fois venu (il vient toujours), on se demande à quoi ça sert...


Bonne suite
__________________
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 18/02/2006, 20h19   #6
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Et bien justement, en parlant de header, j'avais demandé il y a quelque jours pourquoi une condition if était possible avant d'initialiser un cookie avec setcookie, alors que comme pour les sessions, les cookies doivent être initialisés tout en haut d'une page.

ex:

Code :
1
2
3
4
if(isset($_POST['previsualiser']))
{
setcookie('pseudo', $_POST['pseudo'], time()+(3000000)) ;
;}
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2006, 00h13   #7
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
?

Ce doit être l'effet weekend : je n'ai pas bien saisi le rapport entre ton exemple et la fonction header().

Du moment que tu n'affiches rien au navigateur, tu peux mettre un appel à header() dans un if aussi.
__________________
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 05h15.


 
 
 
 
Partenaires

Hébergement Web