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 04/07/2006, 00h58   #1
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
Par défaut Redirection header suite à variable session

Bonjour,

voilà je manipule depuis peu les sessions et si j'ai réussie a placer ma session start() au bon endroit, là je n'arrive pas à refaire ma rediretion du header que j'emploi depuis peu aussi.

Je vous présente mon code si jamais vous pouviez m'éclaircir, ca m'aiderait bien. Merci



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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?
session_start();
if (!isset($_SESSION[login])&&!isset($_SESSION[Pass])&&($loginOK=true;))
{
print"salut";
header("Location:http://monsite/Articles.php");
}
 
else
{
require_once("envsql.php");
 
if($_POST[soum]!="envoyer")
{
print"
<form action=\"MotPass.php\" method=POST>
    <table border=0 width=400 align=center>
    <tr>
     <td width=200><b>Votre login</b></td>
     <td width=200>
      <input type=text name=login>
     </td>
    </tr>
    <tr>
     <td width=200><b>Votre mot de passe<b></td>
     <td width=200>
      <input type=password name=pass>
     </td>
    </tr>
    <tr>
     <td colspan=3>
      <input type=submit name=soum value=envoyer>
     </td>
    </tr>
   </table>
   ";
   }
 
else
	{
	$connexion=mysql_connect($host, $login, $pass);
 
	if (!$connexion)
		{
		print"erreur de connexion";
		}
		else
			{
			$base=mysql_select_db($db);
 
			if(!$base)
				{
				print"erreur de connexion de la base de donnees";
				}
				else
					{
 
$requete="select motpass from $table where login='$_POST[login]';";
$result=mysql_query($requete);
$enreg=mysql_num_rows($result);
 
if($enreg<0)
{
print "rien a afficher";
}
 
else 
	{
	$tableau=mysql_fetch_array($result);
	$passecrypteB=crypt($_POST[pass], $tableau[motpass]);
 
	if($passecrypteB==$tableau[motpass])
	{
	$loginOK=true;
	$_SESSION[login]=$_POST[login];
	$_SESSION[pass]=$_POST[pass];
	print "Vous etes bien connecte<br>";
	print"<a href=GestionArticles1.php>GestionArticles1</a>";
	}
	else
		{
		print"Mauvais mot de passe, merci de recommencer<br>";
		}
	} 
 
}
}
}
 
}
 
?>
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 01h06   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Alors je te conseillerai de regarder ceci : Comment faire une redirection ?
Plus ceci : Explications et correction de l'erreur "headers already sent"

Et dans le cas que ca ne t'aiderait pas, fais une petite recherche dans le Forum Sécurité où cette question est souvent posée.

Si après tout ca, ca marche toujours pas viens nous en parler
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 01h09   #3
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 551
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 551
Points : 4 271
Points : 4 271
Je suppose que les Trois conditions doivent être remplies pour être redirigé vers la page Articles.php

Code :
1
2
3
4
5
6
if (isset($_SESSION[login])&&isset($_SESSION[Pass])&&($loginOK=true;))
{
print"salut";
header("Location:http://monsite/Articles.php");
}
et pas

Code :
1
2
3
4
5
6
 
if (!isset($_SESSION[login])&& !isset($_SESSION[Pass])&&($loginOK=true;))
{
print"salut";
header("Location:http://monsite/Articles.php");
}
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 01h12   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Pour compléter la remarque je dirais aussi qu'il y a deux erreurs (en rouge)

Code :
if (isset($_SESSION[login])&&isset($_SESSION[Pass])&&($loginOK=true;))
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 20h48   #5
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
Salut,

j'ai essayé pas mal de chose a commencer par modifier ma lige de test en mettant :

Code :
if (isset($_SESSION[login])&&isset($_SESSION[pass])&&($loginOK==true))
J'ai aussi tenté de faire appel au header avec un require_once.
J'ai mis des simples cotes dans mon adresse
J'ai virer mon print "salut" pour ne pas polluer
J'ai mis de balises php juste pour le test et réouvert pour le reste

Rien y fait ca redirige toujours pas.
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 20h58   #6
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
hop hop

une redirection vient de se faire en limitant mon test
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 21h02   #7
Membre du Club
 
Inscription : février 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 105
Points : 52
Points : 52
o lieu de marquer
Code :
header("Location:http://monsite/Articles.php");
test
Code :
header("Location:www.monsite/Articles.php");
moi comme ca ca fonctionne.
sinon il ne faut pas de code html avant un header

JJ
jj del amorozo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 21h11   #8
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
oui c'est bon ca marche a present en ayant mis cela
Code :
if (isset($_SESSION[login])&&isset($_SESSION[pass])&&($loginOK=true))
, par contre pour la suite, c'est bizarre.

-Finalement sur un même poste PC n'importe qui peut accéder à ma page puisque on ne redemande pas l'authentification, c'est tout de suite rediriger.

-Ensuite j'ai mis ca dans les pages que je veux protéger
Code :
1
2
3
<?
session_start();
?>
tout au début de ma page, et en effacant les cookies je parviens quand même à avoir accées

rahh et avec ca il inscrit dans mes sessions les mots de pass et le login de connexion a ma base auquel je fait apppel par require_once !!!
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 22h08   #9
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
Est ce que il impossible de préserver dans mes sessions le pass et le login d'un administrateur lorsque derriére j'ai un require_once qui récupére mes identifiants de connexion à ma base ?

et par ailleurs, quel est le code de test sur mes pages protégés à insérer. Je trouve trop d'infos qui n'ont pas l'air d'aller.
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 22h29   #10
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
BOn en faite j'avais les mêmes noms de variables dans mon include et mes variables de pass et login, j'ai changé les noms des variables et ca à l'air de permettre de préserver ce que je veux dans mes sessions du moins quand je fais un appel adapté.

me reste plus que le contrôle dans mes pages protégées.
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 23h03   #11
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
j'ai choisi de mettre cela dans mes pages protégées :

<?
session_start();
if(!(isset($_SESSION["lelogin"]))||($_SESSION["lelogin"]==''))
{
header("location:erreurs.php");
}
?>

Est ce que cela vous parait correcte est suffisant pour la sécurité ?

j'aurais préféré un truc comme ca mais ca protége pas :
[CODE]<?
session_start();
if (!isset($_SESSION[login])&&!isset($_SESSION[pass])&&($loginOK=false))
{
header("location:erreurs.php");
}
?>/CODE]
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 23h19   #12
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 551
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 551
Points : 4 271
Points : 4 271
Code :
1
2
3
4
5
session_start();
if (!isset($_SESSION[login])&&!isset($_SESSION[pass])&&($loginOK=false))
{
header("location:erreurs.php");
}

Code :
1
2
3
4
5
if (!isset($_SESSION[login]) ||!isset($_SESSION[pass])||($loginOK==false))
{
header("location:erreurs.php");
}
Tu n'as pas corrigé ces erreurs qui avaient été mentionnées dans le post de kerod plus haut.
Tu dois bien mettre == (comparaison) et pas un simple = (affectation)
et si tu mets !isset(..) tu dois utiliser l'opérateur || (ou) et pas (and)
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 00h16   #13
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 116
Points : 31
Points : 31
Merci

j'avais effectivement fini par mettre
Code :
if (!isset($_SESSION[login]) ||!isset($_SESSION[pass])||($loginOK==false))
pour mes pages protegées.

J'avais bien prie note des indications de Kerod mais en mettant (==) j'avais pas de redirection alors que un (=) me rediriger directement. J'ai remis le comparateur (==)

Tout semble aller correctement à présent. Bonne fin de soirée.
jive est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 01h01   #14
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 551
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 551
Points : 4 271
Points : 4 271
Oki doki. n'oublie pas de signaler signaler ton problème comme étant résolu
Mygale1978 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 13h40.


 
 
 
 
Partenaires

Hébergement Web