Email auto après time(7j par exemple)
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voila je voudrai envoyé un mail automatiquement après une non connexion depuis 7j par exemple,
je ne sais pas trop par ou commencer
Voila je voudrai envoyé un mail automatiquement après une non connexion depuis 7j par exemple,
je ne sais pas trop par ou commencer
2 réponses
-
Je sais faire tout ça par miracle mais quel calcule faire pour avoir un bon résultat
De quels calculs parles tu ?
Si tu as stocké les connexion en BDD ... il te suffit de faire une requête pour récupérer les personnes non connectés depuis au moins 7 jours.
Par exemple .. si tu as une table pour gérer les connexions de ce genreCREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nom` varchar(50) DEFAULT NULL, `lastconnexion` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; DELETE FROM `users`; /*!40000 ALTER TABLE `users` DISABLE KEYS */; INSERT INTO `users` (`id`, `nom`, `lastconnexion`) VALUES (1, 'J', '2018-01-23 13:55:20'), (2, 'T', '2018-01-15 13:55:20'), (3, 'X', '2018-01-03 13:55:20'), (4, 'Y', '2017-01-03 13:55:20');
Alors la requête pour récupérer ceux qui ne se sont pas connecté depuis au moins 7 jours serait du styleSELECT * FROM users U WHERE U.lastconnexion < NOW() - INTERVAL 1 WEEK
Pour le reste .. tu nous dis savoir le faire.. donc ça devrait aller...
Quoi qu'il en soit, si tu désires plus d'aide... il faudra revenir nous voir avec :
1 - La structure de ta table
2 - Le code que tu auras commencé à réaliser
-
Voilà pour insérer j'ai tout simplement fais :
last.php$id = $_SESSION['id']; $requser = $bdd->prepare("UPDATE membres SET last_connection = NOW() WHERE id = ?"); $requser->execute(array($id))
check.php
Mais pour check je bug sur un truc :$requser = $bdd->prepare("SELECT * FROM membres WHERE last_connection < NOW() - INTERVAL 1 WEEK"); $requser->execute(array());
Je met quoi dans le array ?- ben tu ne mets rien..
Au passage .. si je ne te l'ai pas déjà dit ... applique ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
$sql = "SELECT * FROM membres WHERE last_connection < NOW() - INTERVAL 1 WEEK"; $datas = NULL; // ou si tu as des variables à passer : $datas = array(':variable'=>'unevaleur',':variableN'=>'uneautrevaleur') try{ $requser = $bdd->prepare($sql); $requser->execute($datas); }catch(Exception $e){ echo " Erreur : ".$e->getMessage(); }
-
Du coup j'ai un peu tout changé :
$membres = $bdd->query('SELECT * FROM membres WHERE last_connection < NOW() - INTERVAL 1 WEEK');
while($m =$membres->fetch()) { $id = $m['id']; $day_7 = $m['day_7']; $pseudo = $m['pseudo']; $recup_mail = $m['mail']; if($day_7 == 0) { $update_day_7abs = $bdd->prepare('UPDATE membres SET day_7 = 1 WHERE id = ?'); $update_day_7abs->execute(array($id)); mail($recup_mail, "Vous nous manquez - amnexia.fr", $message, $header); } }
-
-
Déjà
Comment stockes tu les dates de connexions ? En bdd ?
Si oui sais tu écrire la requête qui te liste les personnes non connectées depuis 7 jours ?
Ensuite... Sais tu envoyer des mails en php ?
Et enfin... Serts toi des crons pour la mise en œuvre
-
-
-
Salut,
Il te faudra un CRON qui appel un script PHP (tous les Xsec/min/heure) exemple check_last_connection.php
Ce fichier devra contenir les requetes SQL et les calcules permettant de vérifier que l'utilisateur c'est connecté il y a moins de 7 jours sinon, on lui envoie un mail avec la fonction PHP https://www.php.net/manual/fr/function.mail.php
A plus :) -
-