Accès à une page 1 fois par jour par ip

Codeur61

Codeur61 Le 15 avril 2017 à 10:48 (Édité le 15 avril 2017 à 10:49)

J'ai une erreur à la ligne 6 et 16. 
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

Codeur61 Le 15 avril 2017 à 11:03

Je dois avoir un problème avec mon http et https en faite quand je mets www.adressedemonsite.com/pagerecepetion.php sa me mets https://www.givecashptc.com/ et je peux plus accéder à celui ci ! :( . SSL qui merdouille. Grrrrrrr !
Bon du coup je vais retourné en local pour finir ce topic. 
Balatharas

Balatharas Le 15 avril 2017 à 14:07 (Édité le 15 avril 2017 à 14:12)

Mais c'est moi ou tu testes ton code en ligne ??
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

Fishing61 Le 15 avril 2017 à 16:33

Oui, je ne sais pas pourquoi d'ailleurs ! :P C'est n'importe quoi de faire ça.
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. 😈
Codeur61

Codeur61 Le 16 avril 2017 à 20:50 (Édité le 16 avril 2017 à 20:51)

Up please ( joyeuse paques ! 😉)
Balatharas

Balatharas Le 17 avril 2017 à 12:29 (Édité le 17 avril 2017 à 12:30)

Ajoute ça dans le fichier de connexion a la bdd
$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

Codeur61 Le 17 avril 2017 à 13:57 (Édité le 17 avril 2017 à 15:58)

Salut, 
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

Zbuu Le 18 avril 2017 à 04:28

Ta requête d'update c'est ça : 
$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

Balatharas Le 18 avril 2017 à 19:19

Donc tu met ça autour de ta requête:
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

Codeur61 Le 23 avril 2017 à 14:07

d'accord, excuse moi pour ma réponse tardive. J'ai un prob avec mon ordi du coup je pense pouvoir testé cela se soir ou demain. Enfin, je sais pas trop mais merci pour vos réponses !
Codeur61

Codeur61 Le 28 avril 2017 à 18:51

Salut et désolée pour mon absence @Beignet. (problème technique)

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.
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte