Autorisatioon pour les commentaires
gintoxic
Messages postés
524
Date d'inscription
Statut
Membre
Dernière intervention
-
gintoxic Messages postés 524 Date d'inscription Statut Membre Dernière intervention -
gintoxic Messages postés 524 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
bonjour
je cherche à protéger mon formulaire de commentaires des entrées intepestives de pub et autres floodage. et dans cet optique, je souhaite ajouter une entrée "mot de passe" qui devra etre verifiée par rapport à la table "membres" (pour rappel, tout ce qui concerne les commentaires se trouvent dans la table "commentaires")
j'ai lu quelques pages du livre de Mathieu Nebra (le site du Zero) et il aborde les AS (alias).
je me susi dit qu'en utilisant un alias, je pourrait récupérer le mot de passe dans une table et le comparer à celui de l'autre par rapport au pseudo entré, mais je n'ai pas su faire correctement.
puis j'ai tenté de prendre simplement le pass de la table "membres" et de la comprarer à l'entrée de l'utilisateur ....
je n'y arrive pas où c'est une histoire de synthaxe/position du code...
lien pour voir le résultat :
http://symposion.fr/test_array.php
je n'ai rien trouvé sur la toile ou sur le livre qui puisse m'aider (des explications simple que je puisse comprendre évidemment)
apres plusieurs heures de tentative, je me heurte à un mur et je m'épuise en tachant de comprendre des choses qui ne sont pas expliquées
que signifie une requete où il apparait ".... WHERE pseudo='.$pseudo.' ');
il s'agit de requete qui pourrait peut-etre m'aider ?
comment définit-on qu'un pseudo est tant une table et comment on le compare avec celui entré par l'utilisateur dans le formulaire et à quel moment doit-on faire cette comparaison dans le script ?
je suis un peu perdu et je tiens à signaler quand meme que je suis un super novice en pdo et débutant en PHP.
tout ce qui peut etre une évidence pour vous est un questionnement pour moi.
j'adore apprendre et j'ai grandement besoin d'aide
puis-je compter sur vous et votre aide ?
je vous post ce que j'ai fait en dernier lieu dans mon script et je ne vois rien d'autre à faire meme si je ne cesse de chercher
merci à vous
ps : une autre cose que j'ai du mal à comprendre si PDOStatement est un objet que l'on utilise en php (une classe me semble-t-il...)
quand doit-on utiliser PDOStatement->closeCursor ? je ne l'ai vu utilisé que pour des requête comportant un fetch() (ce qui me parait logique)
est-ce qu'on l'utilise qua dans le cas de ces fetch() ?
code :
bonjour
je cherche à protéger mon formulaire de commentaires des entrées intepestives de pub et autres floodage. et dans cet optique, je souhaite ajouter une entrée "mot de passe" qui devra etre verifiée par rapport à la table "membres" (pour rappel, tout ce qui concerne les commentaires se trouvent dans la table "commentaires")
j'ai lu quelques pages du livre de Mathieu Nebra (le site du Zero) et il aborde les AS (alias).
je me susi dit qu'en utilisant un alias, je pourrait récupérer le mot de passe dans une table et le comparer à celui de l'autre par rapport au pseudo entré, mais je n'ai pas su faire correctement.
puis j'ai tenté de prendre simplement le pass de la table "membres" et de la comprarer à l'entrée de l'utilisateur ....
je n'y arrive pas où c'est une histoire de synthaxe/position du code...
lien pour voir le résultat :
http://symposion.fr/test_array.php
je n'ai rien trouvé sur la toile ou sur le livre qui puisse m'aider (des explications simple que je puisse comprendre évidemment)
apres plusieurs heures de tentative, je me heurte à un mur et je m'épuise en tachant de comprendre des choses qui ne sont pas expliquées
que signifie une requete où il apparait ".... WHERE pseudo='.$pseudo.' ');
il s'agit de requete qui pourrait peut-etre m'aider ?
comment définit-on qu'un pseudo est tant une table et comment on le compare avec celui entré par l'utilisateur dans le formulaire et à quel moment doit-on faire cette comparaison dans le script ?
je suis un peu perdu et je tiens à signaler quand meme que je suis un super novice en pdo et débutant en PHP.
tout ce qui peut etre une évidence pour vous est un questionnement pour moi.
j'adore apprendre et j'ai grandement besoin d'aide
puis-je compter sur vous et votre aide ?
je vous post ce que j'ai fait en dernier lieu dans mon script et je ne vois rien d'autre à faire meme si je ne cesse de chercher
merci à vous
ps : une autre cose que j'ai du mal à comprendre si PDOStatement est un objet que l'on utilise en php (une classe me semble-t-il...)
quand doit-on utiliser PDOStatement->closeCursor ? je ne l'ai vu utilisé que pour des requête comportant un fetch() (ce qui me parait logique)
est-ce qu'on l'utilise qua dans le cas de ces fetch() ?
code :
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 existant if(isset($_POST['pseudo']){ try{ $verif = $connexion->query('SELECT pseudo, pass FROM membres'); $data = $verif->fetch(); if($data != $loggin){ echo 'vous devez être connecté(e) pour poster un commentaire'; } } catch(Exception $e){ echo 'Erreur : '.$e; } } // si tout est ok else{ 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(); } }
A voir également:
- Autorisatioon pour les commentaires
- Afficher les commentaires word - Guide
- Sur instagram, masquer automatiquement les commentaires contenant son surnom, "baleine". - Forum Facebook
- Pourquoi ne peut on pas voir tous les commentaires sur facebook ✓ - Forum Facebook
- Comment faire pour que mes amis ne voient pas mes commentaires sur facebook ✓ - Forum Facebook
- Mes commentaires tiktok n'apparaissent pas - Forum Mail
20 réponses
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(); } } }
non la ligne est normale les guillemets servent à la concatenation
tu parles d'erreur, quelle erreur ?
tu parles d'erreur, quelle erreur ?
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
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
pourquoi deux parenthèses de chaque côté ?
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
pour vérifier que le pseudo correspond au mot de pass enregistré dans la BDD c'est comme je t'ai indiqué.
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 } } } } }
est ce qu'il fonctionne si oui c'est bon avec une méthode sensiblement différente mais qui revient au même.
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.....
// 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(); }
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 } } } } } ?>
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';} } } //----------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
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>
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...
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é'; }
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
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>
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....
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
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
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 } } } }
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
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
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 ?>
$_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
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 ?
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 ...