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

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    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
    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
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > 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
    2. 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
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. Utilisateur anonyme
       
      Je sais faire tout ça par miracle mais quel calcule faire pour avoir un bon résultat
      0
    2. Utilisateur anonyme
       
      Et comment vérifier automatique sans que l'utilisateur aille sur le site, genre un script qui tourne h24 ?
      0
    3. Exileur Messages postés 1621 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
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Exileur Messages postés 1621 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
    4. Exileur Messages postés 1621 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