Bloquer un compte membre après un certain temps d'inactivité [Résolu]

A voir également:Bloquer un compte membre après un certain temps d'inactivitéCombien de temps facebook bloque un compte ✓ - Forum - Facebook Combien de temps dure l'examination de ma photo facebook ? ✓ - Forum - Facebook Bloquer mon compte instagram - Conseils pratiques - Réseaux sociaux Bloquer un compte facebook - Conseils pratiques - Facebook Wish a bloqué mon compte ✓ - Forum - Consommation et internet

Bonjour,

Je souhaiterai que les membres du site qui ne se sont pas connecté depuis un certain temps (3mois) soit temporairement bloqué. Un mail leur serait envoyé au moment du blocage pour qu'il puisse le débloquer.

Mon but est de faire une page qui réalise une boucle dans ma bdd où se trouve la date de la dernière connexion de chaque personne, fasse la différence entre auj et sa dernière connexion. Si ça fait plus que 100jours, ça change un chiffre dans la même bdd qui bloque le compte lors de la connexion.
Les codes ci-dessous calcule bien la différence mais je n'ai pas réussi à faire modifier l'information dans ma bdd. Si vous savez m'aider, je serais reconnaissant :)

PS: Lorsque j'ouvre la page comme elle est, je vois les jours d'inactivité mais rien ne se passe dans la bdd et pas d'erreur.

Voici mes codes:

  <?php     $host = 'db770114383.hosting-data.io';     $database = 'db770114383';     $username = 'dbo770114383';     $password = '';     try {         $dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);         $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);     } catch (PDOException $e) {         print "Erreur !: " . $e->getMessage() . "<br/>";         die();     } ?> <?php   function dateDiff($date1, $date2){     $host = 'db770114383.hosting-data.io';     $database = 'db770114383';     $username = 'dbo770114383';     $password = '';     try {         $dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);         $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);     } catch (PDOException $e) {         print "Erreur !: " . $e->getMessage() . "<br/>";         die();     }         $diff = abs($date1 - $date2);     $retour = array();       $tmp = $diff;     $retour['second'] = $tmp % 60;       $tmp = floor( ($tmp - $retour['second']) /60 );     $retour['minute'] = $tmp % 60;       $tmp = floor( ($tmp - $retour['minute'])/60 );     $retour['hour'] = $tmp % 24;       $tmp = floor( ($tmp - $retour['hour'])  /24 );     $retour['day'] = $tmp;    	     return $retour; }        $query = 'SELECT * FROM users WHERE autorisation="50" AND actif="0";';     try {     $reponse = $dbh->prepare($query);     $reponse->execute();     $NbreData = $reponse->rowCount();  // nombre d'enregistrements (lignes)     $rowAll = $reponse->fetchAll();     } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); } // -------------------------------- // affichage if ($NbreData != 0)  { ?>   <table border=1 width=70% align="center" cellspacing=0 cellpadding=1>   <thead>     <tr><th colspan="3"><h2 class="partie2">Les membres:</h2></th></tr>     <tr>       <th><h3>ID</h3></th>       <th><h3>Connexion</h3></th>       <th><h3>Différence</h3></th>       <th></th>     </tr>   </thead>   <tbody> <?php   // pour chaque ligne (chaque enregistrement)   foreach ( $rowAll as $row )    {     // DONNEES A AFFICHER dans chaque cellule de la ligne ?>     <tr>       <td><?php echo $row['identifiant']; ?></td>       <td><?php echo $row['connexion']; ?></td>       <td><?php  $now = time(); 				 $date2 = strtotime($row['connexion']); 				 print_r( dateDiff($now, $date2) );    			 	  ?></td>       <td><?php if ($retour['day'] > 100) {     echo 'Inactif  ';     $actif = '1';	     $ide = $row['identifiant']; 	$stmt = $dbh->prepare("UPDATE users SET actif=:actif WHERE identifiant=:identifiant");     $stmt->bindParam(':actif', $actif);     $stmt->bindParam(':identifiant', $ide);     $stmt->execute();           }?></td>     </tr> <?php   } } // fin foreach ?>   </tbody>   </table> 


Configuration: Windows / Firefox 70.0

Forum

A voir également:Bloquer un compte membre après un certain temps d'inactivitéCombien de temps facebook bloque un compte ✓ - Forum - Facebook Combien de temps dure l'examination de ma photo facebook ? ✓ - Forum - Facebook Bloquer mon compte instagram - Conseils pratiques - Réseaux sociaux Bloquer un compte facebook - Conseils pratiques - Facebook Wish a bloqué mon compte ✓ - Forum - Consommation et internet

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Il y a plus simple qu'une boucle....
Tu peux simplement faire ta requête UPDATE sur TOUS les utilisateurs qui ont leur date ''connexion''
inférieur à Aujourd'hui - 100 Jours

 UPDATE `users` SET actif= 1 WHERE connexion <= NOW() - INTERVAL 100 DAY 


Et au passage, vu que tu fais du PDO, active la gestion des erreurs PDO
Ainsi que l'affichage des erreurs PHP
et place CHAQUE requête dans un bloc TRY/CATCH

Je t'invite à lire ceci :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
et ça
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Reply
réponses:
  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour,
tu as négligé de nous indiquer si la ligne 85 affichait "inactif", ou pas.
il me semble que ton code calcule bien la différence, mais ne l'utilise pas.
ta ligne 84 est incorrecte, j'espère que tu auras un message d'erreur clair dès que tu auras appliqué les conseils de jordane45.
ajoute un

print_r($retour);
juste avant la ligne 84.

Reply
réponses:
  • auteur

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed