Undefined index

Résolu/Fermé
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017 - 8 août 2015 à 11:20
 americanbichon - 23 août 2015 à 21:16
bonjour,

J'ai réalisé un captcha très simple, dès que le formulaire est traité, il me renvoie la ligne suivante :
Notice: Undefined index: captcha in /homepages/8/d560574319/htdocs/commentaires.php on line 322

elle correspond à ceci :

  if($_POST['captcha'] == $_SESSION['captcha'])


Un peu d'aide me serait utile

merci
A voir également:

17 réponses

kimyoo Messages postés 36 Date d'inscription lundi 29 juin 2015 Statut Membre Dernière intervention 6 octobre 2015
8 août 2015 à 11:33
vérifier si la variable captcha est existe dans votre formulaire!
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
8 août 2015 à 11:39
elle existe mais l'array me la renvoie à vide
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
8 août 2015 à 11:41
Bonjour

fait un print_r de tes variables $_POST et $_SESSION.


0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
8 août 2015 à 11:43
j'ai fait un var_dump
Post est renvoyé avec les informations, captcha est renvoyé vide, donc elle existe mais elle n'est pas transmise, pourtant il y a bien une session_start
0
kimyoo Messages postés 36 Date d'inscription lundi 29 juin 2015 Statut Membre Dernière intervention 6 octobre 2015
8 août 2015 à 11:46
vérifier si le methode de votre formulaire est post
<form method="post">
0

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

Posez votre question
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
8 août 2015 à 11:50
<form method="post" name="formulaire" action="commentaires.php">
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
8 août 2015 à 12:04
Il nous faudrait le code complet de ta page stp
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
Modifié par jordane45 le 8/08/2015 à 13:34
ok commentaires.php
après j'enverrai captcha si besoin

<?php
session_start();
require('captcha.php');
error_reporting( E_ALL );   
require_once('bbcode.php')?>




 



 


 
<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

      
 <title>
 Livre d'Or -Commentaires - Cours d'Anglais - Marseille
 </title>
 <meta name="description" content="Professeur d'Anglais de langue maternelle et bénéficiant d'une solide expérience que je mets à votre disposition pour vous faire progresser, aussi bien en expression orale, qu'écrite !" />
<meta name="keywords" content="Commentaires sur le site" />
<meta name="robots" content="Index, follow" />
<meta http-equiv="Content-Language" content="fr-FR" />
 <meta name="reply-to" content="celine.maupome@orange.fr" />
 <meta name="Identifier-URL" CONTENT="www.englishnco.fr">
 <meta name="distribution" content="global" />
<meta name="author" lang="en" content="Français" />
 <meta name="category" content="Français" />
 <meta name="generator" content="Notepad ++, Photoshop" />
 <meta name="expires" content="never" />
<meta name="Date-Creation-yyyymmdd" content="20150127" />
<meta name="Date-Revision-yyyymmdd" content="20150127" />
<meta name="revisit-after" content="7 days" />
<!-- La feuille de styles "base.css" doit être appelée en premier. -->
 <link rel="stylesheet" type="text/css" href="styles/base.css" media="all" />
 <link rel="stylesheet" type="text/css" href="styles/modele06.css" media="screen" />
 <script language='javascript'>
  
function bbcode(bbdebut, bbfin)
  
{
  
var input = window.document.formulaire.message;
  
input.focus();
  
if(typeof document.selection != 'undefined')
  
{
  
var range = document.selection.createRange();
  
var insText = range.text;
  
range.text = bbdebut + insText + bbfin;
  
range = document.selection.createRange();
  
if (insText.length == 0)
  
{
  
range.move('character', -bbfin.length);
  
}
  
else
  
{
  
range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
  
}
  
range.select();
  
}
  
else if(typeof input.selectionStart != 'undefined')
  
{
  
var start = input.selectionStart;
  
var end = input.selectionEnd;
  
var insText = input.value.substring(start, end);
  
input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
  
var pos;
  
if (insText.length == 0)
  
{
  
pos = start + bbdebut.length;
  
}
  
else
  
{
  
pos = start + bbdebut.length + insText.length + bbfin.length;
  
}
  
input.selectionStart = pos;
  
input.selectionEnd = pos;
  
}
  
   
  
else
  
{
  
var pos;
  
var re = new RegExp('^[0-9]{0,3}$');
  
while(!re.test(pos))
  
{
  
pos = prompt("insertion (0.." + input.value.length + "):", "0");
  
}
  
if(pos > input.value.length)
  
{
  
pos = input.value.length;
  
}
  
var insText = prompt("Veuillez taper le texte");
  
input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
  
}
  
}
  
function smilies(img)
  
{
  
window.document.formulaire.message.value += '' + img + '';
  
}
  
</script>



<style type="text/css">
    form ,.pages
        {
         display: block;
         text-align:center;
         color: black;
    }
    .style_message
    {
        display: block;
        width: 650px;
       
        border-radius : 12px;
-webkit-border-radius : 12px;
-moz-border-radius : 12px;
        background-color: #edf0f3; 
    text-align:center;
 box-shadow: 6px 6px 6px #b7c9d7;  inset;
 border-radius: 20px 15px 20px 15px; 
    }
 #contenu {
width: 700px;
}
fieldset
{
 background: #edf0f3;
 box-shadow: 6px 6px 6px #b7c9d7;  inset;
 border-radius: 20px 15px 20px 15px; 
}

  

</style>
</head>
<body>
      <div id="global">
      <div id="entete">
   <?php
 include('en_tete.php');
?> 


  
 

   
        <h2>
   <span>Apprenons l'Anglais</span>
  </h2>
  <p class="sous-titre">
   <strong></strong>
  </p>
   </div><!-- #entete -->
 <ul id="menu">
        <li>
                <a href="index.php">Accueil</a>
  </li>  
        <li>
                <a href="adultes.php">Adultes</a>
                <div id="triangle"></div>
        <ul>
         <a href="images.php">Galerie 2</a>
         </ul>
        </li>       
        <li>
  
                <a href="adolescents.php">Adolescents</a>
    <div id="triangle"></div>
    <ul>
    
    <li><a href="galerie.php">Galerie</a></li>
    </ul>
        </li>
        <li>
                <a href="enfants.php">Enfants</a>
    <div id="triangle"></div>
        <ul>
         <a href="photos.php">Galerie 1</a>
         </ul>
        </li>
        <li>
          <a href="traduction.php">Traduction-Interprétariat</a>
                
        </li>
     <li>
                <a href="contact.php">Contact</a>
        </li> 
     <li>
  
                <a href="commentaires.php">Livre d'Or</a>
    
    
        </li>
  <li>
                <a href="me_joindre.php">Me Joindre</a>
        </li>
</ul>             
 <div id="contenu">

            

  



           
<h2>Ajouter un commentaire</h2>
<fieldset>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('|g|', '|/g|');return(false)" />
<input type="button" id="italic" name="italic" value="italic" onClick="javascript:bbcode('|i|', '|/i|');return(false)" />
<input type="button" id="souligne" name="souligne" value="souligne" onclick="javascript:bbcode('|s|', '|/s|');return(false)" />
<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
 <img src="./images/smileys/content.gif" title=" heureux" alt="heureux" onClick="javascript:smilies(' :D ');return(false)" />
<img src="./images/smileys/loli.gif" title="lol" alt="lol" onClick="javascript:smilies(' :lol: ');return(false)" />
<img src="./images/smileys/clin_d_oeil.gif" title="clin d oeil" alt="clin_d_oeil" onClick="javascript:smilies(' :clin_d_oeil ');return(false)" />

<img src="./images/smileys/smiley-sad013.gif" title="triste" alt="triste" onClick="javascript:smilies(' :triste: ');return(false)" />
<img src="./images/smileys/smiley-confused001.gif" title="confus" alt="confus" onClick="javascript:smilies(' :sconfus ');return(false)" />
<img src="./images/smileys/smiley-cool11.gif" title="cool" alt="cool" onClick="javascript:smilies(' :cool ');return(false)" />
<img src="./images/smileys/smiley-shocked012.gif" title="choc" alt="choc" onClick="javascript:smilies(' :ochoc ');return(false)" />
<img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies(' :rire ');return(false)" />
<img src="./images/smileys/15.gif" title="frime" alt="frime" onClick="javascript:smilies(' :frime ');return(false)" />
<img src="./images/smileys/question.gif" title="question" alt="question" onClick="javascript:smilies(' :question ');return(false)" />
<img src="./images/smileys/exclamation.gif" title="exclamation" alt="exclamation" onClick="javascript:smilies(' :exclamation ');return(false)" />
</fieldset> 
 <p class="pages">
<?php
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
   $bdd = new PDO('mysql:host=db;dbname=;charset=utf8', '', '', $pdo_options);
    if (isset($_POST['pseudo']) AND !empty($_POST['pseudo']) AND isset($_POST['message']))    
{
 if(!empty($_POST['captcha']))
      {
     

    if($_POST['captcha'] == $_SESSION['captcha'])
         {
        echo 'Le captcha est bon, votre nom est '.$_POST['pseudo'];
        $req = $bdd->prepare('INSERT INTO livreor (pseudo, message, date_commentaire) VALUES(?, ?, NOW())');
        $req->execute(array($_POST['pseudo'], $_POST['message']));
  print_r =($_POST);
         }
      }
    else

    echo '<strong>Le captcha n\'est pas bon.</strong>';

}

else

    echo 'Il faut remplir tous les champs.';
 
 
 
?> 
   
  
         
            
 
 <form method="post" name="formulaire" action="commentaires.php">
<p>
                    <label for="pseudo">Pseudo</label> :<br/ > <input type="text" name="pseudo" id="pseudo" required /><br />
                    <label for="commentaire">Commentaire</label> : <br />
                    <textarea name="message" id="message" cols="50" rows="5" required /></textarea><br />
     
     <label for="captcha">Recopiez le mot : "<?php echo captcha(); ?>"</label>

            <input type="text" name="captcha" id="captcha" /><br />
       <input type="submit" value="Envoyer">
  </p>
  </form>
 <?php
$nombreDeMessagesParPage = 10;
   $ret = $bdd->query('SELECT COUNT(*) AS nb FROM livreor');
 
   $data = $ret->fetch();
   $totalDesMessages = $data['nb'];
  
   $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
  
   echo 'Page : ';
    
      {
        for ($i = 1 ; $i <= $nombreDePages ; $i++)
          {
           echo '<a href="commentaires.php?page=' . $i . '">' . $i . '</a> ';
          }
       }
    echo '<br /><em> Nombre de commentaires postés: </em>'.$totalDesMessages;
}
   catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>
</p>
   
    
<?php
   // --------------- Etape 3 ---------------
   // Maintenant, on va afficher les messages
   // ---------------------------------------
 if (isset($_GET['page']) )
  {
    $page = intval($_GET['page']); // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
  }
 else // La variable n'existe pas, c'est la première fois qu'on charge la page
  {
        $page = 1; // On se met sur la page 1 (par défaut)
  }
    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
  $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  $reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') as date_commentaire_fr FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
     
 
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
 while ($donnees = $reponse->fetch())
    {
 
       echo '<p class="style_message"><strong>' . htmlspecialchars($donnees['pseudo']) . ' a écrit le :</strong> ' . htmlspecialchars($donnees['date_commentaire_fr']) . '<br /> ' .nl2br(code($donnees['message'])) . '</p>'; 
   
   

    }
    $reponse->closeCursor();
 
?>
 
  </div>


 






0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
Modifié par jordane45 le 9/08/2015 à 16:24
Bonjour

Essayes ça :
<?php
// Affichage erreurs PHP
error_reporting( E_ALL );  

//démarrage 'propre' des sessions
if(session_id() == '') {
    session_start();
}


require('captcha.php'); 
require_once('bbcode.php')


//connexion à la BDD
try{
  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  $bdd = new PDO('mysql:host=db;dbname=;charset=utf8', '', '', $pdo_options);
}catch(Exception $e) {
  die('Erreur : '.$e->getMessage());
}


// Récupération 'propre' des variables POST/GET..
$pseudo  = !empty($_POST['pseudo'])? $_POST['pseudo']:NULL;
$message = isset($_POST['message']) ? $_POST['message'] : NULL;
$captcha = !empty($_POST['captcha']) ? $_POST['captcha'] : NULL;

$page = !empty($_GET['page']) ? intval($_GET['page']) : 1;

//idem pour les variables de session...
$session_captcha = ISSET($_SESSION['captcha']) ? $_SESSION['captcha'] : NULL;



// Traitement :
$errors = array();
try {

if ($pseudo && $message ){
 if($captcha){
   if($captcha == $session_captcha ){
        echo 'Le captcha est bon, votre nom est '.$pseudo;
        $req = $bdd->prepare('INSERT INTO livreor (pseudo, message, date_commentaire) VALUES(?, ?, NOW())');
        $req->execute(array($pseudo, $message));
    }
 }else{
   $errors[] = '<strong>Le captcha n\'est pas bon.</strong>';
 }

}else{
  $errors[] = 'Il faut remplir tous les champs.';
}
}catch(Exception $e) {
  die('Erreur : '.$e->getMessage());
}


// Pages
   $nombreDeMessagesParPage = 10;
try {
  $ret = $bdd->query('SELECT COUNT(*) AS nb FROM livreor');
  $data = $ret->fetch();
  $totalDesMessages = $data['nb'];
  $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
}catch(Exception $e) {
  die('Erreur : '.$e->getMessage());
} 
 
//Récupération des données
 if($page){
    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

try{
  $sql = "SELECT pseudo
                , message
                , DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') as date_commentaire_fr 
         FROM livreor 
   ORDER BY id DESC LIMIT $premierMessageAafficher , $nombreDeMessagesParPage ";
   $prepare = $bdd->prepare($sql);
   $prepare->execute();
   //On récupère le résultat de la requête sous forme d'array (plus facile à manipuler)
   $reponse = $prepare->fetchAll();
 }catch(Exception $e) {
   die('Erreur : '.$e->getMessage());
 }     
}  

?>
 
<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

      
 <title>
 Livre d'Or -Commentaires - Cours d'Anglais - Marseille
 </title>
 <meta name="description" content="Professeur d'Anglais de langue maternelle et bénéficiant d'une solide expérience que je mets à votre disposition pour vous faire progresser, aussi bien en expression orale, qu'écrite !" />
<meta name="keywords" content="Commentaires sur le site" />
<meta name="robots" content="Index, follow" />
<meta http-equiv="Content-Language" content="fr-FR" />
 <meta name="reply-to" content="celine.maupome@orange.fr" />
 <meta name="Identifier-URL" CONTENT="www.englishnco.fr">
 <meta name="distribution" content="global" />
<meta name="author" lang="en" content="Français" />
 <meta name="category" content="Français" />
 <meta name="generator" content="Notepad ++, Photoshop" />
 <meta name="expires" content="never" />
<meta name="Date-Creation-yyyymmdd" content="20150127" />
<meta name="Date-Revision-yyyymmdd" content="20150127" />
<meta name="revisit-after" content="7 days" />
<!-- La feuille de styles "base.css" doit être appelée en premier. -->
 <link rel="stylesheet" type="text/css" href="styles/base.css" media="all" />
 <link rel="stylesheet" type="text/css" href="styles/modele06.css" media="screen" />
 <script language='javascript'>
  
function bbcode(bbdebut, bbfin){
  
var input = window.document.formulaire.message;
input.focus();
  
if(typeof document.selection != 'undefined'){
 var range = document.selection.createRange();
 var insText = range.text;
 range.text = bbdebut + insText + bbfin;
 range = document.selection.createRange();
  
 if (insText.length == 0){
   range.move('character', -bbfin.length);
 }else{
   range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
 }
  
 range.select();
  
 }else if(typeof input.selectionStart != 'undefined') {
   var start = input.selectionStart;
   var end = input.selectionEnd;
   var insText = input.value.substring(start, end);
   input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
   var pos;
   if (insText.length == 0) {
     pos = start + bbdebut.length;
   }else{
     pos = start + bbdebut.length + insText.length + bbfin.length;
   }
   input.selectionStart = pos;
   input.selectionEnd = pos;
 } else {
   var pos;
   var re = new RegExp('^[0-9]{0,3}$');
   while(!re.test(pos)) {
      pos = prompt("insertion (0.." + input.value.length + "):", "0");
   }
  if(pos > input.value.length) {
    pos = input.value.length;
  }
  var insText = prompt("Veuillez taper le texte");
  input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
  
 } 
}
  
function smilies(img){
  window.document.formulaire.message.value += '' + img + '';
}
  
</script>



<style type="text/css">
    form ,.pages
        {
         display: block;
         text-align:center;
         color: black;
    }
    .style_message
    {
        display: block;
        width: 650px;
       
        border-radius : 12px;
-webkit-border-radius : 12px;
-moz-border-radius : 12px;
        background-color: #edf0f3; 
    text-align:center;
 box-shadow: 6px 6px 6px #b7c9d7;  inset;
 border-radius: 20px 15px 20px 15px; 
    }
 #contenu {
width: 700px;
}
fieldset
{
 background: #edf0f3;
 box-shadow: 6px 6px 6px #b7c9d7;  inset;
 border-radius: 20px 15px 20px 15px; 
}

  

</style>
</head>
<body>
 <div id="global">
  <div id="entete">
   <?php include('en_tete.php'); ?> 
   <h2>
     <span>Apprenons l'Anglais</span>
   </h2>
   <p class="sous-titre">
    <strong></strong>
   </p>
  </div><!-- #entete -->
 <ul id="menu">
  <li>
   <a href="index.php">Accueil</a>
   </li>  
   <li>
     <a href="adultes.php">Adultes</a>
     <div id="triangle"></div>
     <ul>
      <a href="images.php">Galerie 2</a>
     </ul>
    </li>       
    <li>
      <a href="adolescents.php">Adolescents</a>
      <div id="triangle"></div>
      <ul>
        <li><a href="galerie.php">Galerie</a></li>
      </ul>
    </li>
    <li>
      <a href="enfants.php">Enfants</a>
      <div id="triangle"></div>
       <ul>
        <a href="photos.php">Galerie 1</a>
       </ul>
    </li>
    <li>
      <a href="traduction.php">Traduction-Interprétariat</a>           
    </li>
    <li>
     <a href="contact.php">Contact</a>
    </li> 
    <li>
      <a href="commentaires.php">Livre d'Or</a>
    </li>
    <li>
      <a href="me_joindre.php">Me Joindre</a>
    </li>
 </ul>             
 <div id="contenu">
       
<h2>Ajouter un commentaire</h2>
<fieldset>
  <input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('|g|', '|/g|');return(false)" />
  <input type="button" id="italic" name="italic" value="italic" onClick="javascript:bbcode('|i|', '|/i|');return(false)" />
  <input type="button" id="souligne" name="souligne" value="souligne" onclick="javascript:bbcode('|s|', '|/s|');return(false)" />
  <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
  <img src="./images/smileys/content.gif" title=" heureux" alt="heureux" onClick="javascript:smilies(' :D ');return(false)" />
  <img src="./images/smileys/loli.gif" title="lol" alt="lol" onClick="javascript:smilies(' :lol: ');return(false)" />
  <img src="./images/smileys/clin_d_oeil.gif" title="clin d oeil" alt="clin_d_oeil" onClick="javascript:smilies(' :clin_d_oeil ');return(false)" />

  <img src="./images/smileys/smiley-sad013.gif" title="triste" alt="triste" onClick="javascript:smilies(' :triste: ');return(false)" />
  <img src="./images/smileys/smiley-confused001.gif" title="confus" alt="confus" onClick="javascript:smilies(' :sconfus ');return(false)" />
  <img src="./images/smileys/smiley-cool11.gif" title="cool" alt="cool" onClick="javascript:smilies(' :cool ');return(false)" />
  <img src="./images/smileys/smiley-shocked012.gif" title="choc" alt="choc" onClick="javascript:smilies(' :ochoc ');return(false)" />
  <img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies(' :rire ');return(false)" />
  <img src="./images/smileys/15.gif" title="frime" alt="frime" onClick="javascript:smilies(' :frime ');return(false)" />
  <img src="./images/smileys/question.gif" title="question" alt="question" onClick="javascript:smilies(' :question ');return(false)" />
  <img src="./images/smileys/exclamation.gif" title="exclamation" alt="exclamation" onClick="javascript:smilies(' :exclamation ');return(false)" />
</fieldset> 
<p class="pages">
<?php
 // en cas d'erreur :
 if(count($errors)>0){
  foreach($errors as $K=>$error){
    echo $error;
  }
 }
?> 
 
<form method="post" name="formulaire" action="commentaires.php">
<p>
  <label for="pseudo">Pseudo</label> :<br/ > <input type="text" name="pseudo" id="pseudo" required /><br />
  <label for="commentaire">Commentaire</label> : <br />
  <textarea name="message" id="message" cols="50" rows="5" required /></textarea><br />

  <label for="captcha">Recopiez le mot : "<?php echo captcha(); ?>"</label>
  <input type="text" name="captcha" id="captcha" /><br />
  <input type="submit" value="Envoyer">
  </p>
  </form>
 <?php
   echo 'Page : ';
          
   for($i = 1 ; $i <= $nombreDePages ; $i++){
     echo '<a href="commentaires.php?page=' . $i . '">' . $i . '</a> ';
   }
   echo '<br /><em> Nombre de commentaires postés: </em>'.$totalDesMessages;
 ?>
</p>
   
    
<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
 foreach($reponse as $donnees) {
    echo '<p class="style_message"><strong>' . htmlspecialchars($donnees['pseudo']) . ' a écrit le :</strong> ' . htmlspecialchars($donnees['date_commentaire_fr']) . '<br /> ' .nl2br(code($donnees['message'])) . '</p>'; 
 } 
?>
 
 </div>



NB: Tu remarqueras que j'ai mis le maximum de PHP ... AVANT le code HTML .
Cela rend le code plus facile à lire et plus maintenable que lorsque tu en colles un peu partout au milieu du reste .....

NB2 : Il est grandement préférable de récupérer les variables issues de POST / SESSION ../ GET ... AVANT de les utiliser !
Pour se faire .. j'ai utilisé l'écriture TERNAIRE
$mavariable =  ( conditions ..)  ? (valeur si vrai ) : (valeur si faux) ;

'ce qui donne pour un exemple concret :
$page = !empty($_GET['page']) ? intval($_GET['page']) : 1;



NB3 : Tu devrais placer le code de connexion à ta BDD dans un fichier à part que tu n'auras qu'à inclure dans tes pages plutôt que de le remettre systématiquement dans toutes tes pages....
Là aussi c'est pour une question de maintenabilité....
car si tu changes de serveur ou d'identifiants ... tu n'aurais qu'à le modifier qu'à un seul endroit.....



EDIT : Correction du code
EDIT : Correction du code sur le foreach $errors



Cordialement,
Jordane
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 12:55
J'ai édité le message pour y ajouter le = manquant.
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
Modifié par americanbichon le 9/08/2015 à 11:47
merci pour le code, il y a une erreur ligne 53 unexpected [] et cela je ne vois pas ce que c'est
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 12:30
Ligne 52 il manque le "="
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
9 août 2015 à 15:16
Notice: Undefined variable: errors in /homepages/22/d291654198/htdocs/sansnom/captcha1/commentaires1.php on line 285

merci de t'occuper de moi : on avance
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 15:18
Oups... ligne 37 ... il manque un "r"
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656 > jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024
9 août 2015 à 15:34
J'ai édité le message précédent pour y mettre les corrections.
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
9 août 2015 à 15:45
Notice: Array to string conversion in /homepages/22/d291654198/htdocs/sansnom/captcha1/commentaires1.php on line 287
ArrayIl faut remplir tous les champs.


if(count($errors)>0){
foreach($errors as $error){
echo $error;



On est presque arrivé au bout !!!
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 15:55
Tu peux essayer comme ceci
if(count($errors)>0){
  foreach($errors as $key=>$error){
    echo $error
 }
};


PS : Merci de penser à préciser le LANGAGE dans les balises de code
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 15:57
Oublies ce que j'ai dit.. l'erreur se trouve à la déclaration de la variable...
Il faut remplacer ligne 37
$errors[] = array();


par
$errors = array();
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
9 août 2015 à 16:15
on est presque arrivé, désolée

Notice: Array to string conversion in /homepages/22/d291654198/htdocs/sansnom/captcha1/commentaires1.php on line 287

Notice: Undefined variable: Array in /homepages/22/d291654198/htdocs/sansnom/captcha1/commentaires1.php on line 287
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 16:18
Encore une erreur de copier/coller de ma part.
Ligne 285 il y a un dollar en trop
 if(count($$errors)>0){

à remplacer par :
 if(count($errors)>0){


NB: Si tu as encore un message d'erreur de ce genre à cet endroit du code.. merci de faire un print_r de la variable $errors et de nous en montrer le résultat.

<?php
 // en cas d'erreur :
 print_r($errors);

 if(count($errors)>0){
  foreach($errors as $k=>$error){
    echo $error;
  }
 }
?> 

0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
9 août 2015 à 16:21
le dollar je l'avais vu et le point virgule, je te tiens au courant du print_r
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
Modifié par americanbichon le 9/08/2015 à 16:28
Array ( [0] => Il faut remplir tous les champs. ) Il faut remplir tous les champs.

il va sans dire que tous les champs sont remplis !!!! J'en ai 3 !!!!!
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 16:33
Tu peux nous poster le code que tu utilises ?
(voir si toutes les modifications sont bien présentes ? )
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
9 août 2015 à 16:37
<?php
// Affichage erreurs PHP
error_reporting( E_ALL );  

//démarrage 'propre' des sessions
if(session_id() == '') {
    session_start();
}


require('captcha.php'); 
require_once('bbcode.php');


//connexion à la BDD
try{
  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  $bdd = new PDO('mysql:host.db.1and1.com;dbname=db;charset=utf8', '', ''); 
}catch(Exception $e) {
  die('Erreur : '.$e->getMessage());
}


// Récupération 'propre' des variables POST/GET..
$pseudo  = !empty($_POST['pseudo'])? $_POST['pseudo']:NULL;
$message = isset($_POST['message']) ? $_POST['message'] : NULL;
$captcha = !empty($_POST['captcha']) ? $_POST['captcha'] : NULL;

$page = !empty($_GET['page']) ? intval($_GET['page']) : 1;

//idem pour les variables de session...
$session_captcha = ISSET($_SESSION['captcha']) ? $_SESSION['captcha'] : NULL;



// Traitement :

$errors = array();

try {

if ($pseudo && $message ){
 if($captcha){
   if($captcha == $session_captcha ){
        echo 'Le captcha est bon, votre nom est '.$pseudo;
        $req = $bdd->prepare('INSERT INTO livreor (pseudo, message, date_commentaire) VALUES(?, ?, NOW())');
        $req->execute(array($pseudo, $message));
    }
 }else{
   $errors[] = '<strong>Le captcha n\'est pas bon.</strong>';
 }

}else{
  $errors[] = 'Il faut remplir tous les champs.';
}
}catch(Exception $e) {
  die('Erreur : '.$e->getMessage());
}


// Pages
   $nombreDeMessagesParPage = 10;
try {
  $ret = $bdd->query('SELECT COUNT(*) AS nb FROM livreor');
  $data = $ret->fetch();
  $totalDesMessages = $data['nb'];
  $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
}catch(Exception $e) {
  die('Erreur : '.$e->getMessage());
} 
 
//Récupération des données
 if($page){
    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

try{
  $sql = "SELECT pseudo
                , message
                , DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') as date_commentaire_fr 
         FROM livreor 
   ORDER BY id DESC LIMIT $premierMessageAafficher , $nombreDeMessagesParPage ";
   $prepare = $bdd->prepare($sql);
   $prepare->execute();
   //On récupère le résultat de la requête sous forme d'array (plus facile à manipuler)
   $reponse = $prepare->fetchAll();
 }catch(Exception $e) {
   die('Erreur : '.$e->getMessage());
 }     
}  

?>
 
<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

      
 <title>
 Livre d'Or -Commentaires - Cours d'Anglais - Marseille
 </title>
 <meta name="description" content="Professeur d'Anglais de langue maternelle et bénéficiant d'une solide expérience que je mets à votre disposition pour vous faire progresser, aussi bien en expression orale, qu'écrite !" />
<meta name="keywords" content="Commentaires sur le site" />
<meta name="robots" content="Index, follow" />
<meta http-equiv="Content-Language" content="fr-FR" />
 <meta name="reply-to" content="celine.maupome@orange.fr" />
 <meta name="Identifier-URL" CONTENT="www.englishnco.fr">
 <meta name="distribution" content="global" />
<meta name="author" lang="en" content="Français" />
 <meta name="category" content="Français" />
 <meta name="generator" content="Notepad ++, Photoshop" />
 <meta name="expires" content="never" />
<meta name="Date-Creation-yyyymmdd" content="20150127" />
<meta name="Date-Revision-yyyymmdd" content="20150127" />
<meta name="revisit-after" content="7 days" />
<!-- La feuille de styles "base.css" doit être appelée en premier. -->
 <link rel="stylesheet" type="text/css" href="styles/base.css" media="all" />
 <link rel="stylesheet" type="text/css" href="styles/modele06.css" media="screen" />
 <script language='javascript'>
  
function bbcode(bbdebut, bbfin){
  
var input = window.document.formulaire.message;
input.focus();
  
if(typeof document.selection != 'undefined'){
 var range = document.selection.createRange();
 var insText = range.text;
 range.text = bbdebut + insText + bbfin;
 range = document.selection.createRange();
  
 if (insText.length == 0){
   range.move('character', -bbfin.length);
 }else{
   range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
 }
  
 range.select();
  
 }else if(typeof input.selectionStart != 'undefined') {
   var start = input.selectionStart;
   var end = input.selectionEnd;
   var insText = input.value.substring(start, end);
   input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
   var pos;
   if (insText.length == 0) {
     pos = start + bbdebut.length;
   }else{
     pos = start + bbdebut.length + insText.length + bbfin.length;
   }
   input.selectionStart = pos;
   input.selectionEnd = pos;
 } else {
   var pos;
   var re = new RegExp('^[0-9]{0,3}$');
   while(!re.test(pos)) {
      pos = prompt("insertion (0.." + input.value.length + "):", "0");
   }
  if(pos > input.value.length) {
    pos = input.value.length;
  }
  var insText = prompt("Veuillez taper le texte");
  input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
  
 } 
}
  
function smilies(img){
  window.document.formulaire.message.value += '' + img + '';
}
  
</script>



<style type="text/css">
    form ,.pages
        {
         display: block;
         text-align:center;
         color: black;
    }
    .style_message
    {
        display: block;
        width: 650px;
       
        border-radius : 12px;
-webkit-border-radius : 12px;
-moz-border-radius : 12px;
        background-color: #edf0f3; 
    text-align:center;
 box-shadow: 6px 6px 6px #b7c9d7;  inset;
 border-radius: 20px 15px 20px 15px; 
    }
 #contenu {
width: 700px;
}
fieldset
{
 background: #edf0f3;
 box-shadow: 6px 6px 6px #b7c9d7;  inset;
 border-radius: 20px 15px 20px 15px; 
}

  

</style>
</head>
<body>
 <div id="global">
  <div id="entete">
   <?php include('en_tete.php'); ?> 
   <h2>
     <span>Apprenons l'Anglais</span>
   </h2>
   <p class="sous-titre">
    <strong></strong>
   </p>
  </div><!-- #entete -->
 <ul id="menu">
  <li>
   <a href="index.php">Accueil</a>
   </li>  
   <li>
     <a href="adultes.php">Adultes</a>
     <div id="triangle"></div>
     <ul>
      <a href="images.php">Galerie 2</a>
     </ul>
    </li>       
    <li>
      <a href="adolescents.php">Adolescents</a>
      <div id="triangle"></div>
      <ul>
        <li><a href="galerie.php">Galerie</a></li>
      </ul>
    </li>
    <li>
      <a href="enfants.php">Enfants</a>
      <div id="triangle"></div>
       <ul>
        <a href="photos.php">Galerie 1</a>
       </ul>
    </li>
    <li>
      <a href="traduction.php">Traduction-Interprétariat</a>           
    </li>
    <li>
     <a href="contact.php">Contact</a>
    </li> 
    <li>
      <a href="commentaires.php">Livre d'Or</a>
    </li>
    <li>
      <a href="me_joindre.php">Me Joindre</a>
    </li>
 </ul>             
 <div id="contenu">
       
<h2>Ajouter un commentaire</h2>
<fieldset>
  <input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('|g|', '|/g|');return(false)" />
  <input type="button" id="italic" name="italic" value="italic" onClick="javascript:bbcode('|i|', '|/i|');return(false)" />
  <input type="button" id="souligne" name="souligne" value="souligne" onclick="javascript:bbcode('|s|', '|/s|');return(false)" />
  <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
  <img src="./images/smileys/content.gif" title=" heureux" alt="heureux" onClick="javascript:smilies(' :D ');return(false)" />
  <img src="./images/smileys/loli.gif" title="lol" alt="lol" onClick="javascript:smilies(' :lol: ');return(false)" />
  <img src="./images/smileys/clin_d_oeil.gif" title="clin d oeil" alt="clin_d_oeil" onClick="javascript:smilies(' :clin_d_oeil ');return(false)" />

  <img src="./images/smileys/smiley-sad013.gif" title="triste" alt="triste" onClick="javascript:smilies(' :triste: ');return(false)" />
  <img src="./images/smileys/smiley-confused001.gif" title="confus" alt="confus" onClick="javascript:smilies(' :sconfus ');return(false)" />
  <img src="./images/smileys/smiley-cool11.gif" title="cool" alt="cool" onClick="javascript:smilies(' :cool ');return(false)" />
  <img src="./images/smileys/smiley-shocked012.gif" title="choc" alt="choc" onClick="javascript:smilies(' :ochoc ');return(false)" />
  <img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies(' :rire ');return(false)" />
  <img src="./images/smileys/15.gif" title="frime" alt="frime" onClick="javascript:smilies(' :frime ');return(false)" />
  <img src="./images/smileys/question.gif" title="question" alt="question" onClick="javascript:smilies(' :question ');return(false)" />
  <img src="./images/smileys/exclamation.gif" title="exclamation" alt="exclamation" onClick="javascript:smilies(' :exclamation ');return(false)" />
</fieldset> 
<p class="pages">


<?php
 // en cas d'erreur :
 print_r($errors);

 if(count($errors)>0){
  foreach($errors as $k=>$error){
    echo $error;
  }
 }
?> 
 




 
<form method="post" name="formulaire" action="commentaires1.php">
<p>
  <label for="pseudo">Pseudo</label> :<br/ > <input type="text" name="pseudo" id="pseudo" required /><br />
  <label for="commentaire">Commentaire</label> : <br />
  <textarea name="message" id="message" cols="50" rows="5" required /></textarea><br />

  <label for="captcha">Recopiez le mot : "<?php echo captcha(); ?>"</label>
  <input type="text" name="captcha" id="captcha" /><br />
  <input type="submit" value="Envoyer">
  </p>
  </form>
 <?php
   echo 'Page : ';
          
   for($i = 1 ; $i <= $nombreDePages ; $i++){
     echo '<a href="commentaires.php?page=' . $i . '">' . $i . '</a> ';
   }
   echo '<br /><em> Nombre de commentaires postés: </em>'.$totalDesMessages;
 ?>
</p>
   
    
<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
 foreach($reponse as $donnees) {
    echo '<p class="style_message"><strong>' . htmlspecialchars($donnees['pseudo']) . ' a écrit le :</strong> ' . htmlspecialchars($donnees['date_commentaire_fr']) . '<br /> ' .nl2br(code($donnees['message'])) . '</p>'; 
 } 
?>
 
 </div>












0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
9 août 2015 à 16:38
veux-tu le fichier captcha ?

Cela fait 1 semaine que j'y suis !!!!!!!
0
jordane45 Messages postés 38158 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 656
9 août 2015 à 17:08
Dans ton FORM mets action à vide action=""
0
americanbichon Messages postés 20 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 2 mars 2017
Modifié par americanbichon le 9/08/2015 à 17:53
Il semble que cela fonctionne, car j'ai essayé plusieurs commentaires "bidon" et tout est inscrit dans la BDD. Je revérifierai plus tard car c'est un site d'essai et rien n'est affiché sur mes commentaires dans le site.
Mais à chaque jour suffit sa peine !!
Je reviendrai quand je serai sur le bon site

Un gros merci, tu as sacrifié un Dimanche et rares sont les personnes comme toi.
Sympathies de la part d'une mamie de 69 ans.

PS Maintenant je m'attaque à un "menu hamburger"
0
americanbichon
23 août 2015 à 21:16
Cela fonctionne très bien, merci beaucoup
0