Actualiser des informations sans ce déco de la session
Résolu/Fermé
anthopoki
Messages postés
5
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
22 mai 2020
-
21 mai 2020 à 07:53
jordane45 Messages postés 38446 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 février 2025 - 23 mai 2020 à 09:23
jordane45 Messages postés 38446 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 février 2025 - 23 mai 2020 à 09:23
A voir également:
- Actualiser des informations sans ce déco de la session
- Entrer les informations d'identification reseau - Guide
- Deco in paris avis ✓ - Forum Consommation & Internet
- Pour enregistrer ce texte au format txt sans perdre d’informations, quel codage utiliser ? l’€ est la monnaie officielle de la grèce, même sur l'île de μύκονος, à l’est d’athènes. ✓ - Forum Word
- Session invalide ou obsolète - Forum Consommation & Internet
- Les sites web peuvent garder la trace de votre navigation en déposant des sur votre ordinateur. en mode navigation , ces informations sont supprimées à la fermeture du navigateur. - Forum Logiciels
2 réponses
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 737
21 mai 2020 à 08:39
21 mai 2020 à 08:39
Bonjour,
Et bien
A l'ouverture de la page, tu fais un script qui va regarder en bdd la valeur de ban
et qui agit en fonction...
tu peux, par exemple :
Si ban = 1 :
- mettre à jour la variable de session correspondante
- rediriger vers la page de login ou autre...
Si ban = 0 :
- mettre à jour la variable de session
- poursuivre l'affichage de la page
Et bien
A l'ouverture de la page, tu fais un script qui va regarder en bdd la valeur de ban
et qui agit en fonction...
tu peux, par exemple :
Si ban = 1 :
- mettre à jour la variable de session correspondante
- rediriger vers la page de login ou autre...
Si ban = 0 :
- mettre à jour la variable de session
- poursuivre l'affichage de la page
anthopoki
Messages postés
5
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
22 mai 2020
Modifié le 21 mai 2020 à 08:59
Modifié le 21 mai 2020 à 08:59
Merci pour votre réponse rapide mais vous pourrez m'aider pour le code s'il vous plait ?
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 737
21 mai 2020 à 10:35
21 mai 2020 à 10:35
Ben...
Sans rien savoir sur la structure de la table... La façon dont tu crées ta variable de session.. ton code de connexion à la bdd... Impossible de t'aider...
Sans rien savoir sur la structure de la table... La façon dont tu crées ta variable de session.. ton code de connexion à la bdd... Impossible de t'aider...
anthopoki
Messages postés
5
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
22 mai 2020
>
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
21 mai 2020 à 16:03
21 mai 2020 à 16:03
Je vois, tu coup tu souhaiterais quoi comme page pour voir mes lignes de code ?
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 737
>
anthopoki
Messages postés
5
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
22 mai 2020
Modifié le 21 mai 2020 à 18:13
Modifié le 21 mai 2020 à 18:13
A minima le fichier de connexion de tes users...(avec le code php qui te permet de te relier à la bdd )
anthopoki
Messages postés
5
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
22 mai 2020
>
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
22 mai 2020 à 05:14
22 mai 2020 à 05:14
// mon code dans ma page connexion <?php session_start(); include 'src/data.php'; include 'src/cookie.php'; if (isset($_SESSION['nomrp'])) { header('location: ../'); } if (isset($_POST['submit'])) { $nomrp = htmlspecialchars($_POST['nomrp']); $password = sha1($_POST['password']); if ((!empty($nomrp)) && (!empty($password))) { $database = getPDO(); $requestUser = $database->prepare("SELECT * FROM user WHERE nomrp = ? AND password = ?"); $requestUser->execute(array($nomrp, $password)); $userCount = $requestUser->rowCount(); if ($userCount == 1) { if (isset($_POST['rememberme'])) { setcookie('nomrp',$nomrp,time()+365*24*3600,null,null,false,true); setcookie('password',$password,time()+365*24*3600,null,null,false,true); } $userInfo = $requestUser->fetch(); $_SESSION['id'] = $userInfo['id']; $_SESSION['nomrp'] = $userInfo['nomrp']; $_SESSION['admin'] = $userInfo['isadmin']; $_SESSION['registerdate'] = $userInfo['registerdate']; $succesMessage = 'Vous êtes maintenant connecté !'; header('refresh:1;url=...'); } else { $errorMessage = 'Vos informations sont incorrect !'; } } else { $errorMessage = 'Veuillez remplir tous les champs...'; } } // Code pour relier ma bdd <?php /** * Connexion à la base de données. */ function getPDO() { try { $pdo = new PDO('mysql:dbname=....;host='...., '.......', '.......'); $pdo->exec("SET CHARACTER SET utf8"); return $pdo; } catch (PDOException $e) { var_dump($e); } } function countDatabaseValue($connexionBDD, $key, $value) { $request = "SELECT * FROM user WHERE $key = ?"; $rowCount = $connexionBDD->prepare($request); $rowCount->execute(array($value)); return $rowCount->rowCount(); } ?> ?>
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 737
>
anthopoki
Messages postés
5
Date d'inscription
jeudi 21 mai 2020
Statut
Membre
Dernière intervention
22 mai 2020
22 mai 2020 à 09:17
22 mai 2020 à 09:17
Quelques remarques au passage...
htmlspecialchar ne s'utilise QUE pour de l'affichage. En aucun cas pour utiliser avec des requêtes SQL
Le SHA1 n'est plus sécurisé.
Si ta version de php est >5.6 tu dois désormais utiliser la fonction password_hash
Comme indiqué dans la documentation de php .. rowCount ne s'utilise pas sur une requête SELECT.
Ca ne doit servir que sur des requêtes INSERT ou UPDATE ou DELETE
Il n'est pas prudent de conserver le password dans un cookie (car facilement piratable)
Je ne vois pas de variable de session pour le BAN ...
De plus, ton code semble très proche (voir identique...) à celui de
https://forums.commentcamarche.net/forum/affich-36662910-donnes-dans-la-base-de-donnee-php
Tu pourrais donc utiliser une CLASS pour gérer tes users inspirée du code du lien que je viens de te donner.
Un truc du genre
Bien entendu, vu que tu es en PDO, il faut activer la gestion des erreurs dans la connexion à ta base
Applique les consignes données ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
$nomrp = htmlspecialchars($_POST['nomrp']);
htmlspecialchar ne s'utilise QUE pour de l'affichage. En aucun cas pour utiliser avec des requêtes SQL
$password = sha1($_POST['password']);
Le SHA1 n'est plus sécurisé.
Si ta version de php est >5.6 tu dois désormais utiliser la fonction password_hash
$userCount = $requestUser->rowCount();
Comme indiqué dans la documentation de php .. rowCount ne s'utilise pas sur une requête SELECT.
Ca ne doit servir que sur des requêtes INSERT ou UPDATE ou DELETE
setcookie('password',$password,time()+365*24*3600,null,null,false,true);
Il n'est pas prudent de conserver le password dans un cookie (car facilement piratable)
$_SESSION['id'] = $userInfo['id']; $_SESSION['nomrp'] = $userInfo['nomrp']; $_SESSION['admin'] = $userInfo['isadmin']; $_SESSION['registerdate'] = $userInfo['registerdate'];
Je ne vois pas de variable de session pour le BAN ...
De plus, ton code semble très proche (voir identique...) à celui de
https://forums.commentcamarche.net/forum/affich-36662910-donnes-dans-la-base-de-donnee-php
Tu pourrais donc utiliser une CLASS pour gérer tes users inspirée du code du lien que je viens de te donner.
Un truc du genre
<?php // Fichier user.class.php class user{ private $bdd; function __construct($bdd = null){ if(!empty($bdd)){ $this->bdd = $bdd; }else{ $this->bdd = getPDO(); } } public function getUserBynomrp($nomrp){ $sql = "SELECT nomrp FROM user WHERE nomrp = ? "; $datas = array($nomrp); try{ $prep = $this->bdd->prepare($sql); $prep->execute($datas); $res = $prep->fetchAll(); return $res; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } public function addUser($nomrp,$email,$mdp){ $sql = "INSERT INTO user(nomrp, Email, password,avatar) VALUES(?,?,?,?)"; /** // Si php > 5.6 $mdp = password_hash($mdp); */ //$mdp = sha1($mdp); // A changer par la ligne au dessus si version php compatible ! $mdp = password_hash($mdp,PASSWORD_DEFAULT); $datas = array($nomrp,$email,$mdp,""); try{ $prep = $this->bdd->prepare($sql); $res = $prep->execute($datas); $newId = $this->bdd->lastInsertId(); // Retourne le numero auto-incrément de la table pour l'enregistrement créé return array('new_id'=>$newId); }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } /** * Fonction permettant de vérifier si l'utilisateur existe en fonction de son login et password */ public function authentification($nomrp,$mdp){ $user = $this->getUserBynomrp($nomrp); //verifie qu'il n'y a bien qu'un seul user avec ce nomrp.. if(!empty($user) && count($user)==1){ $mdpBdd = $user[0]['password']; if (password_verify($mdp, $mdpBdd)){ return $user; }else{ return false; } } } /** * Permet de vérifier si un utilisateur est ban on pas * return (bool) true ou false */ public function isBan($nomrp){ $sql = "SELECT ban FROM user WHERE nomrp = ? "; $datas = array($nomrp); try{ $prep = $this->bdd->prepare($sql); $prep->execute($datas); $res = $prep->fetch(); $isBan = !empty($res['ban']) ? $res['ban'] : false; return $isBan; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } public function setBan($nomrp, $ban=0){ $sql = "UPDATE user SET ban = ? WHERE nomrp = ? "; $datas = array($ban,$nomrp); try{ $prep = $this->bdd->prepare($sql); $res = $prep->execute($datas); return $res; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } // Fin de la class user }
Bien entendu, vu que tu es en PDO, il faut activer la gestion des erreurs dans la connexion à ta base
Applique les consignes données ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs