Désabonnement des commentaires

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
Nous allons créer une nouvelle page nommé "desabonnement.php" qui va donc permettre à l'utilisateur de se désabonner du sujet qu'il suit. Pour rappel, chaque notification envoyé contient un lien de désabonnement qui utilise l'adresse email de l'utilisateur et un identifiant et c'est grâce à cela que celui-ci va pouvoir se désabonner.
Comme d'habitude, on part du gabarit auquel on ajoute une balise "meta" en plus qui indique aux robots de ne pas indexer cette page.
<!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" lang="fr-fr">

<head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Désabonnement</title>
<meta name="Description" content="Désabonnement" />
<meta name="robots" content="noindex, nofollow" />
<link href="style.css" rel="stylesheet" type="text/css"/>

</head>

<body>

<div id="moncadre">
<?php include('menu.php');?>
<div class="cadrecentrale">
<h1>Désabonnement</h1>
<div class="cadre">

</div>
<?php include('footer.php');?>
</div>

</body>
</html>
Le code PHP suivant qui est à placer au dessus du "DOCTYPE" est relativement simple. On regarde si les 2 variables existent et si tel est le cas, on va cherche l'auteur du commentaire pour basculer le champ "suivre_sujet" de "Oui" à "Non". Si rien ne correspond en Bd ou que l'utilisateur à déjà effectué cette action, on l'informe.
<?php
include('fonctions.php');
include('connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
//Si les 2 variables existent
if(isset($_GET["contact"]) && isset($_GET["id"])){
    //On récupère les variables
    $adresse_email=htmlspecialchars(stripcslashes($_GET["contact"]));
    $id_commentaire=htmlspecialchars(stripcslashes($_GET["id"]));
    //On vérifie
    $verif = mysql_query("SELECT email,id FROM COMMENTAIRE WHERE id='".mysql_real_escape_string($id_commentaire)."' AND email='".mysql_real_escape_string($adresse_email)."' AND suivre_sujet='Oui' LIMIT 1");
    //Si la commande ne retourne aucun résultat, on crie ^^
    if(mysql_num_rows($verif) == 0)
    {
        $existe_pas = '<div class="erreur">Erreur! Soit la ressource demandé n\'existe pas, soit vous avez déjà effectué cette action!</div>';
    }
    //Tout va bien, on passe le champ "suivre_sujet" à "Non"
    else
    {
        $result = mysql_query("UPDATE COMMENTAIRE SET suivre_sujet='Non' WHERE id='".mysql_real_escape_string($id_commentaire)."' AND email='".mysql_real_escape_string($adresse_email)."'");
        //Si il y a une erreur, on crie ^^
        if (!$result) {
            die('Requête invalide : ' . mysql_error());
        }
        //Sinon tout va bien
        else{      
            $ok = '<div class="ok">La modification à été éffectué avec succès. Vous ne recevrez plus de réponse concernant ce sujet.</div>';
        }
    }
    //on ferme if(isset...
}
//Si erreur
else{
    $erreur = '<div class="erreur">Une erreur s\'est produit concernant le lien de désabonnement que vous avez reçut. Merci de renvoyer le mail dans son intégralité au webmaster.</div>';
}
?>
Pour finir, on affiche le résultat des variables sous <div class="cadre"> :
<?php
//On affiche les variables si besoin
if(isset($existe_pas)) echo $existe_pas;
if(isset($ok)) echo $ok;
if(isset($erreur)) echo $erreur;
?>

Voir/déposer un commentaire (0) | Signaler un problème