L'admin répond aux 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 à présent créer une page nommé "repondre-commentaire.php" qui va permettre à l'administrateur de répondre aux commentaires directement depuis l'administration. Cette page ressemblant beaucoup à la page permettant la modification et validation des commentaires et étant largement commenté, nous allons pour une fois nous passer de détails.
<?php
session_start();
$IsAuthorized = true;
include('../fonctions.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" lang="fr-fr">

<head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Réponse au commentaire</title>
<link href="style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../ckeditor/ckeditor.js"></script> 

</head>

<body>

<div id="moncadre">

<?php include('menu.php');?>

<div class="cadrecentrale">

<h1>Réponse au commentaire</h1>

<?php
//on récupère les variables qui transites par l'url
$id_transmit=$_GET['id'];
$id_page=$_GET['page'];
$pseudo_transmit=$_GET['pseudo'];
/*$statut permet d'indiquer que c'est la première fois que ce commentaire est validé (même si ce n'est pas vrai) et donc d'envoyer un mail aux abonnés du sujet.
L'admin peut donc répondre autant de fois qu'il veut à un même commentaire tout en prévenant les abonnés du sujet.*/
$statut="";

//On se connecte à la base de données
include('../connexion_bd.php');
connexion_bd();

//On va chercher les informations sur la pages à qui appartient le commentaire
$infopage = mysql_query("SELECT id_categorie,titre,titre_rewrite FROM CONTENU WHERE id='".mysql_real_escape_string($id_page)."'");
while($afficheinfopage = mysql_fetch_array($infopage))
{
	$id_categorie=$afficheinfopage['id_categorie'];
	$titre_article=$afficheinfopage['titre'];
	$url_article=$afficheinfopage['titre_rewrite'];
}

//On va chercher la catégorie à qui appartient le commentaire
$infocategorie = mysql_query("SELECT titre_rewrite FROM CATEGORIES WHERE id='".mysql_real_escape_string($id_categorie)."'");
while($afficheinfocategorie = mysql_fetch_array($infocategorie))
{
	$dossier_article=$afficheinfocategorie['titre_rewrite'];
}

//On construit l'url de la page et on supprime l'extension
$url_commentaire = 'http://'.$_SERVER['HTTP_HOST'].'/'.$dossier_article.'/'.sanspointphp($url_article).'#'.$id_transmit.'';

//initialisation du masquage du formulaire
$masquer_formulaire = 0;

//Traitement du formulaire
if(isset($_POST["Valider"]))
{
	$formulaire_pseudo = htmlspecialchars(stripcslashes(trim($_POST["pseudo"])));
	$formulaire_email = stripcslashes($_POST["email"]);
	$formulaire_commentaire = stripcslashes($_POST["commentaire"]);
	$formulaire_valide = $_POST["valide"];
	$ip = getIp();
	$timestamp = time();

	//Vérification du formulaire
	if(empty($formulaire_pseudo)){
		$alerte_pseudo ='<div class="erreur"><a name="ok"></a>Le pseudo est vide. Veuillez remplir la variable adéquate dans le fichier fonctions.php.</div>';
	}
	else if(empty($formulaire_email)){
		$alerte_email ='<div class="erreur"><a name="ok"></a>Votre email est vide. Veuillez remplir la variable adéquate dans le fichier fonctions.php.</div>';
	}	
	else if(empty($formulaire_commentaire)){
		$alerte_commentaire ='<div class="erreur"><a name="ok"></a>Le commentaire est vide.</div>';
	}

	//Si tout est ok
	else
	{
		// on enregistre les données
		$result = mysql_query("INSERT INTO COMMENTAIRE VALUES
(
'',
'".mysql_real_escape_string($id_page)."',
'".mysql_real_escape_string($formulaire_pseudo)."',
'".mysql_real_escape_string($formulaire_email)."',
'<b>Réponse à @ ".mysql_real_escape_string($pseudo_transmit)." :</b><br/><br/>".mysql_real_escape_string($formulaire_commentaire)."',
'".mysql_real_escape_string($ip)."',
'".mysql_real_escape_string($timestamp)."',
'".mysql_real_escape_string($formulaire_valide)."',
'".mysql_real_escape_string('Oui')."'
)
");

		//Si il y a une erreur, on crie ^^
		if (!$result) {
			die('Requête invalide : ' . mysql_error());
		}
		else{
			//Si tout est ok, on informe le webmaster
			$message_ok = '<div class="ok"><a name="ok"></a>Commentaire modifi&eacute;e avec succ&egrave;s! Redirection automatique en cours...</div>';
			
			//on masque le formulaire
			$masquer_formulaire=1;
			
			//Si le commentaire est validé pour la première fois 	
			if($formulaire_valide==1 AND empty($statut)){
				//On envoie un mail à ceux qui suivent le sujet tout en excluent le posteur
				$result1 = mysql_query("SELECT MAX(id),email,pseudo,suivre_sujet FROM COMMENTAIRE WHERE email != '$formulaire_email' AND suivre_sujet='Oui' AND id_page='$id_page' AND validation='1' GROUP BY email");
				//si il y a au moin un résultat
				if(mysql_num_rows($result1) >= 1 ){
					//on va chercher tout ce qui correspond
					while($envoi_mail = mysql_fetch_array($result1))
					{
						$pseudo=$envoi_mail["pseudo"];
						$mail=$envoi_mail["email"];
						$subject1 = "Réponse au commentaire...";
						
						//message   
						$msg1  = "Bonjour $pseudo\n\n";
						$msg1 .= "Un nouveau commentaire concernant l'article « ".$titre_article." » a été déposé et est disponible sur la page $url_commentaire.\n";
						$msg1 .= "Vous pouvez vous désabonner ici http://".$_SERVER['HTTP_HOST']."/desabonnement.php?contact=$mail&id=".$envoi_mail["MAX(id)"]."\n\n";
						$msg1 .= "Cordialement http://".$_SERVER['HTTP_HOST'].".\nCourriel automatique (Ne pas répondre à ce message)";

						//email des posteurs  
						$recipient1 = $mail;
						//email de celui qui envoie le mail
						$mailheaders1 = "From: $adresse_email\n";
						$mailheaders1 .= "Reply-To: $adresse_email\n\n";
						//on envoie l'email
						mail($recipient1, $subject1, $msg1, $mailheaders1);
						//on ferme la boucle while
					}
					//Si il y a une erreur, on crie ^^
					if (!$result1) {
						die('Requête invalide : ' . mysql_error());
					}
				}
				//on ferme if($formulaire_valide==1 AND empty($statut)){
			}
			//on ferme else
		}
		//On ferme else
	}
	//On ferme if(isset($_POST["Valider"]))
}

//Si la variable $message_ok existe et est différente de vide
if(isset($message_ok) && !empty($message_ok)){
	echo $message_ok;
	//on redirige vers la page d'administration des commentaires
	echo '<script>function redirection(page){ window.location=page; } setTimeout(\'redirection("commentaire.php")\',5000);</script>';
}

//On masque le formulaire si besoin
if($masquer_formulaire == 0) {
	?>
	<form action="#ok" method="post">

	<p>Url : <?php echo '<a target="_blank" href="'.$url_commentaire.'">'.$url_commentaire.'</a>';?></p>

	<?php if(isset($alerte_pseudo)) echo $alerte_pseudo;?>
	<p>Pseudo :<br/>
	<input name="pseudo" size="65" value="<?php echo $pseudo_admin;?>" type="text"/>
	</p>

	<?php if(isset($alerte_email)) echo $alerte_email;?>
	<p>Email :<br/>
	<input name="email" size="65" value="<?php echo $adresse_email;?>" type="text"/>
	</p>

	<?php if(isset($alerte_commentaire)) echo $alerte_commentaire;?>
	<p>Commentaire :<br/>
	<textarea name="commentaire" rows="10" cols="50" ><?php
	if (!empty($_POST["commentaire"])) {
		echo stripcslashes(htmlspecialchars($_POST["commentaire"],ENT_QUOTES));
	}
	?></textarea>
	<script type="text/javascript">
	CKEDITOR.replace( 'commentaire',
	{
		filebrowserBrowseUrl : '/ckfinder/ckfinder.html',
		filebrowserImageBrowseUrl : '/ckfinder/ckfinder.html?type=Images',
		filebrowserFlashBrowseUrl : '/ckfinder/ckfinder.html?type=Flash',
		filebrowserUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files&currentFolder=/archive/',
		filebrowserImageUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images&currentFolder=/cars/',
		filebrowserFlashUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
	} 
	);
	</script>
	</p>

	<p>Statut du commentaire :<br/>
	<select name="valide">
	<option value="">Sélectionnez un choix</option>
	<option value="0"<?php if (isset($valide) && $valide==0) {echo "selected='selected'";}?>>En attente</option>
	<option value="1"<?php if (isset($valide) && $valide==1) {echo "selected='selected'";}?>>Valider</option>
	</select>
	</p>

	<p>
	<input name="Valider" value="Valider" type="submit"/>
	<input name="Effacer" value="Effacer" type="reset"/>
	</p>
	</form>
	<?php
	//Fin du masquage du formulaire
}
?>
</div>

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

</div>

</body>

</html>

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