[RESOLU] Limité la $_SESSION avec les dates

Avatar du membre
Eléphanteau du PHP | 13 Messages

22 oct. 2020, 00:11

Bonsoir,

Je viens vers vous pour un nouveau soucis.

J'aimerai limité la connexion sur le site avec un système de Date avec les $_SESSION
En gros, dans la base de donnée j'ai une colonne type "date" avec une date supérieur à la date d'aujourd'hui et le but c'est qu'une fois la date devenue antérieur à celle d'aujourd'hui, empêche l'utilisateur d’accéder au contenus tant que la date est antérieur.

Il faudrait ajouter une permission dans les $_SESSION ?

Merci de prendre le temps de m'aider.

Cordialement,

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 oct. 2020, 00:25

le but c'est qu'une fois la date devenue antérieur à celle d'aujourd'hui, empêche l'utilisateur d’accéder au contenus tant que la date est antérieur.
Pas besoin de session à priori, il te suffit juste de comparer au début de chacun de tes pages si la date du jour est inférieure ou supérieure à ta date stockée, et le cas échéant, afficher la page ou un message d'erreur
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 13 Messages

22 oct. 2020, 06:35

Pas besoin de session à priori, il te suffit juste de comparer au début de chacun de tes pages si la date du jour est inférieure ou supérieure à ta date stockée, et le cas échéant, afficher la page ou un message d'erreur
Merci de venir en aide, j'ai oublié un détail. Chaque utilisateur à une date différentes (date d'inscription).
C'est quand même possible sans les fonctions $_SESSION ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 oct. 2020, 10:01

Tout dépend comment tu identifies tes visiteurs.
Si tu les identifies par une session, alors tu utiliseras une session, mais ce n'est pas pour faire ta vérification que tu as besoin de la session, c'est davantage pour gérer l'identification entre tes pages de ton visiteur.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 13 Messages

22 oct. 2020, 18:31

Tout dépend comment tu identifies tes visiteurs.
Si tu les identifies par une session, alors tu utiliseras une session, mais ce n'est pas pour faire ta vérification que tu as besoin de la session, c'est davantage pour gérer l'identification entre tes pages de ton visiteur.
D'accord, tu suggère quoi comme code du coup ?
Car je vois pas après différent essaie..

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 oct. 2020, 18:36

Qu'as-tu essayé ? Quels sont les messages d'erreur ?

Parce qu'à part un simple if() pour comparer 2 dates au format "Ymd" il n'y a normalement pas d'autres difficultés.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 13 Messages

23 oct. 2020, 07:12

Code : Tout sélectionner

<?php session_start(); if(!isset($_SESSION["auth"])){ header("Location: login.php"); exit(); } require('connect.php'); mysqli_select_db($con,"parametre"); $sql="SELECT abo FROM users"; $result = mysqli_query($con,$sql); while($row = mysqli_fetch_array($result)) { $date1 = date("NOW"); $date2 = $row["abo"]; if ($date2 > $date1) header("location:" . "index.php"); } ?>
Sauf que peux importe les dates que se sois inférieur ou supérieur sa m'affiche quand même le contenu de la page au lieu de le rediriger.

Merci de prendre du temps pour m'aider en tout cas :)


EDIT:
Et si je met le code comme ceci:

Code : Tout sélectionner

$date1 = date("Y-m-d");
Sa va me rediriger sur la page demander mais même si je suis supérieur ou inférieur à la date d’aujourd’hui.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

23 oct. 2020, 11:37

Fais un var_dump() de tes variables $date1 et $date2 pour vérifier que leur format est identique et comparable.
A nouveau ma recommandation est d'utiliser le format Ymd, et pas Y-m-d

Par ailleurs, si la date est différente pour chaque utilisateur, il est étrange que dans ta requête SQL tu ne mettes pas une clause WHERE pour sélectionner l'utilisateur connecté.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 13 Messages

23 oct. 2020, 19:04

Fais un var_dump() de tes variables $date1 et $date2 pour vérifier que leur format est identique et comparable.
A nouveau ma recommandation est d'utiliser le format Ymd, et pas Y-m-d

Par ailleurs, si la date est différente pour chaque utilisateur, il est étrange que dans ta requête SQL tu ne mettes pas une clause WHERE pour sélectionner l'utilisateur connecté.
Du coup, j'ai réussi avec ce code:

Code : Tout sélectionner

require('connect.php'); mysqli_select_db($con,"parametre"); $sql="SELECT abo FROM users"; $result = mysqli_query($con,$sql); while($row = mysqli_fetch_array($result)) { $date1 = date("Y-m-d"); $date2 = $row["abo"]; } if ($date2 <= $date1){ header("location:" . "index2.php"); }
Merci de m'avoir diriger vers la solution :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

23 oct. 2020, 19:47

Comparer des dates au format "Y-m-d", c'est audacieux !

Tant mieux si ça fonctionne, le transtypage automatique de PHP me surprendra toujours (et dans le bon sens cette fois-ci ! ) :-D
Quand tout le reste a échoué, lisez le mode d'emploi...