Soucy avec une newsletters.php

Résolu
will.smith Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   -  
will.smith Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai suivi ce beau tuto pour crée une petite newsletter

http://www.siteduzero.com/tutoriel-3-32719-creer-un-systeme-de-newsletter.html

et voilà le mien en suivant trés bien les codes

http://coffre.alpha2gamma.com/newsletter/

donc le 1 er soucy c'est quand on met un mail et là on recoit bien un mail donc on clique sur le lien et aprés il demande de remettre un mail pour vérifié si on as bien rentré l'émail quand on as rentré la 1 fois et là il me dit vous n'avez pas rentré lke bon mail donc je pense il y as soucy du cooki

si quelqu'un peux m'aidé à le faire cette newsletter ça sera trés sympas de votre part

donc je remet tout les code du tutos pour savoir où ça viens mes soucis

donc j'ai mis dans ma table :

CREATE TABLE `newsletter` (
  `email` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
    <title>La newsletter de MonSite.fr</title>
</head>
<body>
 <?php
    if(isset($_GET['email'])) //on vérifie que la variable $_GET['email'] existe
    {
 
        if( !empty($_POST['email']) AND $_GET['email']==1 AND isset($_POST['new'])) /*on vérifie que la variable $_POST['email'] contient bien quelque chose, que la variable $_GET['email'] est égale à 1 et que la variable $_POST['new'] existe */
        {
        if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])) // on vérifie qu'on a bien rentré une adresse e-mail valide
        {
 
            if($_POST['new']==0) //si la variable $_POST['new'] est égale à 0, cela signifie que l'on veut s'inscrire
            {
 
            //on définit les paramètres de l'e-mail
            $email = $_POST['email'];
            $message = 'Pour valider votre inscription à la newsletter de MonSite.fr, <a href="http://coffre.alpha2gamma.com/newsletter/inscription.php?tru=1&amp;email='.$email.'">cliquez ici</a>.';
 
            $destinataire = $email;
            $objet = "Inscription à la newsletter de MonSite.fr" ;
 
            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From: monsite@monsite.fr' . "\r\n";
                if ( mail($destinataire, $objet, $message, $headers) ) //on envoie l'e-mail
                {
 
                echo "Pour valider votre inscription, veuillez cliquer sur le lien dans l'e-mail que nous venons de vous envoyer.";
                }
                else
                {
                echo "Il y a eu une erreur lors de l'envoi du mail pour votre inscription.";
                }
            }
            elseif($_POST['new']==1) //si la variable $_POST['new'] est égale à 1, cela signifie que l'on veut se désinscrire
            {
 
            //on définit les paramètres de l'e-mail
            $email = $_POST['email'];
            $message = 'Pour valider votre désinscription de la newsletter de MonSite.fr, <a href="http://coffre.alpha2gamma.com/newsletter/desinscription.php?tru=1&amp;email='.$email.'">cliquez ici</a>.';
 
            $destinataire = $email;
            $objet = "Désinscription de la newsletter de MonSite.fr" ;
 
            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From: monsite@monsite.fr' . "\r\n";
                if ( mail($destinataire, $objet, $message, $headers) ) 
                {
 
                echo "Pour valider votre désinscription, veuillez cliquer sur le lien dans l'e-mail que nous venons de vous envoyer.";
                }
                else
                {
                echo "Il y a eu une erreur lors de l'envoi du mail pour votre désinscription.";
                }
            }
            else
            {
            echo "Il y a eu une erreur !";
            }
        }
        else
        {
        echo "Vous n\'avez pas entré une adresse e-mail valide ! Veuillez recommencer !";
        }
        }
        else
        {
        echo "Il y a eu une erreur.";
        }
    }
    else // si les champs n'ont pas été remplis
    {
?>
La newsletter :
<form method="post" action="http://coffre.alpha2gamma.com/newsletter/index.php?email=1">
Adresse e-mail : <input type="text" name="email" size="25" /><br />
<input type="radio" name="new" value="0" />S'inscrire
<input type="radio" name="new" value="1" />Se désinscrire<br />
<input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" />
</form>
<?php
    }
?>
</body>
</html>


inscription.php

<?php
    if($_GET['tru']==1)
    {
 
    setcookie("email", $_GET['email'], time()+25); //on crée un cookie qui expirera 25 secondes plus tard pour des raisons de sécurité
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
    <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
 
<?php
    if($_GET['tru']==2)
    {
?>
    <meta http-equiv="refresh" content="1; url=http://coffre.alpha2gamma.com/newsletter/" /> <!-- Redirection vers la page d'accueil du site si on a entré son e-mail -->
 
<?php
    }
    else
    {
?>
 
    <meta http-equiv="refresh" content="25; url=http://coffre.alpha2gamma.com/newsletter/" /> <!-- Redirection vers la page d'accueil du site si on tarde trop à entrer son e-mail -->
 
<?php
    }
?>
 
    <title>Validation de votre inscription à la newsletter de MonSite.fr</title>
 
</head>
<body>
<p align="center"><font size="5">Validation de votre inscription</font></p>
<?php
    if($_GET['tru']==1) //si la variable $_GET['tru'] est égale à 1
    //on affiche le formulaire
    {
?>
<font color="red">Attention, vous avez 25 secondes pour remplir le formulaire. Passé ce délai, celui-ci ne sera plus validePassé ce délai, celui-ci ne sera plus valide.</font>
<form method="post" action="http://coffre.alpha2gamma.com/newsletter/inscription.php?tru=2">
Entrez votre e-mail : <input type="text" name="email" size="25" /><br />
<input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" />
</form>
<?php
    }
elseif($_GET['tru']==2) //sinon, si la variable $_GET['tru'] est égale à 2
    {
    mysql_connect("", "", "");
    mysql_select_db("");
    $email_mail = mysql_real_escape_string($_COOKIE['email']);
    $email_entre = mysql_real_escape_string($_POST['email']);
 
        if($email_entre==$email_mail) //si les deux adresses e-mail sont identiques
        {
        mysql_query("INSERT INTO newsletter VALUES('" . $email_entre . "')"); //on l'inscrit dans la base de données MySQL
 
        echo "Vous avez bien été inscrit à la newsletter de MonSite.fr ! Vous allez être redirigé dans 1 seconde.";
 
        }
        else
        {
 
        echo "Vous n'avez pas entré la bonne adresse e-mail !";
 
        }
    }
    else
    {
echo "Il y a eu une erreur.";
    }
?>
</body>
</html>


desinscription.php

<?php
    if($_GET['tru']==1)
    {
 
    setcookie("email", $_GET['email'], time()+25); //on crée un cookie qui expirera 25 secondes plus tard pour des raisons de sécurité
 
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
    <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<?php
    if($_GET['tru']==2)
    {
?>
 
    <meta http-equiv="refresh" content="1; url=http://coffre.alpha2gamma.com/newsletter/" /> <!-- Redirection vers la page d'accueil du site si on a entré son e-mail -->
 
<?php
    }
    else
    {
?>
 
    <meta http-equiv="refresh" content="25; url=http://coffre.alpha2gamma.com/newsletter/" /> <!-- Redirection vers la page d'accueil du site si on tarde trop à entrer son e-mail -->
 
<?php
    }
?>
    <title>Validation de votre désinscription de la newsletter de MonSite.fr</title>
</head>
<body>
<p align="center"><font size="5">Validation de votre désinscription</font></p>
 
<?php
    if($_GET['tru']==1) //si la variable $_GET['tru'] est égale à 1
    //on affiche le formulaire
    {
?>
<font color="red">Attention, vous avez 25 secondes pour remplir le formulaire. Passé ce délai, celui-ci ne sera plus valide.</font>
<form method="post" action="http://coffre.alpha2gamma.com/newsletter/desinscription.php?tru=2">
Entrez votre adresse e-mail : <input type="text" name="email" size="25" /><br />
<input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" />
</form>
<?php
    }
    elseif($_GET['tru']==2) //sinon, si la variable $_GET['tru'] est égale à 2
    {
    mysql_connect("", "", "");
    mysql_select_db("");
    $email_mail = mysql_real_escape_string($_COOKIE['email']);
    $email_entre = mysql_real_escape_string($_POST['email']);
 
        if($email_entre==$email_mail) //si les deux adresses e-mail sont identiques
        {
        mysql_query("DELETE FROM newsletter WHERE email='" . $email_entre ."'"); //on supprime l'adresse de la BDD
 
        echo "Vous avez bien été désinscrit de la newsletter de MonSite.fr ! Vous allez être redirigé dans 1 seconde.";
 
        }
        else
        {
        echo "Vous n'avez pas entré la bonne adresse e-mail !!";
        }
    }
    else
    {
    echo "Il y a eu une erreur.";
    }
?>
</body>
</html>


newsletter.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
    <title>Envoi de la newsletter</title>
    <style type="text/css">
            h2, th, td
            {
                text-align:center;
            }
            table
            {
                border-collapse:collapse;
                border:2px solid white;
                margin:auto;
            }
            th, td
            {
                border:1px solid black;
            }
        </style>
</head>
<body>
<p align=center><font size="6"><font color="red">Envoie de la newsletter</font></font></p>
 
<?php
// On se connecte
    mysql_connect("", "", "");
    mysql_select_db("");
 
// On récupère les 5 dernières news
$news = mysql_query('SELECT contenu,timestamp FROM news ORDER BY id DESC LIMIT 0, 5');
 
$fichier_message = '<html>
<head>
    <title>Newsletter de MonSite.fr</title>
</head>
<body bgcolor="black">
<font face="verdana"><font color="white"><font size="5"><p align="center"><font color="red"><u>Balzac61</u></font></p></font>
<font size="3">
<p align="left">Voici les dernières news de MonSite.fr :<br /><ul>'; //on définit le message
 
    while($donnee = mysql_fetch_assoc($news)) 
    {
    $fichier_message .= '<li>'.$donnee["contenu"].'(le'.date("D, d M Y H:i:s",$donnee["timestamp"]).')</li>'; //on ajoute les news au message
    }
 
$fichier_message .= '</ul></body>
</html>'; //on termine le message
 
 
//on récupère de la table newsletter les personnes inscrites
$liste_vrac = mysql_query("SELECT email FROM newsletter");
 
//on définit la liste des inscrits
$liste = 'monsite@monsite.fr';
    while ($donnees = mysql_fetch_assoc($liste_vrac))
    {
    $liste .= ','; //on sépare les adresses par une virgule
    $liste .= $donnees['email'];
    }
$message = $fichier_message;
$destinataire = 'monsite@monsite.fr'; //on adresse une copie à l'administrateur
 
$date = date("d/m/Y");
 
$objet = "Newsletter de MonSite.fr du $date"; //on définit l'objet qui contient la date
 
//on définit le reste des paramètres
$headers  = 'MIME-Version: 1.0' . '\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1' . '\r\n';
$headers .= 'From: monsite@monsite.fr' . '\r\n'; //on définit l'expéditeur
$headers .= 'Bcc:' . $liste . '' . '\r\n'; //on définit les destinataires en copie cachée pour qu'ils ne puissent pas voir les adresses des autres inscrits
 
    //on envoie l'e-mail
    if ( mail($destinataire, $objet, $fichier_message, $headers) ) 
    {
?>
Envoi de la newsletter réussi.
<?php
    }
    else
    {
?>
Échec de lors de l'envoi de la newsletter.
<?php
    }
?>
<br /><br /><u>Liste des inscrits :</u><br />
<table>
<tr>
<th>e-mail</th>
</tr>
<?php
 
$liste_inscrits_vrac = mysql_query("SELECT email FROM newsletter"); //on récupère la table newsletter en vrac
    while ($donnees = mysql_fetch_assoc($liste_inscrits_vrac))
    {
?>
 
<tr>
<td><?php echo ($donnees['email']); ?></td>
</tr>
 
<?php
    }
?>
</table>
</body>
</html>


merci de me dire pour quoi quand on remet l'émail pour vérifié si c'est bien celle du 1 er mail il me dit vque c'est pas le bon donc ça vien surement des cookies

merci de votre aide

2 réponses

will.smith Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   10
 
re il y aussi pour votre info il y as une érreur a la page newsletter

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\Coffre\newsletter\newsletter.php on line 42


merci de votre aide
0
will.smith Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   10
 
un up a l'aide on sait que vous êtiez en amoureux mais pensez au celibataire qui code du php lol
0