Sécuriser des pages web avec les sessions
Résolu/Fermé
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
-
7 oct. 2020 à 19:15
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 8 oct. 2020 à 19:32
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 8 oct. 2020 à 19:32
A voir également:
- Sécuriser des pages web avec les sessions
- Web office - Guide
- Supprimer des pages sur word - Guide
- Traduire une page web - Guide
- Adresse web - Guide
- Capture page web - Guide
5 réponses
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
346
Modifié le 7 oct. 2020 à 19:29
Modifié le 7 oct. 2020 à 19:29
Bonjour,
Ce que fais votre code actuellement c'est : si on est connecté, alors on redirige vers la page accueil.php. Mais rien n'empêche l'utilisateur d'aller directement sur la page accueil.php sans faire la vérification.
La solution c'est de faire la vérification directement dans la page d'accueil. Si on est connecté, alors on affiche la page, sinon on affiche une erreur ou on redirige vers une autre page.
Comme ça, l'utilisateur ne pourra pas afficher le contenu de accueil.php sans passer par la vérification qu'il est connecté. Évidemment, il faut faire cette condition sur toutes les pages qui necessite d'être connecté.
Ce que fais votre code actuellement c'est : si on est connecté, alors on redirige vers la page accueil.php. Mais rien n'empêche l'utilisateur d'aller directement sur la page accueil.php sans faire la vérification.
La solution c'est de faire la vérification directement dans la page d'accueil. Si on est connecté, alors on affiche la page, sinon on affiche une erreur ou on redirige vers une autre page.
Comme ça, l'utilisateur ne pourra pas afficher le contenu de accueil.php sans passer par la vérification qu'il est connecté. Évidemment, il faut faire cette condition sur toutes les pages qui necessite d'être connecté.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 oct. 2020 à 09:54
8 oct. 2020 à 09:54
Bonjour,
Dans ton fichier de connexion, tu créés deux variables de session
Ce sont ces deux variables ( ou à minima la userid) qu'il faut ensuite utiliser dans
tes autres fichiers.
Dans les fichiers pour lesquels tu veux restreindre l'accès, tu places, au début de ces fichiers
Dans ton fichier de connexion, tu créés deux variables de session
$_SESSION['username'] = $username; $_SESSION['userid'] = $dn['id'];
Ce sont ces deux variables ( ou à minima la userid) qu'il faut ensuite utiliser dans
tes autres fichiers.
Dans les fichiers pour lesquels tu veux restreindre l'accès, tu places, au début de ces fichiers
<?php // démarrage des sessions session_start(); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //récupération PROPRE des variables AVANT de les utiliser : $userid = !empty($_SESSION['userid']) ? $_SESSION['userid'] : NULL; $username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL; //on vérifie si les variables de session existent sinon on redirige vers la page de connexion if(!$userid || !$username ){ header("Location: bad.php"); exit(); } // ensuite... tu peux mettre la suite du code de ta page.... // .... // require du config require_once 'config.php';
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
Modifié le 8 oct. 2020 à 12:22
Modifié le 8 oct. 2020 à 12:22
Bonjour Jordane45
Merci pour ta réponse. j'ai fait comme tu as dit, ça a marche d'un côté et ça ne marche pas de l'autre. Qu'est ce que je veux dis? Quand un utilisateur tente de se connecter à une page sans se logger ça le ramène directement à la page de connexion (bad.php) comme je le veux. Mais quand un utilisateur s'est bien logger (avec le login et mot de passe correcte), quand il clique sur le lien de la page ou se trouve le code de restriction, ça le ramène encore sur la page de connexion (bad.php). Qu'est ce qui peut être à l'origine?
Fichier connexion.php
Fichier adduser.php
Merci pour ta réponse. j'ai fait comme tu as dit, ça a marche d'un côté et ça ne marche pas de l'autre. Qu'est ce que je veux dis? Quand un utilisateur tente de se connecter à une page sans se logger ça le ramène directement à la page de connexion (bad.php) comme je le veux. Mais quand un utilisateur s'est bien logger (avec le login et mot de passe correcte), quand il clique sur le lien de la page ou se trouve le code de restriction, ça le ramène encore sur la page de connexion (bad.php). Qu'est ce qui peut être à l'origine?
Fichier connexion.php
<?php //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $_SESSION['username'] = $username; $_SESSION['password'] = $password; $_SESSION['userid'] = $dn['id']; // require du config require_once 'config.php'; // récupération propre des variables avant de les utiliser $username = !empty($_POST['username']) ? $_POST['username'] : NULL; $password = !empty($_POST['password']) ? $_POST['password'] : NULL; // $password = !empty($_POST['password']) ? $_POST['password'] : NULL; //traitement du formulaire ... //On verifie si le formulaire a ete envoye if($username && $password) { //On echappe les variables pour pouvoir les mettre dans des requetes SQL if(get_magic_quotes_gpc()) // get_magic_quotes_gpc => Cette fonction est OBSOLÈTE à partir de PHP 7.4.0. Dépendre de cette fonction est fortement déconseillé. { $username = mysqli_real_escape_string(stripslashes($username)); $password = stripslashes($password); } else { $username = mysqli_real_escape_string($int,$username); } //On recupere le mot de passe de lutilisateur $req = mysqli_query($int,'select password,id from users where username="'.$username.'"'); $dn = mysqli_fetch_array($req); //On le compare a celui quil a entre et on verifie si le membre existe if($dn['password']==$password and mysqli_num_rows($req)>0){ //Si le mot de passe es bon, on ne vas pas afficher le formulaire $form = false; //On enregistre son pseudo dans la session username et son identifiant dans la session userid $_SESSION['username'] = $username; $_SESSION['userid'] = $dn['id']; if(($username=='A2I-Planning') and ($password=='A2Iplanning@2020')) { header("Location: accueil.php"); exit; // toujours mettre un exit apres une redirection }else{ // si tu n'es pas admin... tu dois faire quoi ?? echo "Pas admin !"; } } else { //Sinon, on indique que la combinaison nest pas bonne header("Location: bad.php"); exit; // toujours mettre un exit apres une redirection } } ?>
Fichier adduser.php
<?php // démarrage des sessions session_start(); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //récupération PROPRE des variables AVANT de les utiliser : $userid = !empty($_SESSION['userid']) ? $_SESSION['userid'] : NULL; $username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL; $password = !empty($_SESSION['password']) ? $_SESSION['password'] : NULL; //on vérifie si les variables de session existent sinon on redirige vers la page de connexion if(!$userid || !$username ){ header("Location: bad.php"); exit(); } else{ header("Location: adduser.php"); exit(); } // ensuite... tu peux mettre la suite du code de ta page.... // .... // require du config include('config.php'); ?>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 oct. 2020 à 15:19
8 oct. 2020 à 15:19
Si tu es déjà dans le script adduser.php ....
que viennent faire ici ces lignes ???
Je n'ai jamais mis de ELSE dans le code que je t'ai donné.... pourquoi en avoir ajouté ??!
que viennent faire ici ces lignes ???
else{ header("Location: adduser.php"); exit(); }
Je n'ai jamais mis de ELSE dans le code que je t'ai donné.... pourquoi en avoir ajouté ??!
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
8 oct. 2020 à 15:59
8 oct. 2020 à 15:59
effectivement tu n'a pas mis de else mais ça ne marche pas sans le else
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 oct. 2020 à 16:02
8 oct. 2020 à 16:02
Fais donc un var_dump de la variable $_SESSION et montre nous ce que ça donne...
Bien entendu, tu as mis un session_start dans chacune de tes pages...
Bien entendu, tu as mis un session_start dans chacune de tes pages...
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
8 oct. 2020 à 16:04
8 oct. 2020 à 16:04
Ah.. et les lignes
Sont a mettre après traitement de ta requête sql...
$_SESSION['username'] = $username; $_SESSION['password'] = $password; $_SESSION['userid'] = $dn['id'];
Sont a mettre après traitement de ta requête sql...
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
8 oct. 2020 à 17:05
8 oct. 2020 à 17:05
J'ai mis les session à var_dump mais c'est pareil.
Connexion.php
Fichier adduser.php
Connexion.php
<?php session_start(); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); var_dump($_SESSION['username'] = $username); var_dump($_SESSION['userid'] = $dn['id']); // require du config require_once 'config.php'; // récupération propre des variables avant de les utiliser $username = !empty($_POST['username']) ? $_POST['username'] : NULL; $password = !empty($_POST['password']) ? $_POST['password'] : NULL; //traitement du formulaire ... //On verifie si le formulaire a ete envoye if($username && $password) { //On echappe les variables pour pouvoir les mettre dans des requetes SQL if(get_magic_quotes_gpc()) // get_magic_quotes_gpc => Cette fonction est OBSOLÈTE à partir de PHP 7.4.0. Dépendre de cette fonction est fortement déconseillé. { $username = mysqli_real_escape_string(stripslashes($username)); $password = stripslashes($password); } else { $username = mysqli_real_escape_string($int,$username); } //On recupere le mot de passe de lutilisateur $req = mysqli_query($int,'select password,id from users where username="'.$username.'"'); $dn = mysqli_fetch_array($req); //On le compare a celui quil a entre et on verifie si le membre existe if($dn['password']==$password and mysqli_num_rows($req)>0){ //Si le mot de passe es bon, on ne vas pas afficher le formulaire $form = false; //On enregistre son pseudo dans la session username et son identifiant dans la session userid var_dump($_SESSION['username'] = $username); var_dump($_SESSION['userid'] = $dn['id']); if(($username=='A2I-Planning') and ($password=='A2Iplanning@2020')) { header("Location: accueil.php"); exit; // toujours mettre un exit apres une redirection }else{ // si tu n'es pas admin... tu dois faire quoi ?? echo "Pas admin !"; } } else { //Sinon, on indique que la combinaison nest pas bonne header("Location: bad.php"); exit; // toujours mettre un exit apres une redirection } } ?>
Fichier adduser.php
<?php // démarrage des sessions session_start(); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); var_dump($_SESSION['username'] = $username); var_dump($_SESSION['userid'] = $dn['id']); //récupération PROPRE des variables AVANT de les utiliser : $userid = !empty($_SESSION['userid']) ? $_SESSION['userid'] : NULL; $username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL; //on vérifie si les variables de session existent sinon on redirige vers la page de connexion if(!$userid || !$username ){ header("Location: bad.php"); exit(); } // ensuite... tu peux mettre la suite du code de ta page.... // .... // require du config require_once 'config.php'; ?>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
8 oct. 2020 à 17:09
8 oct. 2020 à 17:09
Tu n'as pas compris ce que je t'ai demandé... et visiblement tu ne connais pas grand chose au php...
donc, remets le code comme il était avant....
et ajoute, juste après le session_start();
la ligne
donc, remets le code comme il était avant....
et ajoute, juste après le session_start();
la ligne
var_dump($_SESSION);
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
8 oct. 2020 à 17:34
8 oct. 2020 à 17:34
ok, je l'ai fait mais toujours pareil
fichier adduser.php
Fichier connexion.php
fichier adduser.php
<?php // démarrage des sessions session_start(); var_dump($_SESSION); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $_SESSION['username'] = $username; $_SESSION['password'] = $password; $_SESSION['userid'] = $dn['id']; //récupération PROPRE des variables AVANT de les utiliser : $userid = !empty($_SESSION['userid']) ? $_SESSION['userid'] : NULL; $username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL; //on vérifie si les variables de session existent sinon on redirige vers la page de connexion if(!$userid || !$username ){ header("Location: bad.php"); exit(); } // ensuite... tu peux mettre la suite du code de ta page.... // .... // require du config require_once 'config.php'; ?>
Fichier connexion.php
<?php session_start(); var_dump($_SESSION); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $_SESSION['username'] = $username; $_SESSION['password'] = $password; $_SESSION['userid'] = $dn['id']; // require du config require_once 'config.php'; // récupération propre des variables avant de les utiliser $username = !empty($_POST['username']) ? $_POST['username'] : NULL ; $password = !empty($_POST['password']) ? $_POST['password'] : NULL ; //traitement du formulaire ... //On verifie si le formulaire a ete envoye if($username && $password) { //On echappe les variables pour pouvoir les mettre dans des requetes SQL if(get_magic_quotes_gpc()) // get_magic_quotes_gpc => Cette fonction est OBSOLÈTE à partir de PHP 7.4.0. Dépendre de cette fonction est fortement déconseillé. { $username = mysqli_real_escape_string(stripslashes($username)); $password = stripslashes($password); } else { $username = mysqli_real_escape_string($int,$username); } //On recupere le mot de passe de lutilisateur $req = mysqli_query($int,'select password,id from users where username="'.$username.'"'); $dn = mysqli_fetch_array($req); //On le compare a celui quil a entre et on verifie si le membre existe if($dn['password']==$password and mysqli_num_rows($req)>0){ //Si le mot de passe es bon, on ne vas pas afficher le formulaire $form = false; //On enregistre son pseudo dans la session username et son identifiant dans la session userid var_dump($_SESSION['username'] = $username); var_dump($_SESSION['userid'] = $dn['id']); if(($username=='A2I-Planning') and ($password=='A2Iplanning@2020')) { header("Location: accueil.php"); exit; // toujours mettre un exit apres une redirection }else{ // si tu n'es pas admin... tu dois faire quoi ?? echo "Pas admin !"; } } else { //Sinon, on indique que la combinaison nest pas bonne header("Location: bad.php"); exit; // toujours mettre un exit apres une redirection } } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
8 oct. 2020 à 18:26
8 oct. 2020 à 18:26
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
8 oct. 2020 à 19:32
8 oct. 2020 à 19:32
Est-ce que tu peux modifier ton fichier adduser comme ceci et nous montrer ce que ça t'affiche ?
<?php //----------------------------// //fichier adduser.php //----------------------------// // démarrage des sessions session_start(); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); /* FAUX ET ARCHI FAUX !! -- GROSSE ERREUR !! LA TU ECRASES LES VARIABLES !!!!! $_SESSION['username'] = $username; $_SESSION['password'] = $password; $_SESSION['userid'] = $dn['id']; */ //récupération PROPRE des variables AVANT de les utiliser : $userid = !empty($_SESSION['userid']) ? $_SESSION['userid'] : NULL; $username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL; //on vérifie si les variables de session existent sinon on redirige vers la page de connexion if(!$userid || !$username){ //header("Location: bad.php"); echo " UTILISATEUR NON CONNECTE ! "; echo "<pre>"; var_dump($_SESSION); echo "</pre>"; exit(); } // ensuite... tu peux mettre la suite du code de ta page.... // .... // require du config require_once 'config.php'; //JUSTE POUR VOIR SI TU ES CONNECTE.... echo " JE SUIS CONNECTE !!! "; ?>
7 oct. 2020 à 19:41
8 oct. 2020 à 09:07