Cookie et redirection

Fermé
daggoon Messages postés 5 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 26 octobre 2008 - 25 oct. 2008 à 17:46
daggoon Messages postés 5 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 26 octobre 2008 - 26 oct. 2008 à 14:20
Bonjour,

J'ai un petit soucis avec mon cookie.
Quand on se connecte avec login et mot de passe sur la première page
un cookie est installé

setcookie("myusername", $_POST['myusername']);

J'ai un système d'authentification redirection. Ce qui veut dire que chaque membre a sa page perso, en plus de pages en commun.

problème, je ne veux pas que le membre 1 puisse voir la page perso du membre 2

sur la page perso de, chaque membre, j'ai mis :


<?php

if(empty($_COOKIE['myusername']))

{
header("location: index.php]");
}
else
{

?>


Evidemment, ca permet à chaque membre connecté d'aller sur toutes les pages perso. Comment faire ?

J'ai tenté

if(empty($_COOKIE['membre1']))

Impossible pour les autres membres d'aller sur la page perso du membre 1 mais le membre 1 ne peut se connecter et accéder à sa page perso.

J'espère que je suis clair et que vous pourrez m'aider.
Merci.

2 réponses

Salut,

Ta méthode n'ai franchement pas sur à vrai dire, une faille de sécurité.

Je connais pas l'espace membre que tu utilises, si c'est toi qui l'a fait ou pas, mais tu ferais bien de vérifier le cookie avant tout.

Par exemple, tu pourrais stocker une chaine aléatoire sur mysql, associé au nom de l'utilisateur et à la connexion, tu vérifies que la chaine de caractère contenu dans le cookies et la même que celle sur mysql.

Ensuite, tu donnes que très peu d'information à propos de ta page à protèger.

Je suppose qu'elle est basé sur l'id du membre, par exemple :
page_user.php?id=120

Dans ce cas, créé une session, fait une requete sql pour charger les infos de ton membre et stock tout le necessaire sur une session (l'id par exemple)

Ensuite, sur ta page tu mets :

<?php
if ($_SESSION['id'] == $_GET['id'])
{
// on affiche la page
} else {
// on appui sur la touche eject
}
0
daggoon Messages postés 5 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 26 octobre 2008
26 oct. 2008 à 14:20
Salut J'ai fait ce que tu m'as dit... créer une chaine aléatoire dans MYSQL. Mais ca ne régle pas mon problème. Quand un membre se connecte, que le cookie est installé, je veux qu'il accéde à sa page perso mais pas à celle des autres membres.

Voici ma page checklogin

<?php
$host="localhost";
$username="XXXXXXX";
$password="XXXXXX";
$db_name="XXXXXXX";
$tbl_name="membres";


$link=mysql_connect("$host", "$username", "$password")or die("connexion impossible");
mysql_select_db("$db_name")or die("impossible de se connecter à la base de données");


$myusername=$_POST['myusername'];
$mypassword= $_POST['mypassword'];

$encrypted_mypassword=md5($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query($sql,$link);

$count=mysql_num_rows($result);


if($count>0) {
$destination= mysql_result($result,$i,"destination");
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres))),1);
}

$result=mysql_query("update membres set id=\"$id\" where username=\"$myusername\" and password=\"$encrypted_mypassword\"",$link);

$requete = "SELECT id FROM $tbl_name WHERE username='$myusername' AND password='$encrypted_mypassword'";
$resultat = mysql_query($requete);
$ligne = mysql_fetch_array($resultat);
setcookie("id", $ligne["id"]);

header("location:$destination?id=$id");

}
else {
header ("location:erreur.php");
}

?>



Et voici la page d'un membre type:


<?php

if(empty($_COOKIE['id']))
{
header("location: index.php]");
}
else
{
?>


<?php

$host="localhost";
$username="XXXXXXX";
$password="XXXXXX";
$db_name="XXXXXX";
$tbl_name="membres";


$link=mysql_connect("$host", "$username", "$password")or die("connexion impossible");
mysql_select_db("$db_name")or die("impossible de se connecter à la base de données");

$result=mysql_query("select * from membres where id=\"$id\"",$link);


if(mysql_num_rows($result)==0)
{
header("Location:erreur.php");
}


?>


Comment faire pour que le membre1 accède uniquement à sa page perso et ne puisse pas voir la page perso des autres membres ?

Merci
0