Commentaire réserver aux membres

Fermé
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 - Modifié par jordxn le 21/11/2012 à 22:44
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 - 22 nov. 2012 à 08:03
Bonjour,

J'aimerais faire sur mon site un espace pour poster des commentaires sous des articles mais réservé au membre.
J'ai créer l'espace membre, l'email de confirmation etc etc .
J'ai également le formulaire pour poster un commentaire mais sans être inscrit et qui s'envoit vers ma boite mail.
J'aimerais juste que les membres puissent poster un commentaire vers ma boite mail.
Il doit pas manquer grand chose mais je n'y arrive pas.

commentaireb.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta content="text/html; utf-8" http-equiv="content-type" />
<script type="text/javascript" src="fonc.js"></script>
<script type="text/javascript">
//fonction verif des champs avant envoi
function verif_champs(){
//pseudo
var pseudo=document.getElementById('Pseudo');
if(pseudo.value ==""){
alert ("Vous devez saisir un pseudo !");
pseudo.focus(); //on met le focus sur le champ concerné
return false; // on sort de la fonction et on empeche le form d'etre envoyé
}
//numero article
var Numero=document.getElementById('Numero');
if(Numero.value ==""){
alert ("Vous devez saisir un Numero !");
Numero.focus(); //on met le focus sur le champ concerné
return false; // on sort de la fonction et on empeche le form d'etre envoyé
}
//Commentaire
var Commentaire=document.getElementById('Commentaire');
if(Commentaire.value ==""){
alert ("Vous devez saisir un Commentaire !");
Commentaire.focus(); //on met le focus sur le champ concerné
return false; // on sort de la fonction et on empeche le form d'etre envoyé
}

//si on est arrivé jusque là c'est qui n'y a pas d'erreur
//donc on autorise l'envoi du form
return true;

}

</script>

</head>

<body bgcolor="grey">
<center><b> <b> <button onclick="window.location.href ='index.html';">Accueil</button> </b></center>
<center>
<!-- ligne ci dessous on met un onsubmit = return verif_champs() ainsi si la fonction retourne false, le formulaire ne part pas si elle retourne true, le form part -->
<form name="contact" id="contact" method="post" action="commentaireb.php" onsubmit="return verif_champs();">
<fieldset><legend>Choisis ton pseudo :</legend>
<input type="text" id="Pseudo" name="Pseudo" tabindex="1" />
<legend>Le numéro de l'article :</legend>
<input type="number" min="1" max="2" step="1" id="Numero" name="Numero" tabindex="1" />
</fieldset>

<fieldset><legend>Ton commentaire :</legend>
<textarea id="Commentaire" name="Commentaire" tabindex="4" cols="30" rows="8"></textarea>
</p>
</fieldset>

<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le commentaire !" /></div>
</form>


</form>
</table>
</center>
</body>
</html>



commentaireb.php

<?php
session_start(); //ouverture d'une session propre a l'utilisateur, doit etre tout au debut de la page
/*le principe d'une session:
stocke une variable de session sur le serveur et dans un cookie de session envoyé à l'utilisateur, ainsi pour les appels suivants on sait qui appelle
*/
//init variable de travail
$envoi_mail_autorise=true;
//
if(isset($_POST['envoi'])){
//le formulaire a été posté, on recupere les valeurs en les protégerant par htmlentities
$Pseudo = htmlentities($_POST['Pseudo']);
$Commentaire = htmlentities($_POST['Commentaire']);
$Numero = htmlentities($_POST['Numero']);
// si premier appel, on va stocker ces valeurs dans des variables de session (sur le serveur)
if(!isset($_SESSION['Pseudo'])){ //j'avait fait une erreur de majuscule ici
$_SESSION['Pseudo']=$Pseudo;
$_SESSION['Commentaire']=$Commentaire;
$_SESSION['Numero']=$Numero;
//premier appel donc on autorise l'envoi du mail
$envoi_mail_autorise=true;

}else{
echo "Session pseudo=".$_SESSION['Pseudo']." Numero=".$_SESSION['Numero']." Comment=".$_SESSION['Commentaire'];
//les variables de session existent, donc l'utilisateur a déja posté
//on teste que c'est pour le même numero et le meme commentaire
if($_SESSION['Pseudo'] == $Pseudo && $_SESSION['Numero'] == $Numero && $_SESSION['Commentaire'] == $Commentaire ){
//deja posté donc on interdit l'envoi du mail
$envoi_mail_autorise=false;
}else{
$envoi_mail_autorise=true;
}

//on pourait à ce niveau la verifier qu'il ne change pas de pseudo avec le mêm numero et le même commentaire

if($_SESSION['Pseudo'] != $Pseudo && $_SESSION['Numero'] == $Numero && $_SESSION['Commentaire'] == $Commentaire ){
//deja posté mais sous un autre pseudo donc on interdit l'envoi du mail
$envoi_mail_autorise=false;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta content="text/html; utf-8" http-equiv="content-type" />
<style type="text/css">
body{
margin: 0;
padding: 0;
background-color: grey;
}
/* div message ok */
#message_ok {
color:white;
text-align : center;
}
/* div message nok */
#message_nok {
color:red;
text-align : center;
}
</style>
</head>
<body>
<br/>
<br/>
<br/>
<br/>
<?php
if($envoi_mail_autorise){
//les valeurs $pseudo etc.. sont recupérées plus haut dans le script

//destinataire
$to="****@laposte.net";
//en tête message en html
$headers = "From: <admin@****.fr>"."\n";
$headers .= "MIME-Version: 1.0"."\n";
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\""."\n";
$headers .= "Content-Transfer-Encoding: 8bit"."\n";

//sujet
$mailsujet="Mail de la part de ". $Pseudo;
///// corps du message
$corps_message="<html>";
$corps_message.="<center>Commentaire de la part de $Pseudo sur l'article $Numero : <br /> $Commentaire </center>";
$corps_message.="</html>";

//envoi du mail au destinataire
$mail_env=mail($to,$mailsujet,$corps_message,$headers);
//on teste si envoi s'est bien passé pour donner le mesage OK / NOK
if($mail_env){
echo '<div id="message_ok">Le commentaire a bien été envoyé, il sera validé ou non par l\'équipe. <br/>Merci !</div>';

}else {
echo '<div id="message_nok">Problème technique, le commentaire n\'a pas pu étre envoyé !</div>';
}
}else{
echo '<div id="message_nok">Vous avez déja posté ce commentaire !</div>';

}

?>
<br/>
<br/>
<center><b> <button onclick="window.location.href ='index.html';">Revenir à l'accueil</button> </b></center>
</body>
</html>
<?php
} //fin de if isset($_POST['envoi'] déplacé ici
?>

Et pour la partie de connexion à l'accès membre,
j'ai une base de donnée avec :

1 id int(11) AUTO_INCREMENT
2 username varchar(100)
3 password varchar(100)
4 email varchar(30)
5 token int(11)
6 active tinyint(1)


Merci ...

5 réponses

Utilisateur anonyme
21 nov. 2012 à 23:18
Tu voudrais avoir une fonction mail qui marche ( dont le message va directement ds la boîte de réception ) ?
J'en ai fait une sur mon site : https://www.000webhost.com/migrate?static=true

Si tu as besoin du code je te le passe.
0
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
21 nov. 2012 à 23:19
Non pas du tout, je l'ai déjà sa, je veux imposer d'etre membre pour poster un commentaire sur mon site
0
Utilisateur anonyme
21 nov. 2012 à 23:29
Ah ok , alors normalement tu dois faire un contrôle de l'identité de l'utilisateur.
Si il est inscrit alors il peut commenter, sinon non.
Pour ce faire il faut absolument passer par les base de données afin de savoir si l'identité fait partie ou non de la base.
Si oui, il peut commenter, sinon on lui propose de créer un compte.

Voilà bonne continuation.
0
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
21 nov. 2012 à 23:42
et comment faire ? La est ma question
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
22 nov. 2012 à 08:03
up svp
0