Autorisatioon pour les commentaires
Fermé
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
-
24 août 2013 à 16:45
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 - 30 août 2013 à 23:27
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 - 30 août 2013 à 23:27
A voir également:
- Autorisatioon pour les commentaires
- Clément a partagé le fichier mme bovary. il a écrit des commentaires dans le document. quel est le 2e commentaire ? - Guide
- Comment voir les commentaires sur twitter - Forum Twitter
- Mes commentaires tiktok n'apparaissent pas - Forum Mail
- Sur instagram, masquer automatiquement les commentaires contenant son surnom, "baleine". - Forum Facebook
- Comment voir les commentaires sur x - Forum Twitter
20 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
24 août 2013 à 17:23
24 août 2013 à 17:23
salut, essayes plutôt comme ça:
<?php if(isset($_POST['submit'])){ // $Jour = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"); // $Mois = array("","janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"); // $datefr = $Jour[date("w")]." ".date("d")." ".$Mois[date("n")]." ".date("Y").", ".date("H")." : ".date("i"); $loggin = $_POST['pseudo']; // htmlspecialchars ne sert à rien ici. Il ne faut l'utiliser que lorsqu'il y a une sortie de texte, pas une entrée. De plus, le "a écrit" est une donnée qui reviens donc elle aura sa place dans la boucle en bas $mess = $_POST['message']; // pareil $pass = $_POST['passwd']; // si tous les champs sont vides if(empty($_POST['pseudo']) OR empty($_POST['message']) OR empty($_POST['passwd'])){ echo '<p class="vide">Un des champs est vide</p>'; } // vérification d'un pseudo et mot de pass existant if(isset($_POST['pseudo']) && isset($_POST['pass']){ try{ $verif = $connexion->query("SELECT pseudo, pass FROM membres WHERE pseudo='".$loggin."'"); $data = $verif->fetch(); if($data['pseudo'] == $loggin && $data['pass'] == $pass){ //login et mot de pass corrects on peut inserer le commentaire try{ // on définit les logins / paramètres de la base de donnée $insertion_table = $connexion->prepare('INSERT INTO commentaires(pseudo, message,date_enregistrement) VALUES(:pseudo, :message,:date_enregistrement)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array('pseudo'=>$loggin, 'message'=>$mess, 'date_enregistrement'=>time())); // on éxécute la requete } catch(Exception $e){ echo 'problème d\'insertion dans la bdd : '.$e->getMessage(); } try{ $result= $connexion->query('SELECT * FROM commentaires ORDER BY date_enregistrement DESC'); // on séléctionne tous les champs de la table commentaires while ($donnees = $result->fetch()){ echo '<div id="pseudo">'; echo '<div class="heure">'.date('l d m Y H:i', $donnees['date_enregistrement']).'</div>'; echo '<div class="nom">'.htmlentities($donnees['pseudo']).' a écrit : </div></div>'; echo '<div id="bloc_message">"'.nl2br(htmlentities($donnees['message'])).'"</div>'; // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle } } catch(Exception $e){ echo 'problème avec la requête d\'affichage : '.$e->getMessage(); } $result->closeCursor(); }else { echo 'vous devez être connecté(e) pour poster un commentaire'; } } catch(Exception $e){ echo 'Erreur : '.$e->getMessage(); } } }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
24 août 2013 à 21:43
24 août 2013 à 21:43
non la ligne est normale les guillemets servent à la concatenation
tu parles d'erreur, quelle erreur ?
tu parles d'erreur, quelle erreur ?
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
25 août 2013 à 01:30
25 août 2013 à 01:30
justement il ne dit aucune erreur, je veux dire : aucune explication d'erreur, mais une erreur !! c'est assez agaçant de ne pas savoir où est l'erreur ou les erreurs..
pour concaténer, il ne suffit pas de mettre :
au lieu de
???
dans cette instruction à quoi correspond le $loggin ? la variable prédéfinie par mes soin qui est égal à $_POST['pseudo'] ou à la valeur trouvé dans la table ?
stp
merci
pour concaténer, il ne suffit pas de mettre :
WHERE pseudo='.$loggin.' ");
au lieu de
WHERE pseudo='".$loggin."'");
???
dans cette instruction à quoi correspond le $loggin ? la variable prédéfinie par mes soin qui est égal à $_POST['pseudo'] ou à la valeur trouvé dans la table ?
stp
merci
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 août 2013 à 09:56
25 août 2013 à 09:56
dans la requette telle que je te l'ai donné:
la chaine commence et finit par "
donc pour concaténer à l'intérieur il faut:
"blabla".$va."bbbaaa"
mais comme il faut en plus encadrer la valeur par des '
ça fait bien:
$loggin = $_POST['pseudo']; donc la valeur sasie par l'utilisateur
que l'on compare à celle dans la table par la condition WHERE et on verifie que le pass saisi est bien associé à ce pseudo dans la BDD
if($data['pseudo'] == $loggin && $data['pass'] == $pass)
$data['pseudo'] c'est que qui est dans la base
$loggin ce qui a été saisi
idem pour le pass
"SELECT pseudo, pass FROM membres WHERE pseudo='".$loggin."'"
la chaine commence et finit par "
donc pour concaténer à l'intérieur il faut:
"blabla".$va."bbbaaa"
mais comme il faut en plus encadrer la valeur par des '
ça fait bien:
"SELECT pseudo, pass FROM membres WHERE pseudo='".$loggin."'"
$loggin = $_POST['pseudo']; donc la valeur sasie par l'utilisateur
que l'on compare à celle dans la table par la condition WHERE et on verifie que le pass saisi est bien associé à ce pseudo dans la BDD
if($data['pseudo'] == $loggin && $data['pass'] == $pass)
$data['pseudo'] c'est que qui est dans la base
$loggin ce qui a été saisi
idem pour le pass
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
25 août 2013 à 12:51
25 août 2013 à 12:51
salut
c'est pas plutot :
je demande hein...
c'est pas plutot :
if(($data['pseudo'] == $loggin && $data['pass'] == $pass))?
je demande hein...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 août 2013 à 21:30
25 août 2013 à 21:30
pourquoi deux parenthèses de chaque côté ?
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
25 août 2013 à 21:44
25 août 2013 à 21:44
oula oui, je fatigue moi.... c'est pas du tout ça !
autant pour moi Alain, j'ai fait trop de code pour bien discerner
mais j'ai trouvé comment faire cette partie de script autrement en fait mis à part que je ne sais pas comment faire pour vérifier que le pseudo entré correspond bien au mot de passe et au mail
pour éviter que l'utilisateur n'ouvre un compte par mot de passe et faire une bonne authentification....
autant pour moi Alain, j'ai fait trop de code pour bien discerner
mais j'ai trouvé comment faire cette partie de script autrement en fait mis à part que je ne sais pas comment faire pour vérifier que le pseudo entré correspond bien au mot de passe et au mail
pour éviter que l'utilisateur n'ouvre un compte par mot de passe et faire une bonne authentification....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 août 2013 à 22:03
25 août 2013 à 22:03
pour vérifier que le pseudo correspond au mot de pass enregistré dans la BDD c'est comme je t'ai indiqué.
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
25 août 2013 à 23:49
25 août 2013 à 23:49
et comment je fais avec ce code ? il faut que je refasse tout ?
if(isset($_POST['submit'])){ if(empty($_POST['pseudo']) OR empty($_POST['message']) OR empty($_POST['passwd'])){ echo '<p class="vide">Un des champs est vide</p>'; } // le formulaire est vide, on ne va pas plus loin ! //------------------------------------------------------------------------------------------------------ // on a validé le formulaire et rempli l'intégralité du formulaire... else { // préparation de la requête de vérif de l'existence des données $auth = $connexion->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass'); // execution avec les paramètres $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['passwd'])); // s'il n'y a pas de résultat if ($auth->fetchColumn() < 1) { echo 'vous devez être enregistré(e) pour poster un commentaire'; } // ---------------------------------------------------------------------------------------------- // Les données sont trouvées et on va chercher l'existence d'une Session else { // si le pseudo est trouvé if (empty($_SESSION['pseudo'])) { //et que la session n'existe pas echo 'ouverture de session'; } //-------------------------------------------------------------------------------------------- else { // si la session est ouverte // insertion du commentaire // on définit les logins / paramètres de la base de donnée $insertion_table = $connexion->prepare('INSERT INTO commentaires(pseudo, message,date_enregistrement) VALUES(:pseudo, :message,:date_enregistrement)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array('pseudo'=>$loggin, 'message'=>$mess, 'date_enregistrement'=>time())); // on éxécute la requete $result= $connexion->query('SELECT * FROM commentaires ORDER BY date_enregistrement DESC'); // on séléctionne tous les champs de la table commentaires while ($donnees = $result->fetch()){ echo '<div id="pseudo">'; echo '<div class="heure">'.date('l d m Y H:i', $donnees['date_enregistrement']).'</div>'; echo '<div class="nom">'.htmlentities($donnees['pseudo']).' a écrit : </div></div>'; echo '<div id="bloc_message">"'.nl2br(htmlentities($donnees['message'])).'"</div>'; // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle } } } } }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
26 août 2013 à 10:11
26 août 2013 à 10:11
est ce qu'il fonctionne si oui c'est bon avec une méthode sensiblement différente mais qui revient au même.
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
26 août 2013 à 17:11
26 août 2013 à 17:11
pas du tout comme je l'espere, voici 3 entrées que j'ai créé vite fait et qui n'ont pas alerté qui que ce soit
id pseudo mail pass 67 testeur adresse@mail.fr rerere 65 kri2sis adresse@mail.fr rerere 66 kri2sis autreadresse@mail.fr rerere
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 26/08/2013 à 17:44
Modifié par Alain_42 le 26/08/2013 à 17:44
je n'ai pas regardé de près ton code, mais
dans les 3exemples que tu donnes tous ont le m^me mot de pass et deux ont le m^me pseudo et mot de pass
dans ton code je ne vois pas la partie connexion BDD
new PDO.....
dans les 3exemples que tu donnes tous ont le m^me mot de pass et deux ont le m^me pseudo et mot de pass
dans ton code je ne vois pas la partie connexion BDD
new PDO.....
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
26 août 2013 à 18:33
26 août 2013 à 18:33
// Désactive l'émulateur de requêtes préparées (hautement recommandé) $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false; // Active le mode exception $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; // Indique le charset $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8"; try // on essaye de se connecter { $connexion = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options); } catch(Exception $e) { echo 'Erreur : '.$e->getMessage().'<br />N° : '.$e->getCode(); }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
26 août 2013 à 18:42
26 août 2013 à 18:42
comme cela ça ira mieux:
<?php $host='localhost'; $db_name='test2'; $user_host='root'; $pass_host=''; if(isset($_POST['submit'])){ if(empty($_POST['pseudo']) OR empty($_POST['message']) OR empty($_POST['passwd'])){ echo '<p class="vide">Un des champs est vide</p>'; } // le formulaire est vide, on ne va pas plus loin ! //------------------------------------------------------------------------------------------------------ // on a validé le formulaire et rempli l'intégralité du formulaire... else { //connexion base try { $connexion = new PDO('mysql:host='.$host.';dbname='.$db_name.'', ''.$user_host.'', ''.$pass_host.'') ; } catch(PDOExeption $e) { die('Erreur lors de la connexion a la base de donnees' .$e->getMessage()); } // préparation de la requête de vérif de l'existence des données $auth = $connexion->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass'); // execution avec les paramètres $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['passwd'])); // s'il n'y a pas de résultat if ($auth->fetchColumn() < 1) { echo 'vous devez être enregistré(e) pour poster un commentaire'; } // ---------------------------------------------------------------------------------------------- // Les données sont trouvées et on va chercher l'existence d'une Session else { // si le pseudo est trouvé if (empty($_SESSION['pseudo'])) { //et que la session n'existe pas session_start(); $_SESSION['pseudo']=$_POST['pseudo']; //la tu ouvres une session et ensuite tu enregistres le commentaire //car tu ne peux passer dans le if et dans le else en même temps // insertion du commentaire // on définit les logins / paramètres de la base de donnée $insertion_table = $connexion->prepare('INSERT INTO commentaires(pseudo, message,date_enregistrement) VALUES(:pseudo, :message,:date_enregistrement)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array('pseudo'=>$loggin, 'message'=>$mess, 'date_enregistrement'=>time())); // on éxécute la requete $result= $connexion->query('SELECT * FROM commentaires ORDER BY date_enregistrement DESC'); // on séléctionne tous les champs de la table commentaires while ($donnees = $result->fetch()){ echo '<div id="pseudo">'; echo '<div class="heure">'.date('l d m Y H:i', $donnees['date_enregistrement']).'</div>'; echo '<div class="nom">'.htmlentities($donnees['pseudo']).' a écrit : </div></div>'; echo '<div id="bloc_message">"'.nl2br(htmlentities($donnees['message'])).'"</div>'; // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle } } } } } ?>
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
Modifié par gintoxic le 26/08/2013 à 20:12
Modifié par gintoxic le 26/08/2013 à 20:12
ma page bloque son CSS (http://symposion.fr pour test)
de plus je me rends compte que ej te casse les pieds avec un formulaire de commentaire alors qu'il faut que je regle d'abord le probleme avec le formulaire d'enregistrement de compte.... je suis désolé et le dernier exemple que je t'avais donné est ce qui est dans la bdd lors de l'enregistrement : il enregistre un peu n'importe comment en effet
de plus je me rends compte que ej te casse les pieds avec un formulaire de commentaire alors qu'il faut que je regle d'abord le probleme avec le formulaire d'enregistrement de compte.... je suis désolé et le dernier exemple que je t'avais donné est ce qui est dans la bdd lors de l'enregistrement : il enregistre un peu n'importe comment en effet
try{ $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options); // Désactive l'émulateur de requêtes préparées (hautement recommandé) $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false; // Active le mode exception $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; // Indique le charset $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8"; } catch(Exception $e) // si on y arrive pas, le $e contient les erreurs { die('Erreur : '.$e->getMessage()); } if(isset($_POST['submit'])){ // ------------------------------------------------------------------------------------------------------------- if(empty($_POST['pseudo']) OR empty($_POST['email']) OR empty($_POST['pass']) OR empty($_POST['pass2'])){ echo '<p class="vide">Un des champs est vide</p>'; } // le formulaire est vide, on ne va pas plus loin ! if ($_POST['pass'] != $_POST['pass2']) { echo 'Les mots de passe doivent être identiques'; } // si les mots de passe sont différents, on le signale //------------------------------------------------------------------------------------------------------ // Si tout est OK ... if(isset($_POST['pseudo']) AND isset($_POST['email']) AND isset($_POST['pass']) AND isset($_POST['pass2'])){ $email = $_POST['email']; $loggin = $_POST['pseudo']; $passwd = $_POST['pass']; $passwd2 = $_POST['pass2']; // on a validé le formulaire et rempli l'intégralité du formulaire... et créé les variables //-------------------------------------------------------------------------- if(preg_match('#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#',$email)){ // préparation de la requête de vérif de l'existence des données $auth = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass AND email = :email'); // execution avec les paramètres $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass'], ':email'=>$_POST['email'])); // s'il n'y a pas de résultat if ($auth->fetchColumn() < 1) { //on définit les logins / paramètres de la base de donnée $insertion_table = $bdd->prepare('INSERT INTO membres(pseudo, email, pass) VALUES(:pseudo, :email,:pass)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array('pseudo'=>$loggin, 'email'=>$email, 'pass'=>$passwd)); // on éxécute la requete echo '<p>Vous êtes désormais enregistré(e) ! Et si on se connectait maintenant ?</p>'; echo '<p><a href="connexion.php"><em>C\'est par ici</em></a></p>'; } else{ echo 'Le compte existe déjà, <a href="#">se connecter</a> ';} } else{echo 'Vous avez entré une adresse mail invalide';} } } //----------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
26 août 2013 à 21:27
26 août 2013 à 21:27
et comme ça:
(voir commentaires)
(voir commentaires)
<?php $hote='localhost'; $BD='test2'; $user='root'; $pass=''; // Désactive l'émulateur de requêtes préparées (hautement recommandé) $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false; // Active le mode exception $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; // Indique le charset $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8"; //si tu utilises une variable $pdo_options il faut la définir avant try{ $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options); } catch(Exception $e) // si on y arrive pas, le $e contient les erreurs { die('Erreur : '.$e->getMessage()); } if(isset($_POST['submit'])){ if(empty($_POST['pseudo']) OR empty($_POST['email']) OR empty($_POST['pass']) OR empty($_POST['pass2'])){ echo '<p class="vide">Vous devez remplir tous les champs</p>'; // le formulaire n'est pas complet, on ne va pas plus loin ! }else{ //recup des valeurs saisies $email = $_POST['email']; $loggin = $_POST['pseudo']; $passwd = $_POST['pass']; $passwd2 = $_POST['pass2']; if ($passwd != $passwd2) { echo 'Les mots de passe doivent être identiques'; // si les mots de passe sont différents, on le signale }elseif(!preg_match('#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#',$email)){ echo 'Vous avez entré une adresse mail invalide'; }else{ // Si tout est OK ... //ATTENTION tu mets parfois mail, parfois email, sois plus rigoureux ! // préparation de la requête pour vérif si les saisie n'existent pas déja $auth = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass AND email = :email'); // execution avec les paramètres $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass'], ':email'=>$_POST['email'])); // s'il n'y a pas de résultat if ($auth->fetchColumn() < 1) { //on enregistre l'utilisateur dans la base de donnée $insertion_table = $bdd->prepare('INSERT INTO membres(pseudo, email, pass) VALUES(:pseudo, :email,:pass)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array('pseudo'=>$loggin, 'email'=>$email, 'pass'=>$passwd)); // on éxécute la requete if($insertion_table){ //la requette s'est bien déroulée echo '<p>Vous êtes désormais enregistré(e) ! Et si on se connectait maintenant ?</p>'; echo '<p><a href="connexion.php"><em>C\'est par ici</em></a></p>'; } }else{ echo 'Le compte existe déjà !'; //pourquoi se deconnecté on est pas encore connecté a ce moment on cherche seulement a s'enregistrer } } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <style type="text/css"> #bloc_message{ background: #FAFAFA; /*min-width:300px; min-height:200px; max-width:40%;*/ border:1px solid #D8D8D8; border-radius: 0 10px 10px 0; padding-left: 10px; padding-top: 5px; border-left:6px solid #A4A4A4; } /*#bloc_message:nth-child(even){ background:red; }*/ .whitesmoke{background:whitesmoke; border:1px solid #A4A4A4;} .vide{ color:red; } .whitesmoke[value]{ color:grey; font-style: italic; } #pseudo{ /*border: 1px solid blue;*/ margin-top :50px; min-width:300px; max-width:100%; } .heure{ font-size: 10pt; display: inline-block; text-align: left; width:30%; font-style: italic; /*border:1px solid red;*/ } .nom{ text-align: right; display:inline-block; border:red; width:50%; position:relative; margin-left: 90px; /*border: 1px solid green;*/ } </style> </head> <h4>Inscription: </h4> <!-- il ne faut pas mettre action="#" mais action="" tout simplement --> <form method="post" action="" id="hide_form"> Login : <input type="text" name="pseudo" class="whitesmoke" value="" /><br /><br /> Mot de passe : <input type="password" name="pass" value="" /><br /> Retaper mdp : <input type="password" name="pass2" value="" /><br /> Email : <input type="text" name="email" value="" /><br /> <input type="submit" value="envoyer" name="submit" /> </form>
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
26 août 2013 à 22:04
26 août 2013 à 22:04
donc, une chose de base que j'ai oublié c'est : merci à toi pour le temps que tu passes, la patience et la volonté d'aider...
ensuite, pour ce dernier code, il marche : il entre des entrées dans la base sauf si celles saisies sont déjà dans la base avec cette combinaison : pseudo/email/pass mais il suffit de changer un des parametres et il enregistre quand meme (cf le petit shéma de la table 'membres' que j'ai posté tout à l'heure)
pour les commentaires, il reconnait bien la présence du pseudo mais il reste à ouvrir une session...
le souci c'est que je ne sasi aps comment on peut faire pour le faire en pleine page . il faut que je fasse un script au préalble que je "require" en heut de chaque page ?
et dans mes formulaires ? surtout que je vais etre obligé de faire un formulaire pour la conneion.... j'imagine qu'il sera moins dur que les deux autres voire qu'il ressemblera à celui pour les commentaires...
ensuite, pour ce dernier code, il marche : il entre des entrées dans la base sauf si celles saisies sont déjà dans la base avec cette combinaison : pseudo/email/pass mais il suffit de changer un des parametres et il enregistre quand meme (cf le petit shéma de la table 'membres' que j'ai posté tout à l'heure)
pour les commentaires, il reconnait bien la présence du pseudo mais il reste à ouvrir une session...
le souci c'est que je ne sasi aps comment on peut faire pour le faire en pleine page . il faut que je fasse un script au préalble que je "require" en heut de chaque page ?
et dans mes formulaires ? surtout que je vais etre obligé de faire un formulaire pour la conneion.... j'imagine qu'il sera moins dur que les deux autres voire qu'il ressemblera à celui pour les commentaires...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
26 août 2013 à 22:15
26 août 2013 à 22:15
pour la connexion tu fais un formulaire pour la saisie pseudo et pass
ensuite dans le code php tu fait une requette BDD qui verifie que le couple login/pass existe pour ouvrir une session
session_start();
$_SESSION['pseudo']=$pseudo;
header(location:accueil.php); //vers la première page du site
ensuite tout en haut de toutes les pages accessibles seulement si connecté tu mets:
ensuite dans le code php tu fait une requette BDD qui verifie que le couple login/pass existe pour ouvrir une session
session_start();
$_SESSION['pseudo']=$pseudo;
header(location:accueil.php); //vers la première page du site
ensuite tout en haut de toutes les pages accessibles seulement si connecté tu mets:
<?php //avant ça il ne faut rien mettre, pas de code html session_start(); if(!isset($_SESSION['pseudo'] || $_SESSION['pseudo'] !=""){ header(location:connexion.php); }else{ //toute la partie html de ta page //tu peux y mettre aussi echo 'Bonjour '.$pseudo.' vous êtes connecté'; }
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
26 août 2013 à 22:24
26 août 2013 à 22:24
pour ce qui est de la session, c'est juste pour mettre le psedo de la personne dans un endroit de chaque page et évidemment pour pouvoir mettre des commentaires
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
27 août 2013 à 00:44
27 août 2013 à 00:44
je viens de lire que sql disposait de champs uniques qui garantissent l'unicité et donc de cette façon on n peut entrer 2 fois la même valeur de champs et ça j'avoue que j'en ai besoin pour le mail au niveau de l'inscription
apres un test, ca marche de telle facon qu'on ne peut entrer un mail identque à celui deja présent dans la table mais qu'au niveau visuel sur le site, ca stoppe tout (meme le dsign html/css
or je souhaite emettre un commentaire lorsque cet évenement se produit (tentative de doublon)
est ce que je peux faire ca ?
merci
apres un test, ca marche de telle facon qu'on ne peut entrer un mail identque à celui deja présent dans la table mais qu'au niveau visuel sur le site, ca stoppe tout (meme le dsign html/css
or je souhaite emettre un commentaire lorsque cet évenement se produit (tentative de doublon)
est ce que je peux faire ca ?
merci
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 27/08/2013 à 08:41
Modifié par Alain_42 le 27/08/2013 à 08:41
je ne voit pas comment ça peut bloquer le html css
avec inscription.php lorsque l'on fait la verification
bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass AND email = :email');
// execution avec les paramètres
$auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass'], ':email'=>$_POST['email']));
// s'il n'y a pas de résultat
if ($auth->fetchColumn() < 1) {
on s'assure bien que ni le pseudo,, ni le pass, ni le mail n'existent sur une même "ligne"
l'inconvénient c'est que tu peux avoir plusieurs fois le même pseudo avec soit un pass différent soit un mail différent.
mais si je comprend bien tu veux aussi t'assurer que le mail n'existe pas non plus dans d'autres enregistrements de ta base ?
il suffit de faire une autre requette sur le pseudo seulement puis une sur le mail
avec inscription.php lorsque l'on fait la verification
bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass AND email = :email');
// execution avec les paramètres
$auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass'], ':email'=>$_POST['email']));
// s'il n'y a pas de résultat
if ($auth->fetchColumn() < 1) {
on s'assure bien que ni le pseudo,, ni le pass, ni le mail n'existent sur une même "ligne"
l'inconvénient c'est que tu peux avoir plusieurs fois le même pseudo avec soit un pass différent soit un mail différent.
mais si je comprend bien tu veux aussi t'assurer que le mail n'existe pas non plus dans d'autres enregistrements de ta base ?
il suffit de faire une autre requette sur le pseudo seulement puis une sur le mail
<?php $hote='localhost'; $BD='test2'; $user='root'; $pass=''; // Désactive l'émulateur de requêtes préparées (hautement recommandé) $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false; // Active le mode exception $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; // Indique le charset $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8"; //si tu utilises une variable $pdo_options il faut la définir avant try{ $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options); } catch(Exception $e) // si on y arrive pas, le $e contient les erreurs { die('Erreur : '.$e->getMessage()); } if(isset($_POST['submit'])){ if(empty($_POST['pseudo']) OR empty($_POST['email']) OR empty($_POST['pass']) OR empty($_POST['pass2'])){ echo '<p class="vide">Vous devez remplir tous les champs</p>'; // le formulaire n'est pas complet, on ne va pas plus loin ! }else{ //recup des valeurs saisies $email = $_POST['email']; $loggin = $_POST['pseudo']; $passwd = $_POST['pass']; $passwd2 = $_POST['pass2']; if ($passwd != $passwd2) { echo 'Les mots de passe doivent être identiques'; // si les mots de passe sont différents, on le signale }elseif(!preg_match('#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#',$email)){ echo 'Vous avez entré une adresse mail invalide'; }else{ // Si tout est OK ... //ATTENTION tu mets parfois mail, parfois email, sois plus rigoureux ! // préparation de la requête pour vérif si le pseudo pas déja $auth = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo'); // execution avec les paramètres $auth->execute(array(':pseudo'=>$_POST['pseudo'])); // s'il n'y a pas de résultat if ($auth->fetchColumn() < 1) { //verif si mail existe déja $auth2 = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE email = :email'); // execution avec les paramètres $auth2->execute(array(':email'=>$_POST['email'])); // s'il y a 1 résultat if ($auth2->fetchColumn() >0) { echo 'Le mail existe déja !'; }else{ //si tout OK //on enregistre l'utilisateur dans la base de donnée $insertion_table = $bdd->prepare('INSERT INTO membres(pseudo, email, pass) VALUES(:pseudo, :email,:pass)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array('pseudo'=>$loggin, 'email'=>$email, 'pass'=>$passwd)); // on éxécute la requete if($insertion_table){ //la requette s'est bien déroulée echo '<p>Vous êtes désormais enregistré(e) ! Et si on se connectait maintenant ?</p>'; echo '<p><a href="connexion.php"><em>C\'est par ici</em></a></p>'; } }else{ echo 'Le pseudo existe déjà !'; } } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <style type="text/css"> #bloc_message{ background: #FAFAFA; /*min-width:300px; min-height:200px; max-width:40%;*/ border:1px solid #D8D8D8; border-radius: 0 10px 10px 0; padding-left: 10px; padding-top: 5px; border-left:6px solid #A4A4A4; } /*#bloc_message:nth-child(even){ background:red; }*/ .whitesmoke{background:whitesmoke; border:1px solid #A4A4A4;} .vide{ color:red; } .whitesmoke[value]{ color:grey; font-style: italic; } #pseudo{ /*border: 1px solid blue;*/ margin-top :50px; min-width:300px; max-width:100%; } .heure{ font-size: 10pt; display: inline-block; text-align: left; width:30%; font-style: italic; /*border:1px solid red;*/ } .nom{ text-align: right; display:inline-block; border:red; width:50%; position:relative; margin-left: 90px; /*border: 1px solid green;*/ } </style> </head> <h4>Inscription: </h4> <!-- il ne faut pas mettre action="#" mais action="" tout simplement --> <form method="post" action="" id="hide_form"> Login : <input type="text" name="pseudo" class="whitesmoke" value="" /><br /><br /> Mot de passe : <input type="password" name="pass" value="" /><br /> Retaper mdp : <input type="password" name="pass2" value="" /><br /> Email : <input type="text" name="email" value="" /><br /> <input type="submit" value="envoyer" name="submit" /> </form>
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
27 août 2013 à 17:40
27 août 2013 à 17:40
salut et encore merci, ce code me hante et j'avais eu cette idée mas sans savoir comment la poser dans le code... tu l'as fait !! :)
bon ceci dit est ce que je dois interdire deux pseudo diffrents ? perso, je pense que oui
pour répondre à ta question :
"mais si je comprend bien tu veux aussi t'assurer que le mail n'existe pas non plus dans d'autres enregistrements de ta base ? "
- tout à fait deux personnes ne peuvent avoir le meme mail contrairement au pseudo... quoique.... et au pass.
je te propose de tester ton code (bon j'ai participé un tout petit peu....) à cette adresse http://symposion.fr/form_loggin.php et me dire si tu voisquelque chose qui cloche ou si tout est ok...
en tout cas un grand merci à toi....
si tu suis toujours l'histoire, je vais maintenat passer au formulaire de connexion pour boucler la boucle entre l'inscription et les commentaires
----> les session à présent (mais là le Site du Zéro ne va pas beaucoup m'aider à moins que j'ai mal lu le cours....
bon ceci dit est ce que je dois interdire deux pseudo diffrents ? perso, je pense que oui
pour répondre à ta question :
"mais si je comprend bien tu veux aussi t'assurer que le mail n'existe pas non plus dans d'autres enregistrements de ta base ? "
- tout à fait deux personnes ne peuvent avoir le meme mail contrairement au pseudo... quoique.... et au pass.
je te propose de tester ton code (bon j'ai participé un tout petit peu....) à cette adresse http://symposion.fr/form_loggin.php et me dire si tu voisquelque chose qui cloche ou si tout est ok...
en tout cas un grand merci à toi....
si tu suis toujours l'histoire, je vais maintenat passer au formulaire de connexion pour boucler la boucle entre l'inscription et les commentaires
----> les session à présent (mais là le Site du Zéro ne va pas beaucoup m'aider à moins que j'ai mal lu le cours....
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
27 août 2013 à 20:20
27 août 2013 à 20:20
bon et bien la connexion me semble faite mais là maintenant je reviens sur les commentaires et j'ai un souci.... il faut que je puisse autoriser les connectés à laisser des commentaires, or, ça n'est pas le cas il faut à chaque fois qu'ils rentre leur identifiants...
est ce que je dois vire le formulaire au bénéfice de celui de connexion ?
je suis un peu perdu dans l'espace de mes codes là
merci
est ce que je dois vire le formulaire au bénéfice de celui de connexion ?
je suis un peu perdu dans l'espace de mes codes là
merci
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
28 août 2013 à 18:48
28 août 2013 à 18:48
concernant le pseudo il vaut mieux que deux personne différentes n'aient pas le m^me sinon lorsqu'ils vont poster un commentaire on ne saura pas lequel l'a fait.
concernant la page commentaires;
il suffit de faire une page tout simple ans vérif à l'intérieur mais en mettant tout au début la verif de session
concernant la page commentaires;
il suffit de faire une page tout simple ans vérif à l'intérieur mais en mettant tout au début la verif de session
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
28 août 2013 à 20:08
28 août 2013 à 20:08
voici le petit morceau de code que j'ai testé mais qui ne fonctionne pas
else if(!isset(!$_SESSION['pseudo']){ header('location:connex.php'); exit; }
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
28 août 2013 à 20:46
28 août 2013 à 20:46
j'ai un souci avec mon code, mais je ne vois pas où... help me please...
if(isset($_POST['submit'])){ if(!isset($_POST['pseudo']) AND !isset($_POST['message'])){ echo '<p class="vide">Les champs sont vides</p>'; } // le formulaire est vide, on ne va pas plus loin ! //------------------------------------------------------------------------------------------------------ else{ // préparation de la requête de vérif de l'existence des données $auth = $connexion->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo'); // execution avec les paramètres $auth->execute(array(':pseudo'=>$_POST['pseudo'])); // s'il n'y a pas de résultat if ($auth->fetchColumn() < 1) { echo 'vous devez être enregistré(e) pour poster un commentaire <br /> <a href="connex.php"><em>Connexion</em></a>'; } // else if(!isset(!$_SESSION['pseudo']){ // header('location:connex.php'); // exit; // } else { // si la session est ouverte // insertion du commentaire // on définit les logins / paramètres de la base de donnée $insertion_table = $connexion->prepare('INSERT INTO commentaire(pseudo, message,date_enregistrement) VALUES(:pseudo, :message,:date_enregistrement)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array(':pseudo'=>$loggin, ':message'=>$mess, ':date_enregistrement'=>time())); // on éxécute la requete $result= $connexion->query('SELECT * FROM commentaire ORDER BY date_enregistrement DESC'); // on séléctionne tous les champs de la table commentaires while ($donnees = $result->fetch()){ echo '<div id="pseudo">'; echo '<div class="heure">'.date('l d m Y H:i', $donnees['date_enregistrement']).'</div>'; echo '<div class="nom">'.htmlentities($donnees['pseudo']).' a écrit : </div></div>'; echo '<div id="bloc_message">"'.nl2br(htmlentities($donnees['message'])).'"</div>'; // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle } } } }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
29 août 2013 à 15:01
29 août 2013 à 15:01
il faut procéder ainsi:
<?php session_start(); //on teste si la variable de session initialisée lorsqu'il se connecte existe if(!issset($_SESSION['pseudo']) || $_SESSION['pseudo'] ==""){ //pas de session ouverte donc l'utilisateur ne s'est pas connecté //on le renvoie sur la page de connexion header('Location:connex.php'); }else{ //variables de travail $reaffiche_formulaire=true; //l'utilisateur est bien connecté if(isset($_POST['submit'])){ if(empty($_POST['pseudo']) AND empty($_POST['message'])){ $reaffiche_formulaire=true; echo '<p class="vide">Les champs sont vides</p>'; } // le formulaire est vide, on ne va pas plus loin ! //------------------------------------------------------------------------------------------------------ else{ // on définit les logins / paramètres de la base de donnée try{ $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options); } catch(Exception $e) // si on y arrive pas, le $e contient les erreurs { die('Erreur : '.$e->getMessage()); } // insertion du commentaire $insertion_table = $connexion->prepare('INSERT INTO commentaire(pseudo, message,date_enregistrement) VALUES(:pseudo, :message,:date_enregistrement)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array(':pseudo'=>$loggin, ':message'=>$mess, ':date_enregistrement'=>time())); // on éxécute la requete $reaffiche_formulaire=false; //on empeche le raffichage du formulaire //affichage des messages $result= $connexion->query('SELECT * FROM commentaire ORDER BY date_enregistrement DESC'); // on séléctionne tous les champs de la table commentaires while ($donnees = $result->fetch()){ echo '<div id="pseudo">'; echo '<div class="heure">'.date('l d m Y H:i', $donnees['date_enregistrement']).'</div>'; echo '<div class="nom">'.htmlentities($donnees['pseudo']).' a écrit : </div></div>'; echo '<div id="bloc_message">"'.nl2br(htmlentities($donnees['message'])).'"</div>'; // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle } } } if($reaffiche_formulaire){ //la tu mets ton code formulaire commentaires } } //fin du if session
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
29 août 2013 à 21:18
29 août 2013 à 21:18
salut, qu'est-ce que tu appelle "code formulaire commentaires" stp ? est ce formulaire qui ert à entrer un commentaire ?
pour le moment j'ai un probleme d'affichage et je cherche d'où ça vient car aucune donnée n'est transmise du code à la base et de la base au code...
pour le moment j'ai un probleme d'affichage et je cherche d'où ça vient car aucune donnée n'est transmise du code à la base et de la base au code...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
29 août 2013 à 21:38
29 août 2013 à 21:38
oui c'est le formulaire qui sert a entrer le commentaire
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
Modifié par gintoxic le 29/08/2013 à 22:00
Modifié par gintoxic le 29/08/2013 à 22:00
bon beh je ne trouve pas mais il semble qu'il y ait un probleme....
http://symposion.fr/test_again2.php
http://symposion.fr/test_again2.php
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
29 août 2013 à 22:01
29 août 2013 à 22:01
je ne comprends pas l'utilité de la variable $reaffiche_formulaire...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
29 août 2013 à 22:31
29 août 2013 à 22:31
cette variable permet d'afficher ou non la partie formulaire
au départ elle est a true --> donc on affiche
si erreur de saisie elle rest à true --> donc on affiche
si tout ok concernant l'enregistrement dans la base
elle passe à false --> donc on n'affiche plus le formulaire mais la liste des commentaires
mets moi ton code
au départ elle est a true --> donc on affiche
si erreur de saisie elle rest à true --> donc on affiche
si tout ok concernant l'enregistrement dans la base
elle passe à false --> donc on n'affiche plus le formulaire mais la liste des commentaires
mets moi ton code
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
29 août 2013 à 23:08
29 août 2013 à 23:08
ok j'avais bien saisi alors...
session_start() semble empecher l'affichage de la page
session_start() semble empecher l'affichage de la page
<?php session_start(); //on teste si la variable de session initialisée lorsqu'il se connecte existe if(!issset($_SESSION['pseudo']) OR $_SESSION['pseudo'] ==""){ //pas de session ouverte donc l'utilisateur ne s'est pas connecté //on le renvoie sur la page de connexion header('Location:connex.php'); exit; } else{ //variables de travail $reaffiche_formulaire=true; //l'utilisateur est bien connecté if(isset($_POST['submit'])){ if(empty($_POST['pseudo']) AND empty($_POST['message'])){ $reaffiche_formulaire=true; echo '<p class="vide">Les champs sont vides</p>'; } // le formulaire est vide, on ne va pas plus loin ! //------------------------------------------------------------------------------------------------------ else{ // on définit les logins / paramètres de la base de donnée $hote='localhost'; $BD=''; $user=''; $pass=''; try{ $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass); } catch(Exception $e) // si on y arrive pas, le $e contient les erreurs { die('Erreur : '.$e->getMessage()); } // insertion du commentaire $insertion_table = $connexion->prepare('INSERT INTO commentaire(pseudo, message,date_enregistrement) VALUES(:pseudo, :message,:date_enregistrement)') or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur $insertion_table->execute(array(':pseudo'=>$loggin, ':message'=>$mess, ':date_enregistrement'=>time())); // on éxécute la requete $reaffiche_formulaire=false; //on empeche le raffichage du formulaire //affichage des messages $result= $connexion->query('SELECT * FROM commentaire ORDER BY date_enregistrement DESC'); // on séléctionne tous les champs de la table commentaires while ($donnees = $result->fetch()){ echo '<div id="pseudo">'; echo '<div class="heure">'.date('l d m Y H:i', $donnees['date_enregistrement']).'</div>'; echo '<div class="nom">'.htmlentities($donnees['pseudo']).' a écrit : </div></div>'; echo '<div id="bloc_message">'.nl2br(htmlentities($donnees['message'])).'</div>'; // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle } } } if($reaffiche_formulaire){ //la tu mets ton code formulaire commentaires echo '<form method="post">'; echo '<h1>Commentaires</h1>'; echo '<p>Pseudo* : </label><input type = "text" name = "pseudo" /></p>'; echo '<p><textarea name="message" rows="7" cols="40">Bonjour,</textarea></p>'; echo '<input type="submit" value = "Envoyer" name="submit" />'; echo '</form>'; } }//fin du if session ?>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 30/08/2013 à 14:09
Modifié par Alain_42 le 30/08/2013 à 14:09
$_SESSION['pseudo'] est bien la variable de session que tu initailise lors de la connexion ?
je viens de voir un pb
3 s a isset
je viens de voir un pb
if(!issset($_SESSION['pseudo']) OR $_SESSION['pseudo'] ==""){
3 s a isset
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
30 août 2013 à 18:25
30 août 2013 à 18:25
alors là ce qui se passe :
on ne peut accéder à la page codée car elle redirige automatiquement vers connex.php...
je pense que je vais devoir faire le coup en 2 fois avec une page qui affiche les commentaires (la meme page pour chacun de tous mes textes et là je vais avoir besoin d'aide aussi...) et où est le formulaire et une page de code qui va insérer les commentaires dans la base...
qu'est ce que tu en penses ?
on ne peut accéder à la page codée car elle redirige automatiquement vers connex.php...
je pense que je vais devoir faire le coup en 2 fois avec une page qui affiche les commentaires (la meme page pour chacun de tous mes textes et là je vais avoir besoin d'aide aussi...) et où est le formulaire et une page de code qui va insérer les commentaires dans la base...
qu'est ce que tu en penses ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 août 2013 à 21:35
30 août 2013 à 21:35
je t'ai mis un MP
gintoxic
Messages postés
524
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
7 avril 2016
10
30 août 2013 à 23:27
30 août 2013 à 23:27
repondu :)
24 août 2013 à 17:42
par contre cette ligne me semble bizarre au niveau des guillemets et apostrophes :
par ailleurs je ne sais pas d'où peut venir l'erreur ...