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 07/07/2008, 14h54   #1
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
Par défaut [Sécurité] la protection des pages par session ne marche pas

je n'arrive pas à securisé la page membre.php
voila mon code:
formulaire de connexion
Code :
1
2
3
4
5
<form Name="post"  action="connexion.php" method="post" onsubmit="javascript: return verification(this);" >
<pre>
<span class="Style6">Login</span>                           <span class="Style6">:</span> <input name="pseudo" size=25><br><br>
<span class="Style6">Mot de passe</span>                    <span class="Style6">:</span> <input type="password" name="password" size=25><br><br>
fichier connexion:
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
 
<?php
session_start();
 
require "include/db_connect.php";
 
 
 
	//if (isset($_POST['submit']))
	//{
		// bouton submit pressé, je traite le formulaire
 
	    $pseudo  = (isset($_POST['pseudo'])) ? htmlentities(trim($_POST['pseudo'])) : '';
	    $password   = (isset($_POST['password']))    ? htmlentities(trim($_POST['password']))   : '';
 
    if (($pseudo != '') && ($password != ''))
	{
		// Login et pwd non vides, on  vérifie s'il y a quelqu'un qui correspond
		$req_utilisateur = sprintf("SELECT
						email,
						prenom,
                        statut						
					FROM
						gx_user
					WHERE
			(pseudo = '".$_POST["pseudo"]."' AND pass ='".$_POST["password"]."');",$pseudo, md5($password));
		$utilisateur = mysql_query($req_utilisateur) or die($req_utilisateur."<br />\n".mysql_error());
 
		if (mysql_num_rows($utilisateur) == 1)
		{
			// Oui il y a quelqu'un ...
			$personne = mysql_fetch_array($utilisateur);
 
			// On  enregistre ses données dans la session
			$_SESSION['pseudo'] = $pseudo; // permet de vérifier que l'utilisateur est bien connecté
			$_SESSION['prenom'] = $personne['prenom'];
			$_SESSION['statut'] = $personne['statut'];
			$_SESSION['email'] = $personne['email'];
 
			// Maintenant que tout est enregistré dans la session, on redirige vers la page des photos
			//echo '<p>Vous êtes correctement identifié(e), <a href="liste-photos.php">cliquez ici pour visualiser les photos</a></p>'."\n";
			header("Location: membre/accueil.php");
            exit;
		}
        else
		{
		// Erreur dans le login et / ou dans le mot de passe ...
			echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
			echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
		}
 
    }
	else
	{
			// Erreur dans le login et / ou dans le mot de passe ...
			echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
			echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
 
	}
?>
fichier dont je doit interdire l'acces aux intrus
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
session_start(); // ici on continue la session
if ((!isset($_SESSION['pseudo'])) || ($_SESSION['pseudo'] == ''))
{
	// La variable $_SESSION['login'] n'existe pas, ou bien elle est vide
	echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
	echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
	exit();
}
?>
<html>
<body>
contenu de la page
</body>
</html>
que je clique sur lui directement il m'affiche "contenu de la page",alors qu'il devait me donner un msg et le lien pour pour se connecter ou b1 s'inscrire.
et merci
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 15h34   #2
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
deja essaye comme ca
j ai remarque aussi dans le sprintf de ta requete sql, il ya des choses qui ne vont pas, je presume que c'etait pour le debuggage que tu met directement les post, mais dans ce cas la il faut hasher le password en md5 avant




Citation:
Envoyé par timboy11 Voir le message
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
session_start(); // ici on continue la session
if ((!isset($_SESSION['pseudo'])) || ($_SESSION['pseudo'] == ''))
{
	// La variable $_SESSION['login'] n'existe pas, ou bien elle est vide
	echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
	echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
	exit();
}
else
{
echo <html>
<body>
contenu de la page
</body>
</html>";
}
?>
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h04   #3
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
je peux toujours y acceder par url sans taper mes identifiants
et si j'ai plusieurs pages à proteger de la meme façon,je c mieux d'utiliser
include,mais avec
Code :
1
2
3
4
5
6
7
8
9
10
 
else
{
echo <html>
<body>
contenu de la page
</body>
</html>";
}
?>
c impossible vu que je aurais "contenu de la page" dans toutes mes pages.
je te remercie
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h14   #4
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

Est-ce que tu as bien supprimé le cookie de session de ton navigateur ?
Parce que si tu t'es loggué une fois, il est normal que tu accèdes au contenu de la page, puisque ta session est toujours ouverte...

En plus de "contenu de la page", pour en avoir le cœur net, tu peux afficher le contenu de $_SESSION :
Code :
1
2
3
4
<?php
echo "<pre>";
var_dump($_SESSION);
echo "</pre>";
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h25   #5
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
ce ce que j'ai cru au debut,mais peu importe ça marche maintenant,
je vous remercie pour votre aide Eusebe et chtipitou.
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h29   #6
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
j'ai essayer avec deconnexion,mais elle marche pas,elle ne detruit pas la session
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
// Déconnexion
if ((isset($_GET['act'])) && ($_GET['act'] == 'logout'))
{
	$_SESSION = array();
	session_destroy();

	// on relance une session pour une éventuelle reconnexion
	session_start();
};
Code :
1
2
3
4
5
6
7
8
 
<html>
<body>
<p><a href="login.php?action=logout" title="Déconnexion">Se déconnecter</a></p>
 
contenu de la page
</body>
</html
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h48   #7
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Tu passes à ta page le paramètre "action", et tu testes le paramètre "act"...
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h54   #8
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
dsl mais j'ai pas compris ce que tu veux dire

le deuxieme code est situé ds une page privé,et quant je cique sur deconnxion
il m'envoi vers l'index,mais si je clique sur precedent,je constate qu'il n'a r1 detruit,et que je peux acceder à la page.
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 17h29   #9
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
j'ai trouvé ça "session.auto_start = 0" dans mon php.ini

c peut etre la source du probleme,j'ai lu ça qlq part
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 17h42   #10
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
Code :
login.php?action=logout
Code :
if ((isset($_GET['act'])) && ($_GET['act'] == 'logout'))
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 17h50   #11
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
j'ai corrigé ce que tu m'a montré mais r1,
mais j'ai trouvé la solution
fichier deconnexion.php
Code :
1
2
3
4
5
6
7
8
<?php
session_start();
// Déconnexion
session_destroy();
header('Location: login.php');

?>
le fichier à proteger
Code :
1
2
 
<a href="../deconnexion.php">w&lt;x&lt;wx</a></p>
merci beaucoup
timboy11 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 03h59.


 
 
 
 
Partenaires

Hébergement Web