Proteger mes page par des session!

Nouveau WRInaute
Je viens de créer un espace membre et j'ai pu intégrer les session pour les utilisateurs non authentifier d'accéder à mes pages privés. Le seul hic c'est que si un utilisateur est authentifié il lui est possible de modifier la valeur passée par GET dans url afin d'afficher le profil d'un autre utilisateur.

Je précise que je me suis servit de GET afin de pouvoir personnaliser les pages propres à chaque utilisateur. Comment empêcher tout utilisateur malveillant et protéger les profils des autres utilisateurs de toute intrusions.

EXEMPLE:
Un utilisateur authentifier est rediriger vers une page "acces.php?id=12" (il bénéficie déjà d'une session qui lui donne accès à tout les pages protégé part session) s'il change le paramètre id dans l'url à ""acces.php?id=20" il aura accès à une page qui ne lui appartiens pas comment éviter cette situation et protéger les autres users de tout « voyeurisme » :cry: . J’avoue que je suis à mes premiers pas à PHP et SQL.

Merci de m'aider à trouver des solutions.
 
WRInaute accro
Il ne faut absolument pas passer des variable en GET pour commencer (sauf des trucs qui ne sont pas critiques pour la fonction voulue).
Ensuite puisque que justement tu as les sessions activées sur le site tu peux très bien définir ta variable $_GET['id'] que tu passe en GET comme une variable de session $_SESSION['id'] qui restera donc sur le serveur et tu sera le seul a pouvoir la manipuler.

Pour faire simple avec ton histoire de profil, tu crée entre autre, une variable du style $_SESSION['Pofil_Id'] au moment du login et sur ta page "acces.php" au lien de lire la variable en GET tu prend celle de session que tu est le seul a avoir initialisé.
 
Nouveau WRInaute
merci pour tout ca mais serai t'il possible de me donner un apercu par un script g pense que'un explement sera la bien venu!

pour ma part voila comment g protege mes pages acces.php?id=xx

<?php
session_start();
if ((!isset($_SESSION['login'])) || (empty($_SESSION['login']))){
session_destroy();
header('Location: connexion.php');
exit();
}
?>

serai l'i possible que je procede autrement pour que cette session login ne soit valable que pour la page ou il l'id est en rapport avec le login en quection. j'y reflechie depuis plusieurs jours et ca commence par me choffer la tete car j'ai fait plusieurs tours sans avoir de solution.

dois-je faire:

<?php
session_start();
if ((!isset($_SESSION['id'])) && ($_SESSION['id] != $_GET['id'])){
session_destroy();
header('Location: connexion.php');
exit();
}
?>

c'est suffisant et coherant? $_GET sera t'il pris en charge en tout debut de page? par l'appel acces.phpid=xx
je crois que c'est un peu plus facile que ca vue que je donne deja la valeurs ç alouer à ma session. :cry: :?: :(
 
WRInaute accro
Il faudrait que tu montre le code ou tu défini ta variable "id" afin d'y insérer l’assignation et le code ou tu l'utilise pour te montrer comment changer ça.
Ça doit être deux scripts différents je pense.
 
Nouveau WRInaute
tout va bien j'ai trouver la soulution,

il me suffit d'utiliser la valeur de $_SESSION['login'] et l'associer à une variable afin de sortir tout les infor du membre dont je veux afficher la page. j'ai fai un echo de la variable session qui apparrer mais lorsque que je fait un print de ma requete j'ai pas le resultat du tableau je ne sais pas i il ya un probleme voici mon code de traiement en acceres pour avoirs les information de l'itilisateur en question

<?php
$login= $_SESSION['login'];
echo $login;
include "connectbd.inc.php"; // paramettres de connection à ma base de donné et de selection de tables
$sql= "SELECT *
FROM transfert
WHERE numcpte_tut = ".$numcpte_tut ;
$requete = mysql_query( $sql ) ;
$resultat = mysql_fetch_assoc($requete);
print_r ($resultat);
?>

porquoi j'ai pas de retour au niveau des info sur print_r
 
Nouveau WRInaute
tout va bien j'ai trouver la soulution,

il me suffit d'utiliser la valeur de $_SESSION['login'] et l'associer à une variable afin de sortir tout les infor du membre dont je veux afficher la page. j'ai fai un echo de la variable session qui apparrer mais lorsque que je fait un print de ma requete j'ai pas le resultat du tableau je ne sais pas i il ya un probleme voici mon code de traiement en acceres pour avoirs les information de l'itilisateur en question

<?php
$login= $_SESSION['login'];
echo $login;
include "connectbd.inc.php"; // paramettres de connection à ma base de donné et de selection de tables
$sql= "SELECT *
FROM users
WHERE login = ".$login ;
$requete = mysql_query( $sql ) ;
$resultat = mysql_fetch_assoc($requete);
print_r ($resultat);
?>

porquoi j'ai pas de retour au niveau des info sur print_r
sorry j'ai manqué quelque modif


zeb a dit:
Il faudrait que tu montre le code ou tu défini ta variable "id" afin d'y insérer l’assignation et le code ou tu l'utilise pour te montrer comment changer ça.
Ça doit être deux scripts différents je pense.
 
Nouveau WRInaute
j'ai zappé le id pour prendre la la variable de ma session login pour traiter ma requete afin d'avoir les information sur le membre qui se connecte.

richyzeus a dit:
tout va bien j'ai trouver la soulution,

il me suffit d'utiliser la valeur de $_SESSION['login'] et l'associer à une variable afin de sortir tout les infor du membre dont je veux afficher la page. j'ai fai un echo de la variable session qui apparrer mais lorsque que je fait un print de ma requete j'ai pas le resultat du tableau je ne sais pas i il ya un probleme voici mon code de traiement en acceres pour avoirs les information de l'itilisateur en question

<?php
$login= $_SESSION['login'];
echo $login;
include "connectbd.inc.php"; // paramettres de connection à ma base de donné et de selection de tables
$sql= "SELECT *
FROM users
WHERE login = ".$login ;
$requete = mysql_query( $sql ) ;
$resultat = mysql_fetch_assoc($requete);
print_r ($resultat);
?>

porquoi j'ai pas de retour au niveau des info sur print_r
sorry j'ai manqué quelque modif


zeb a dit:
Il faudrait que tu montre le code ou tu défini ta variable "id" afin d'y insérer l’assignation et le code ou tu l'utilise pour te montrer comment changer ça.
Ça doit être deux scripts différents je pense.
 
Discussions similaires
Haut