Email auto après time(7j par exemple)

Résolu/Fermé
Utilisateur anonyme - 23 janv. 2018 à 00:27
 Utilisateur anonyme - 23 janv. 2018 à 17:54
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
A voir également:

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
23 janv. 2018 à 14:04

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 genre

CREATE 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 style
SELECT *
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
1
Utilisateur anonyme
23 janv. 2018 à 15:52
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 ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Utilisateur anonyme
23 janv. 2018 à 16:34
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();
}
0
Utilisateur anonyme
23 janv. 2018 à 17:54
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);
	}
}
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
23 janv. 2018 à 08:15
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

0
Utilisateur anonyme
23 janv. 2018 à 12:57
Je sais faire tout ça par miracle mais quel calcule faire pour avoir un bon résultat
0
Utilisateur anonyme
23 janv. 2018 à 12:59
Et comment vérifier automatique sans que l'utilisateur aille sur le site, genre un script qui tourne h24 ?
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
23 janv. 2018 à 13:19
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 :)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022
23 janv. 2018 à 13:50
Bonjour Exileur,
C'est en effet la réponse que je lui ai donné.... et que je vais désormais étoffé suite à ses réponses à mes questions.
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
23 janv. 2018 à 15:22
Hmm, limite, il y a même pas besoin de PHP.
Tout pourrait ce faire en bash.

Enfin a voir :)
0