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

Résolu
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
A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
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
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
 
Je sais faire tout ça par miracle mais quel calcule faire pour avoir un bon résultat
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention   150
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   150
 
Hmm, limite, il y a même pas besoin de PHP.
Tout pourrait ce faire en bash.

Enfin a voir :)
0