Accès à une page 1 fois par jour par ip
Codeur61 Le 15 avril 2017 à 10:48 (Édité le 15 avril 2017 à 10:49)
6 = ( ! ) Notice: Undefined index: id in C:\wamp\www\givecashptc\pagerecepetion.php on line 616 =
( ! ) Notice: Undefined index: id in C:\wamp\www\givecashptc\pagerecepetion.php on line 16
Mon code :
<?php
<?php
session_start();
$bdd = new PDO('mysql:host=localhost;dbname=espace_membre' , 'root', '');
$q = $bdd->prepare("SELECT * FROM users WHERE id = ?");
$q->execute([$_SESSION['id']]);
$user = $q->fetch();
$q->closeCursor();
date_default_timezone_set('Europe/Paris');
setlocale(LC_TIME, 'fr');
if (isset($_SESSION['id']) && !is_null($user['last_visit']) && $user['last_visit'] == date('Y-m-d')) {
$_SESSION['alert'] = "Vous avez déjà visité cette page aujourd'hui. Revenez demain !";
header('Location: ./');
} else {
$q = $bdd->prepare("UPDATE membres SET last_visit = ? WHERE id = ?");
$q->execute([date('Y-m-d'), $_SESSION['id']]);
echo "Vous venez d'utiliser votre accès d'aujourd'hui. Vous ne pourrez pas revenir ici une fois la page quittée.";
?>
<!DOCTYPE html>
<html>
<head>
<title>Pub ip</title>
</head>
<body>
<font size="5"><p>Vous êtes arrivés sur la page des publicités. Vous ne pouvez la visiter qu'une seule fois par jour. </p></font>
</body>
</html>
<?php
}
?>
Codeur61 Le 15 avril 2017 à 11:03 (Édité le 1 janvier 1970 à 01:00)
Bon du coup je vais retourné en local pour finir ce topic.
Balatharas Le 15 avril 2017 à 14:07 (Édité le 15 avril 2017 à 14:12)
Au lieu d'upload ton site sur ton ftp testes ton code sur wamp c'est tout
Et puis ton lien vers la page limitée c'est une page en ligne alors forcément..
Pour afficher les erreurs descends vers user contributed notes avec ce lien http://php.net/manual/fr/pdo.setattribute.php
Fishing61 Le 15 avril 2017 à 16:33 (Édité le 1 janvier 1970 à 01:00)
J'ai réglé le prob du SSL....
Je suis retourné en local.
Mais sa comptabilise toujours la date du clique dans ma bdd mais l'utilisateur peut retourné dessus. 😈
Balatharas Le 17 avril 2017 à 12:29 (Édité le 17 avril 2017 à 12:30)
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Ensuite pour ta requête d'update de la date entoure la de ça:try {
// Ton update
} catch(Exception $e) {
echo 'Erreur: ', $e->getMessage(), "\n";
}
Codeur61 Le 17 avril 2017 à 13:57 (Édité le 17 avril 2017 à 15:58)
J'ai pas compris le mot "update" @Beignet . Je sais ce que ça veut dire mais j'ai pas compris ce que s'était dans mon code ?
Et le truc de la BDD je le mets dans ma pageenvoie.php et pagerecepetion.php. ?!
Merci !
Zbuu Le 18 avril 2017 à 04:28 (Édité le 1 janvier 1970 à 01:00)
$update = $bdd->prepare('UPDATE membres SET last_visit = ? WHERE id = ?');$update->execute([ date('Y-m-d'), $_SESSION['id'] ]);
Ta connexion à la base de donnée c'est ça :
$bdd = new PDO('mysql:host=xxxx;dbname=xxxx' , 'xxxx', 'xxxxxx');
Tu instancies et tape tes identifiants à la base de donnée sur chacun de tes fichiers php ? Pourquoi ne pas plutôt créer un fichier par exemple database.php et faire un require quand tu as besoin de récupérer quelques chose sur ta base de donnée ? Balatharas Le 18 avril 2017 à 19:19 (Édité le 1 janvier 1970 à 01:00)
try {
// Ton update
} catch(Exception $e) {
echo 'Erreur: ', $e->getMessage(), "\n";
}
Ce qui donne:try {
$update = $bdd->prepare('UPDATE membres SET last_visit = ? WHERE id = ?');
$update->execute([ date('Y-m-d'), $_SESSION['id'] ]);
} catch(Exception $e) {
echo 'Erreur lors de l'update de la bdd: ', $e->getMessage(), "\n";
}
Ensuite en dessous de la ligne de connexion à la bdd tu rajoutes:$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
Codeur61 Le 23 avril 2017 à 14:07 (Édité le 1 janvier 1970 à 01:00)
Codeur61 Le 28 avril 2017 à 18:51 (Édité le 1 janvier 1970 à 01:00)
Bon je test le code il y a de cela 30min, et malheureusement il ne marche toujours pas. Pourtant je pense avoir bien positionnée le code .... Bref ça m'embête .
Merci de vos réponses.
Bonne soirée.