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 24/02/2006, 01h29   #1
Débutant
 
Inscription : février 2006
Messages : 136
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 136
Points : 16
Points : 16
Par défaut [Sécurité] session et redirection

Bonjour,
J'ai enfin réussit à me créer une BDD et un page pour une ouverture de session. Je ne connaissais rien au PHP avant hier et j'ai réussit, en glanant ça et là des infos à me monter une page ! Je suis plutôt content ! ENfin bref... il me reste encore quelques petites problèmes non résolus : j'ai donc construit ma page qui va vérifier que le login correspond bien avec le mot de passe que l'utilisateur a entré dans le formulaire et ensuite une page affiche "vous être bien logué !"
Ce que je voudrais maintenant c'est qu'une fois logué, l'utilisateur soit automatique redirigé vers son espace perso. J'ai trouve la commande | header ("location: http://monsite.fr"); | mais ça ne fontionne pas (cf. : ligne 28 du code) ! voici un bout du code pour mieux comprendre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1 <?
...
18  else {
19    session_start();
20    $_SESSION['pseudo'] = $pseudo;
21    echo $_SESSION['pseudo']; 
22    echo '<br> Vous êtes bien logué';
23    echo '<br> Maintenant direction <a href="http://www.google.fr">www.google.fr</a>';
24 header ("Location: http://google.fr");		
25 
26
27	// ici vous pouvez afficher un lien pour renvoyer
28    // vers la page d'accueil de votre espace membres
29  }   
30 }
31 else {
32  echo '<p>Vous avez oublié de remplir un champ.</p>';
33   include('login.htm'); // On inclut le formulaire d'identification
34   exit;
35 }
36 
37 ?>
-----------------
Vous voyez pourquoi ça ne marche pas ???
Voici l'erreur qui s'affiche quand je teste ma page :
Citation:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/sdc/b/f/monsite/php/sessions/login5.php:21) in /var/www/sdc/b/f/monsite/php/sessions/login5.php on line 24
Merci de votre aide qui ne pourrait m'être que bénéfique !
chouchouboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2006, 08h29   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Salut, essaie en mettant la ligne 24 (header...) entre les lignes 19 et 20. Ca donne quoi :
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2006, 09h16   #3
Rédacteur/Modérateur
 
Avatar de marcha
 
Homme Marc Chappuis
Développeur Web
Inscription : décembre 2003
Messages : 1 535
Détails du profil
Informations personnelles :
Nom : Homme Marc Chappuis
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2003
Messages : 1 535
Points : 2 206
Points : 2 206
La fonction header permet de fixer la valeur pour un header HTTP de
réponse. Dans le protocole HTTP, les headers sont envoyés avant le contenu. Par exemple, si le serveur retourne une page html:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
HTTP/1.1 200 OK
Date: Tue, 19 Dec 2000 15:32:13 GMT
Last-Modified: Sun, 10 Dec 2000 17:59:10 GMT
Content-Length: 770
Content-Type: text/html
 
<html>
<head>
<title>titre</title>
</head>
<body>
Hello
</body>
</html>
La fin des headers est marquée par une ligne vide, ensuite le contenu
de la page est envoyé.

La permière commande echo ou print produit du résultat de 'contenu'
et provoque l'envoi des headers HTTP avant. Donc si tu veux intervenir
au niveau des headers tu dois le faire avant d'envoyer du contenu comme
te la suggéré Nesmontou. Il faut notter aussi que tout ce qui est code html
avant l'ouverture du marqueur php <?php est du 'contenu' (même un
simple espace).

Si tu essaye d'intervenir au niveau des headers et que du contenu est
déjà produit tu obtient un message d'erreur "Headers already sent".
marcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2006, 09h25   #4
Membre habitué
 
Inscription : septembre 2005
Messages : 159
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 159
Points : 138
Points : 138
Envoyer un message via ICQ à narnou Envoyer un message via MSN à narnou
Le header est l'en-tete du fichier qui comprends plein d'infos le concernant, tels que son type, l'encodage, l'url (location) etc etc...

Le browser se sert donc du header pour savoir comment afficher les infos qu'il a recu.

Le fait est donc, qu'une fois que qqch est écrit dans la page, le header est fermé et envoyé, tu ne peux donc plus le modifier.

header("location: url") n'est donc utile que pour effectuer des redirections sur une page qui n'affiche rien (un long script qui gère une base de données par exemple, et redirige ensuite)


Si tu veux afficher qqch et puis rediriger apres quelques secondes il faut plutot te tourner vers le meta tag

Code :
1
2
 
<meta http-equiv="Refresh" content="4;url=http://www.domain.com/link.html">
Ou bien une fonction javascript sur un onload qui redirige avec un setInterval. Mais le meta est vachement plus simple
narnou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2006, 20h34   #5
Invité de passage
 
Inscription : février 2006
Messages : 1
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 1
Points : 1
Points : 1
Envoyer un message via MSN à Asturias
Tient pile poil ce que je recherchais!

Donc si j'ai bien compris quand on fais un header (redirection ou pas) Il ne peut pas être changé si on a deja envoyé un contenut mais par contre il n'est pris en compte qu'aprés le traitement du reste de la page!

Donc en gros si on a une page à rediriger on met le header tout de suite aprés session_start quoi qu'il arrive! Comma ça on est sur de pas avoir d'erreur? (Je sais pas pourquoi mais ça m'as l'air trop simple comme ça
)
Asturias 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 21h50.


 
 
 
 
Partenaires

Hébergement Web