From d43e818c1108d3ecc24741c95c65bc8d51fedc13 Mon Sep 17 00:00:00 2001
From: Simon Leblanc <contact@leblanc-simon.eu>
Date: Sun, 22 May 2011 02:13:44 +0200
Subject: [PATCH] Delete php warning and secure SQL

---
 adminstuds.php | 681 +++++++++++++++++++++++++++++--------------------
 1 file changed, 410 insertions(+), 271 deletions(-)

diff --git a/adminstuds.php b/adminstuds.php
index f806f726..d63b673d 100644
--- a/adminstuds.php
+++ b/adminstuds.php
@@ -52,7 +52,7 @@ $numsondageadmin = false;
 $sondage = false;
 
 // recuperation du numero de sondage admin (24 car.) dans l'URL
-if (isset($_GET['sondage']) && !empty($_GET['sondage']) && is_string($_GET['sondage']) && strlen($_GET['sondage']) === 24) {
+if (issetAndNoEmpty('sondage', $_GET) && is_string($_GET['sondage']) && strlen($_GET['sondage']) === 24) {
   $numsondageadmin=$_GET["sondage"];
   //on découpe le résultat pour avoir le numéro de sondage (16 car.)
   $numsondage=substr($numsondageadmin, 0, 16);
@@ -106,60 +106,73 @@ From: %s <%s>
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 EOF;
-$headers = sprintf($headers_str, NOMAPPLICATION, ADRESSEMAILADMIN );
+$headers = sprintf($headers_str, NOMAPPLICATION, ADRESSEMAILADMIN);
 
 
-if (isset($_POST["boutonnouveautitre"])) {
-  if(! isset($_POST["nouveautitre"]) || empty($_POST["nouveautitre"])) {
+if (isset($_POST["boutonnouveautitre"]) || isset($_POST["boutonnouveautitre_x"])) {
+  if(issetAndNoEmpty('nouveautitre') === false) {
     $err |= TITLE_EMPTY;
   } else {
-    //envoi du mail pour prevenir l'admin de sondage
-    mail ($adresseadmin,
-          _("[ADMINISTRATOR] New title for your poll") . ' ' . NOMAPPLICATION,
-          _("You have changed the title of your poll. \nYou can modify this poll with this link") .
-          " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" .
-          _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
-          $headers);
-
     //modification de la base SQL avec le nouveau titre
-    $connect->Execute("UPDATE sondage SET titre = '" . $connect->qstr(strip_tags($_POST['nouveautitre'])) . "' WHERE id_sondage = '" . $numsondage . "'");
+    $nouveautitre = htmlentities(html_entity_decode($_POST['nouveautitre'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
+    $sql = 'UPDATE sondage SET titre = '.$connect->Param('nouveautitre').' WHERE id_sondage = '.$connect->Param('numsondage');
+    $sql = $connect->Prepare($sql);
+    
+    //envoi du mail pour prevenir l'admin de sondage
+    if ($connect->Execute($sql, array($nouveautitre, $numsondage))) {
+      mail ($adresseadmin,
+            _("[ADMINISTRATOR] New title for your poll") . ' ' . NOMAPPLICATION,
+            _("You have changed the title of your poll. \nYou can modify this poll with this link") .
+            " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" .
+            _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
+            $headers);
+    }
   }
 }
   
 // si le bouton est activé, quelque soit la valeur du champ textarea
-if (isset($_POST["boutonnouveauxcommentaires"])) {
-  if(! isset($_POST["nouveautitre"]) || empty($_POST["nouveautitre"])) {
+if (isset($_POST["boutonnouveauxcommentaires"]) || isset($_POST["boutonnouveauxcommentaires_x"])) {
+  if(issetAndNoEmpty('nouveautitre') === false) {
     $err |= COMMENT_EMPTY;
   } else {
-    //envoi du mail pour prevenir l'admin de sondage
-    mail ($adresseadmin,
-          _("[ADMINISTRATOR] New comments for your poll") . ' ' . NOMAPPLICATION,
-          _("You have changed the comments of your poll. \nYou can modify this poll with this link") .
-          " :\n\n".getUrlSondage($numsondageadmin, true)." \n\n" .
-          _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
-          $headers);
+    $commentaires = htmlentities(html_entity_decode($_POST['nouveauxcommentaires'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
     
     //modification de la base SQL avec les nouveaux commentaires
-    $connect->Execute("UPDATE sondage SET commentaires = '" . $connect->qstr(strip_tags($nouveauxcommentaires)) . "' WHERE id_sondage = '" . $numsondage . "'");
+    $sql = 'UPDATE sondage SET commentaires = '.$connect->Param('commentaires').' WHERE id_sondage = '.$connect->Param('numsondage');
+    $sql = $connect->Prepare($sql);
+    
+    if ($connect->Execute($sql, array($commentaires, $numsondage))) {
+      //envoi du mail pour prevenir l'admin de sondage
+      mail ($adresseadmin,
+            _("[ADMINISTRATOR] New comments for your poll") . ' ' . NOMAPPLICATION,
+            _("You have changed the comments of your poll. \nYou can modify this poll with this link") .
+            " :\n\n".getUrlSondage($numsondageadmin, true)." \n\n" .
+            _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
+            $headers);
+    }
   }
 }
 
 //si la valeur de la nouvelle adresse est valide et que le bouton est activé
-if (isset($_POST["boutonnouvelleadresse"])){
-  if(! isset($_POST["nouvelleadresse"]) || empty($_POST["nouvelleadresse"]) ||
-     ! filter_var($_POST["nouvelleadresse"], FILTER_VALIDATE_EMAIL) || strpos($_POST["nouvelleadresse"], '@') === false) {
+if (isset($_POST["boutonnouvelleadresse"]) || isset($_POST["boutonnouvelleadresse_x"])) {
+  if(issetAndNoEmpty('nouvelleadresse') === false || validateEmail($_POST["nouvelleadresse"]) === false) {
     $err |= INVALID_EMAIL;
   } else {
-    //envoi du mail pour prevenir l'admin de sondage
-    mail ($_POST['nouvelleadresse'],
-          _("[ADMINISTRATOR] New email address for your poll") . ' ' . NOMAPPLICATION,
-          _("You have changed your email address in your poll. \nYou can modify this poll with this link") .
-          " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" .
-          _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
-          $headers);
+    $nouvelleadresse = htmlentities(html_entity_decode($_POST['nouvelleadresse'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
     
     //modification de la base SQL avec la nouvelle adresse
-    $connect->Execute("UPDATE sondage SET mail_admin = '" . $_POST['nouvelleadresse'] . "' WHERE id_sondage = '" . $numsondage . "'");
+    $sql = 'UPDATE sondage SET mail_admin = '.$connect->Param('nouvelleadresse').' WHERE id_sondage = '.$connect->Param('numsondage');
+    $sql = $connect->Prepare($sql);
+    
+    if ($connect->Execute($sql, array($nouvelleadresse, $numsondage))) {
+      //envoi du mail pour prevenir l'admin de sondage
+      mail ($_POST['nouvelleadresse'],
+            _("[ADMINISTRATOR] New email address for your poll") . ' ' . NOMAPPLICATION,
+            _("You have changed your email address in your poll. \nYou can modify this poll with this link") .
+            " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" .
+            _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
+            $headers);
+    }
   }
 }
 
@@ -167,8 +180,7 @@ if (isset($_POST["boutonnouvelleadresse"])){
 $dsujet=$sujets->FetchObject(false);
 $dsondage=$sondage->FetchObject(false);
 
-if ($_POST["ajoutsujet_x"]){
-
+if (isset($_POST["ajoutsujet"]) || isset($_POST["ajoutsujet_x"])) {
   print_header(true);
   echo '<body>'."\n";
   logo();
@@ -197,22 +209,22 @@ if ($_POST["ajoutsujet_x"]){
 
     echo '<select name="nouveaumois"> '."\n";
     echo '<OPTION VALUE="vide"></OPTION>'."\n";
-    for($i=1;$i<13;$i++) {
-      echo '<OPTION VALUE="'.$i.'">'.strftime('%B').'</OPTION>'."\n";
+    for($i = 1; $i < 13; $i++) {
+      echo '<OPTION VALUE="'.$i.'">'.strftime('%B', mktime(0, 0, 0, $i)).'</OPTION>'."\n";
     }
     echo '</SELECT>'."\n";
 
     
     echo '<select name="nouvelleannee"> '."\n";
     echo '<OPTION VALUE="vide"></OPTION>'."\n";
-    for ($i=date("Y");$i<(date("Y")+5);$i++){
+    for ($i = date("Y"); $i < (date("Y") + 5); $i++) {
       echo '<OPTION VALUE="'.$i.'">'.$i.'</OPTION>'."\n";
     }
     echo '</SELECT>'."\n";
     echo '<br><br>'. _("Add a start hour (optional)") .' : <br><br>'."\n";
     echo '<select name="nouvelleheuredebut"> '."\n";
     echo '<OPTION VALUE="vide"></OPTION>'."\n";
-    for ($i=7;$i<22;$i++){
+    for ($i = 7; $i < 22; $i++) {
       echo '<OPTION VALUE="'.$i.'">'.$i.' H</OPTION>'."\n";
     }
     echo '</SELECT>'."\n";
@@ -226,7 +238,7 @@ if ($_POST["ajoutsujet_x"]){
     echo '<br><br>'. _("Add a end hour (optional)") .' : <br><br>'."\n";
     echo '<select name="nouvelleheurefin"> '."\n";
     echo '<OPTION VALUE="vide"></OPTION>'."\n";
-    for ($i=7;$i<22;$i++){
+    for ($i = 7; $i < 22; $i++) {
       echo '<OPTION VALUE="'.$i.'">'.$i.' H</OPTION>'."\n";
     }
     echo '</SELECT>'."\n";
@@ -254,68 +266,74 @@ if ($_POST["ajoutsujet_x"]){
 }
 
 //action si bouton confirmation de suppression est activé
-if ($_POST["confirmesuppression"]) {
+if (isset($_POST["confirmesuppression"]) || isset($_POST["confirmesuppression_x"])) {
   $nbuser=$user_studs->RecordCount();
   $date=date('H:i:s d/m/Y:');
 
-  // on ecrit dans le fichier de logs la suppression du sondage
-  error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\t$nbuser\t$dsujets->sujet\n", 3, 'admin/logs_studs.txt');
-
-  //envoi du mail a l'administrateur du sondage
-  mail ($adresseadmin, 
-        _("[ADMINISTRATOR] Removing of your poll") . ' ' . NOMAPPLICATION,
-        _("You have removed your poll. \nYou can make new polls with this link") .
-        " :\n\n".get_server_name()."index.php \n\n" .
-        _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
-        $headers);
-
   //destruction des données dans la base SQL
-  $connect->Execute('DELETE FROM sondage LEFT INNER JOIN sujet_studs ON sujet_studs.id_sondage = sondage.id_sondage '.
-                    'LEFT INNER JOIN user_studs ON user_studs.id_sondage = sondage.id_sondage ' .
-                    'LEFT INNER JOIN comments ON comments.id_sondage = sondage.id_sondage ' .
-                    "WHERE id_sondage = '$numsondage' ");
-
-  //affichage de l'ecran de confirmation de suppression de sondage
-  print_header();
-  echo '<body>'."\n";
-  logo();
-  bandeau_tete();
-  bandeau_titre(_("Make your polls"));
+  $sql = 'DELETE FROM sondage LEFT INNER JOIN sujet_studs ON sujet_studs.id_sondage = sondage.id_sondage '.
+         'LEFT INNER JOIN user_studs ON user_studs.id_sondage = sondage.id_sondage '.
+         'LEFT INNER JOIN comments ON comments.id_sondage = sondage.id_sondage '.
+         'WHERE id_sondage = '.$connect->Param('numsondage');
+  $sql = $connect->Prepare($sql);
+  if ($connect->Execute($sql, array($numsondage))) {
+    // on ecrit dans le fichier de logs la suppression du sondage
+    error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\t$nbuser\t$dsujets->sujet\n", 3, 'admin/logs_studs.txt');
+  
+    //envoi du mail a l'administrateur du sondage
+    mail ($adresseadmin, 
+          _("[ADMINISTRATOR] Removing of your poll") . ' ' . NOMAPPLICATION,
+          _("You have removed your poll. \nYou can make new polls with this link") .
+          " :\n\n".get_server_name()."index.php \n\n" .
+          _("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
+          $headers);
 
-  echo '<div class="corpscentre">'."\n";
-  print "<H2>" . _("Your poll has been removed!") . "</H2><br><br>";
-  print  _("Back to the homepage of ") . " <a href=\"index.php\"> ".NOMAPPLICATION."</A>."."\n";
-  echo '<br><br><br>'."\n";
-  echo '</div>'."\n";
-  sur_bandeau_pied();
-  bandeau_pied();
-  echo '</form>'."\n";
-  echo '</body>'."\n";
-  echo '</html>'."\n";
-  die();
+    //affichage de l'ecran de confirmation de suppression de sondage
+    print_header();
+    echo '<body>'."\n";
+    logo();
+    bandeau_tete();
+    bandeau_titre(_("Make your polls"));
+  
+    echo '<div class="corpscentre">'."\n";
+    print "<H2>" . _("Your poll has been removed!") . "</H2><br><br>";
+    print  _("Back to the homepage of ") . " <a href=\"index.php\"> ".NOMAPPLICATION."</A>."."\n";
+    echo '<br><br><br>'."\n";
+    echo '</div>'."\n";
+    sur_bandeau_pied();
+    bandeau_pied();
+    echo '</form>'."\n";
+    echo '</body>'."\n";
+    echo '</html>'."\n";
+    die();
+  }
 }
 
 // quand on ajoute un commentaire utilisateur
-if(isset($_POST['ajoutcomment'])) {
-  if(!isset($_POST["commentuser"]) || empty($_POST["commentuser"])) {
+if(isset($_POST['ajoutcomment']) || isset($_POST['ajoutcomment_x'])) {
+  if(issetAndNoEmpty('commentuser') === false) {
     $err |= COMMENT_USER_EMPTY;
   } else {
-    $comment_user = $connect->qstr(strip_tags($_POST["commentuser"]));
+    $comment_user = htmlentities(html_entity_decode($_POST["commentuser"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
   }
-  if(empty($_POST["comment"])) {
+  
+  if(issetAndNoEmpty('comment') === false) {
     $err |= COMMENT_EMPTY;
   }
 
-  if (isset($_POST["comment"]) &&
-      ! is_error(COMMENT_EMPTY) && ! is_error(NO_POLL) &&
-      ! is_error(COMMENT_USER_EMPTY)) {
-    if( ! $connect->Execute('INSERT INTO comments ' .
-          '(id_sondage, comment, usercomment) VALUES ("'.
-          $numsondage . '","'.
-          $connect->qstr(strip_tags($_POST['comment'])).
-          '","' .
-          $comment_user .'")') );
-    $err |= COMMENT_INSERT_FAILED;
+  if (issetAndNoEmpty('comment') && !is_error(COMMENT_EMPTY) && !is_error(NO_POLL) && !is_error(COMMENT_USER_EMPTY)) {
+    $comment = htmlentities(html_entity_decode($_POST["comment"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
+    
+    $sql = 'INSERT INTO comments (id_sondage, comment, usercomment) VALUES ('.
+            $connect->Param('id_sondage').','.
+            $connect->Param('comment').','.
+            $connect->Param('comment_user').')';
+    $sql = $connect->Prepare($sql);
+    
+    $comments = $connect->Execute($sql, array($numsondage, $comment, $comment_user));
+    if ($comments === false) {
+      $err |= COMMENT_INSERT_FAILED;
+    }
   }
 }
 
@@ -350,15 +368,18 @@ echo '<br>'."\n";
 echo '</div>'."\n";
 
 
-$nbcolonnes=substr_count($dsujet->sujet,',')+1;
-$nblignes=$user_studs->RecordCount();
+$nbcolonnes = substr_count($dsujet->sujet, ',') + 1;
+$nblignes = $user_studs->RecordCount();
 
 //si il n'y a pas suppression alors on peut afficher normalement le tableau
 
 //action si le bouton participer est cliqué
-if ($_POST["boutonp"]||$_POST["boutonp_x"]) {
+if (isset($_POST["boutonp"]) || isset($_POST["boutonp_x"])) {
   //si on a un nom dans la case texte
-  if ($_POST["nom"]) {
+  if (issetAndNoEmpty('nom')){
+    $nouveauchoix = '';
+    $erreur_prenom = false;
+    
     for ($i=0;$i<$nbcolonnes;$i++){
       //si la checkbox est cochée alors valeur est egale à 1
       if (isset($_POST["choix$i"])){
@@ -368,27 +389,29 @@ if ($_POST["boutonp"]||$_POST["boutonp_x"]) {
       }
     }
     
-    while( $user=$user_studs->FetchNextObject(false)) {
-      if ($_POST["nom"]==$user->nom){
+    $nom = htmlentities(html_entity_decode($_POST["nom"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
+    while($user = $user_studs->FetchNextObject(false)) {
+      if ($nom == $user->nom){
         $erreur_prenom="yes";
       }
     }
     
-    if (preg_match(';<|>|"|\';i', $_POST["nom"])) {
-      $erreur_injection="yes";
-    }
-    
     // Ecriture des choix de l'utilisateur dans la base
-    if (!$erreur_prenom&&!$erreur_injection) {
-      $nom=str_replace("'","°",$_POST["nom"]);
-      $connect->Execute("INSERT INTO user_studs VALUES ('$nom', '$numsondage', '$nouveauchoix')");
+    if (!$erreur_prenom) {
+      $sql = 'INSERT INTO user_studs (nom, id_sondage, reponses) VALUES ('.
+              $connect->Param('nom').','.
+              $connect->Param('numsondage').','.
+              $connect->Param('nouveauchoix').')';
+              
+      $sql = $connect->Prepare($sql);
+      $connect->Execute($sql, array($nom, $numsondage, $nouveauchoix));
     }
   }
 }
 
 
 //action quand on ajoute une colonne au format AUTRE
-if ($_POST["ajoutercolonne_x"] && $_POST["nouvellecolonne"]!=""&&($dsondage->format=="A"||$dsondage->format=="A+")) {
+if (isset($_POST["ajoutercolonne_x"]) && issetAndNoEmpty('nouvellecolonne') && ($dsondage->format == "A" || $dsondage->format == "A+")) {
   $nouveauxsujets=$dsujet->sujet;
   
   //on rajoute la valeur a la fin de tous les sujets deja entrés
@@ -397,22 +420,30 @@ if ($_POST["ajoutercolonne_x"] && $_POST["nouvellecolonne"]!=""&&($dsondage->for
   $nouveauxsujets=str_replace("'","°",$nouveauxsujets);
   
   //mise a jour avec les nouveaux sujets dans la base
-  $connect->Execute("UPDATE sujet_studs SET sujet = '$nouveauxsujets' WHERE id_sondage = '$numsondage' ");
-  
-  //envoi d'un mail pour prévenir l'administrateur du changement
-  $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit";
-  mail ("$adresseadmin", "" . _("[ADMINISTRATOR] New column for your poll").NOMAPPLICATION, "" . _("You have added a new column in your poll. \nYou can inform the voters of this change with this link") . " : \n\n".get_server_name()."/studs.php?sondage=$numsondage \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,$headers);
+  $sql = 'UPDATE sujet_studs SET sujet = '.$connect->Param('nouveauxsujets').' WHERE id_sondage = '.$connect->Param('numsondage');
+  $sql = $connect->Prepare($sql);
+  if ($connect->Execute($sql, array($nouveauxsujets, $numsondage))) {
+    //envoi d'un mail pour prévenir l'administrateur du changement
+    $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit";
+    mail ("$adresseadmin", "" . _("[ADMINISTRATOR] New column for your poll").NOMAPPLICATION, "" .
+          _("You have added a new column in your poll. \nYou can inform the voters of this change with this link") .
+          " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,
+          $headers);
+  }
 }
 
 
 //action quand on ajoute une colonne au format DATE
-if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+")) {
+if (isset($_POST["ajoutercolonne_x"]) && ($dsondage->format == "D" || $dsondage->format == "D+")) {
   $nouveauxsujets=$dsujet->sujet;
   
-  if ($_POST["nouveaujour"]!="vide"&&$_POST["nouveaumois"]!="vide"&&$_POST["nouvelleannee"]!="vide") {
-    $nouvelledate=mktime(0,0,0,$_POST["nouveaumois"],$_POST["nouveaujour"],$_POST["nouvelleannee"]);
+  if (isset($_POST["nouveaujour"]) && $_POST["nouveaujour"] != "vide" &&
+      isset($_POST["nouveaumois"]) && $_POST["nouveaumois"] != "vide" &&
+      isset($_POST["nouvelleannee"]) && $_POST["nouvelleannee"] != "vide") {
     
-    if ($_POST["nouvelleheuredebut"]!="vide") {
+    $nouvelledate=mktime(0, 0, 0, $_POST["nouveaumois"], $_POST["nouveaujour"], $_POST["nouvelleannee"]);
+    
+    if (isset($_POST["nouvelleheuredebut"]) && $_POST["nouvelleheuredebut"]!="vide"){
       $nouvelledate.="@";
       $nouvelledate.=$_POST["nouvelleheuredebut"];
       $nouvelledate.="h";
@@ -422,7 +453,7 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+
       }
     }
     
-    if ($_POST["nouvelleheurefin"]!="vide") {
+    if (isset($_POST["nouvelleheurefin"]) && $_POST["nouvelleheurefin"]!="vide"){
       $nouvelledate.="-";
       $nouvelledate.=$_POST["nouvelleheurefin"];
       $nouvelledate.="h";
@@ -432,55 +463,63 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+
       }
     }
     
-    if($_POST["nouvelleheuredebut"]=="vide"||($_POST["nouvelleheuredebut"]&&$_POST["nouvelleheurefin"]&&(($_POST["nouvelleheuredebut"]<$_POST["nouvelleheurefin"])||(($_POST["nouvelleheuredebut"]==$_POST["nouvelleheurefin"])&&($_POST["nouvelleminutedebut"]<$_POST["nouvelleminutefin"]))))) {
-      
+    if($_POST["nouvelleheuredebut"] == "vide" || ($_POST["nouvelleheuredebut"] && $_POST["nouvelleheurefin"] && (($_POST["nouvelleheuredebut"] < $_POST["nouvelleheurefin"]) || (($_POST["nouvelleheuredebut"] == $_POST["nouvelleheurefin"]) && ($_POST["nouvelleminutedebut"] < $_POST["nouvelleminutefin"]))))) {
+      $erreur_ajout_date = false;
     } else {
-      $erreur_ajout_date="yes";
+      $erreur_ajout_date = "yes";
     }
     
     //on rajoute la valeur dans les valeurs
-    $datesbase=explode(",",$dsujet->sujet);
-    $taillebase=sizeof($datesbase);
+    $datesbase = explode(",",$dsujet->sujet);
+    $taillebase = sizeof($datesbase);
     
     //recherche de l'endroit de l'insertion de la nouvelle date dans les dates deja entrées dans le tableau
-    if ($nouvelledate<$datesbase[0]) {
-      $cleinsertion=0;
-    } elseif ($nouvelledate>$datesbase[$taillebase-1]) {
-      $cleinsertion=count($datesbase);
+    if ($nouvelledate < $datesbase[0]) {
+      $cleinsertion = 0;
+    } elseif ($nouvelledate > $datesbase[$taillebase-1]) {
+      $cleinsertion = count($datesbase);
     } else {
-      for ($i=0;$i<count($datesbase);$i++) {
-        $j=$i+1;
-        if ($nouvelledate>$datesbase[$i]&&$nouvelledate<$datesbase[$j]) {
-          $cleinsertion=$j;
+      for ($i = 0; $i < count($datesbase); $i++) {
+        $j = $i + 1;
+        if ($nouvelledate > $datesbase[$i] && $nouvelledate < $datesbase[$j]) {
+          $cleinsertion = $j;
         }
       }
     }
     
-    array_splice($datesbase,$cleinsertion,0,$nouvelledate);
-    $cle=array_search ($nouvelledate,$datesbase);
-    
-    for ($i=0;$i<count($datesbase);$i++) {
+    array_splice($datesbase, $cleinsertion, 0, $nouvelledate);
+    $cle = array_search($nouvelledate, $datesbase);
+    $dateinsertion = '';
+    for ($i = 0; $i < count($datesbase); $i++) {
       $dateinsertion.=",";
       $dateinsertion.=$datesbase[$i];
     }
     
-    $dateinsertion=substr("$dateinsertion",1);
+    $dateinsertion = substr("$dateinsertion", 1);
     
     //mise a jour avec les nouveaux sujets dans la base
-    if (!$erreur_ajout_date) {
-      $connect->Execute("UPDATE sujet_studs SET sujet = '$dateinsertion' WHERE id_sondage = '$numsondage' ");
+    if (isset($erreur_ajout_date) && !$erreur_ajout_date){
+      $sql = 'UPDATE sujet_studs SET sujet = '.$connect->Param('dateinsertion').' WHERE id_sondage = '.$connect->Param('numsondage');
+      $sql = $connect->Prepare($sql);
+      $connect->Execute($sql, array($dateinsertion, $numsondage));
+      
       if ($nouvelledate > strtotime($dsondage->date_fin)) {
         $date_fin=$nouvelledate+200000;
-        $connect->Execute("UPDATE sondage SET date_fin = '$date_fin' WHERE id_sondage = '$numsondage' ");
+        $sql = 'UPDATE sondage SET date_fin = '.$connect->Param('date_fin').' WHERE id_sondage = '.$connect->Param('numsondage');
+        $sql = $connect->Prepare($sql);
+        $connect->Execute($sql, array($date_fin, $numsondage));
       }
     }
     
     //mise a jour des reponses actuelles correspondant au sujet ajouté
-    while ($data=$user_studs->FetchNextObject(false)) {
+    $sql = 'UPDATE user_studs SET reponses = '.$connect->Param('reponses').' WHERE nom = '.$connect->Param('nom').' AND id_users='.$connect->Param('id_users');
+    $sql = $connect->Prepare($sql);
+    while ($data = $user_studs->FetchNextObject(false)) {
       $ensemblereponses=$data->reponses;
+      $newcar = '';
       
       //parcours de toutes les réponses actuelles
-      for ($j=0;$j<$nbcolonnes;$j++) {
+      for ($j = 0; $j < $nbcolonnes; $j++) {
         $car=substr($ensemblereponses,$j,1);
         
         //si les reponses ne concerne pas la colonne ajoutée, on concatene
@@ -492,18 +531,18 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+
       }
       
       //mise a jour des reponses utilisateurs dans la base
-      if (!$erreur_ajout_date) {
-        $connect->Execute("update user_studs set reponses='$newcar' where nom='$data->nom' and id_users=$data->id_users");
+      if (isset($erreur_ajout_date) && !$erreur_ajout_date){
+        $connect->Execute($sql, array($newcar, $data->nom, $data->id_users));
       }
-      
-      $newcar="";
     }
     
     //envoi d'un mail pour prévenir l'administrateur du changement
-    $adresseadmin=$dsondage->mail_admin;
+    $adresseadmin = $dsondage->mail_admin;
+    
     mail ($adresseadmin,
           _("[ADMINISTRATOR] New column for your poll"),
-          _("You have added a new column in your poll. \nYou can inform the voters of this change with this link") . " : \n\n".get_server_name()."/studs.php?sondage=$numsondage \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,
+          _("You have added a new column in your poll. \nYou can inform the voters of this change with this link").
+          " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,
           $headers);
   } else {
     $erreur_ajout_date="yes";
@@ -512,13 +551,15 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+
 
 
 //suppression de ligne dans la base
-for ($i=0;$i<$nblignes;$i++) {
-  if ($_POST["effaceligne$i"]||$_POST['effaceligne'.$i.'_x']) {
+for ($i = 0; $i < $nblignes; $i++) {
+  if (isset($_POST["effaceligne$i"]) || isset($_POST['effaceligne'.$i.'_x'])) {
     $compteur=0;
+    $sql = 'DELETE FROM user_studs WHERE nom = '.$connect->Param('nom').' AND id_users = '.$connect->Param('id_users');
+    $sql = $connect->Prepare($sql);
     
     while ($data=$user_studs->FetchNextObject(false)) {
       if ($compteur==$i){
-        $connect->Execute("delete from user_studs where nom = '$data->nom' and id_users = '$data->id_users'");
+        $connect->Execute($sql, array($data->nom, $data->id_users));
       }
       
       $compteur++;
@@ -528,11 +569,15 @@ for ($i=0;$i<$nblignes;$i++) {
 
 
 //suppression d'un commentaire utilisateur
-$comment_user=$connect->Execute("select * from comments where id_sondage='$numsondage' order by id_comment");
+$sql = 'SELECT * FROM comments WHERE id_sondage='.$connect->Param('numsondage').' ORDER BY id_comment';
+$sql = $connect->Prepare($sql);
+$comment_user = $connect->Execute($sql, array($numsondage));
 $i = 0;
 while ($dcomment = $comment_user->FetchNextObject(false)) {
-  if ($_POST['suppressioncomment'.$i.'_x']) {
-    $connect->Execute("delete from comments where id_comment = '$dcomment->id_comment'");
+  if (isset($_POST['suppressioncomment'.$i.'_x'])) {
+    $sql = 'DELETE FROM comments WHERE id_comment = '.$connect->Param('id_comment');
+    $sql = $connect->Prepare($sql);
+    $connect->Execute($sql, array($dcomment->id_comment));
   }
   
   $i++;
@@ -540,14 +585,17 @@ while ($dcomment = $comment_user->FetchNextObject(false)) {
 
 
 //on teste pour voir si une ligne doit etre modifiée
-for ($i=0;$i<$nblignes;$i++) {
-  if (isset($_POST["modifierligne$i"])||isset($_POST['modifierligne'.$i.'_x'])) {
+$testmodifier = false;
+$testligneamodifier = false;
+
+for ($i = 0; $i < $nblignes; $i++) {
+  if (isset($_POST["modifierligne$i"]) || isset($_POST['modifierligne'.$i.'_x'])) {
     $ligneamodifier=$i;
     $testligneamodifier="true";
   }
   
   //test pour voir si une ligne est a modifier
-  if (isset($_POST["validermodifier$i"])) {
+  if (isset($_POST["validermodifier$i"]) || isset($_POST['validermodifier'.$i.'_x'])) {
     $modifier=$i;
     $testmodifier="true";
   }
@@ -556,7 +604,8 @@ for ($i=0;$i<$nblignes;$i++) {
 
 //si le test est valide alors on affiche des checkbox pour entrer de nouvelles valeurs
 if ($testmodifier) {
-  for ($i=0;$i<$nbcolonnes;$i++) {
+  $nouveauchoix = '';
+  for ($i = 0; $i < $nbcolonnes; $i++) {
     //recuperation des nouveaux choix de l'utilisateur
     if (isset($_POST["choix$i"])) {
       $nouveauchoix.="1";
@@ -567,10 +616,12 @@ if ($testmodifier) {
   
   $compteur=0;
   
-  while ( $data=$user_studs->FetchNextObject(false)) {
+  while ($data=$user_studs->FetchNextObject(false)) {
     //mise a jour des données de l'utilisateur dans la base SQL
     if ($compteur==$modifier) {
-      $connect->Execute("update user_studs set reponses='$nouveauchoix' where nom='$data->nom' and id_users='$data->id_users'");
+      $sql = 'UPDATE user_studs SET reponses = '.$connect->Param('reponses').' WHERE nom = '.$connect->Param('nom').' AND id_users = '.$connect->Param('id_users');
+      $sql = $connect->Prepare($sql);
+      $connect->Execute($sql, array($nouveauchoix, $data->nom, $data->id_users));
     }
     
     $compteur++;
@@ -579,56 +630,87 @@ if ($testmodifier) {
 
 
 //suppression de colonnes dans la base
-for ($i=0;$i<$nbcolonnes;$i++) {
-  if ((isset($_POST["effacecolonne$i"])||isset($_POST['effacecolonne'.$i.'_x']))&&$nbcolonnes>1){
-    $toutsujet=explode(",",$dsujet->sujet);
-    $j=0;
+for ($i = 0; $i < $nbcolonnes; $i++) {
+  if ((isset($_POST["effacecolonne$i"]) || isset($_POST['effacecolonne'.$i.'_x'])) && $nbcolonnes > 1){
+    $toutsujet = explode(",",$dsujet->sujet);
+    $j = 0;
+    $nouveauxsujets = '';
     
     //parcours de tous les sujets actuels
-    while ($toutsujet[$j]) {
+    while (isset($toutsujet[$j])) {
       //si le sujet n'est pas celui qui a été effacé alors on concatene
-      if ($i!=$j) {
-        $nouveauxsujets.=',';
-        $nouveauxsujets.=$toutsujet[$j];
+      if ($i != $j) {
+        $nouveauxsujets .= ',';
+        $nouveauxsujets .= $toutsujet[$j];
       }
       
       $j++;
     }
     
     //on enleve la virgule au début
-    $nouveauxsujets=substr("$nouveauxsujets",1);
+    $nouveauxsujets = substr("$nouveauxsujets", 1);
     
     //nettoyage des reponses actuelles correspondant au sujet effacé
     $compteur = 0;
-    while ($data=$user_studs->FetchNextObject(false)) {
-      $ensemblereponses=$data->reponses;
+    $sql = 'UPDATE user_studs SET reponses = '.$connect->Param('reponses').' WHERE nom = '.$connect->Param('nom').' AND id_users = '.$connect->Param('id_users');
+    $sql = $connect->Prepare($sql);
+    
+    while ($data = $user_studs->FetchNextObject(false)) {
+      $newcar = '';
+      $ensemblereponses = $data->reponses;
       
       //parcours de toutes les réponses actuelles
-      for ($j=0;$j<$nbcolonnes;$j++) {
-        $car=substr($ensemblereponses,$j,1);
+      for ($j = 0; $j < $nbcolonnes; $j++) {
+        $car=substr($ensemblereponses, $j, 1);
         //si les reponses ne concerne pas la colonne effacée, on concatene
-        if ($i!=$j) {
-          $newcar.=$car;
+        if ($i != $j) {
+          $newcar .= $car;
         }
       }
       
       $compteur++;
       
       //mise a jour des reponses utilisateurs dans la base
-      $connect->Execute("update user_studs set reponses='$newcar' where nom='$data->nom' and id_users=$data->id_users");
-      $newcar="";
+      $connect->Execute($sql, array($newcar, $data->nom, $data->id_users));
     }
     
     //mise a jour des sujets dans la base
-    $connect->Execute("update sujet_studs set sujet = '$nouveauxsujets' where id_sondage = '$numsondage' ");
+    $sql = 'UPDATE sujet_studs SET sujet = '.$connect->Param('nouveauxsujets').' WHERE id_sondage = '.$connect->Param('numsondage');
+    $sql = $connect->Prepare($sql);
+    $connect->Execute($sql, array($nouveauxsujets, $numsondage));
   }
 }
 
 
 //recuperation des donnes de la base
-$sondage=$connect->Execute("select * from sondage where id_sondage_admin = '$numsondageadmin'");
-$sujets=$connect->Execute("select * from sujet_studs where id_sondage='$numsondage'");
-$user_studs=$connect->Execute("select * from user_studs where id_sondage='$numsondage' order by id_users");
+$sql = 'SELECT * FROM sondage WHERE id_sondage_admin = '.$connect->Param('numsondageadmin');
+$sql = $connect->Prepare($sql);
+$sondage = $connect->Execute($sql, array($numsondageadmin));
+
+if ($sondage !== false) {
+  $sql = 'SELECT * FROM sujet_studs WHERE id_sondage = '.$connect->Param('numsondage');
+  $sql = $connect->Prepare($sql);
+  $sujets = $connect->Execute($sql, array($numsondage));
+  
+  $sql = 'SELECT * FROM user_studs WHERE id_sondage = '.$connect->Param('numsondage').' order by id_users';
+  $sql = $connect->Prepare($sql);
+  $user_studs = $connect->Execute($sql, array($numsondage));
+} else {
+  print_header(false);
+  echo '<body>'."\n";
+  logo();
+  bandeau_tete();
+  bandeau_titre(_("Error!"));
+  echo '<div class=corpscentre>'."\n";
+  print "<H2>" . _("This poll doesn't exist !") . "</H2><br><br>"."\n";
+  print "" . _("Back to the homepage of ") . " <a href=\"index.php\"> ".NOMAPPLICATION."</A>. "."\n";
+  echo '<br><br><br><br>'."\n";
+  echo '</div>'."\n";
+  bandeau_pied();
+  echo'</body>'."\n";
+  echo '</html>'."\n";
+  die();
+}
 
 //on recupere les données et les sujets du sondage
 $dsujet=$sujets->FetchObject(false);
@@ -654,7 +736,7 @@ echo '<td></td>'."\n";
 echo '<td></td>'."\n";
 
 //boucle pour l'affichage des boutons de suppression de colonne
-for ($i=0;$toutsujet[$i];$i++) {
+for ($i = 0; isset($toutsujet[$i]); $i++) {
   echo '<td class=somme><input type="image" name="effacecolonne'.$i.'" value="Effacer la colonne" src="images/cancel.png"></td>'."\n";
 }
 
@@ -670,11 +752,23 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
   
   //affichage des années
   $colspan=1;
-  for ($i=0;$i<count($toutsujet);$i++) {
-    if (strftime("%Y",$toutsujet[$i])==strftime("%Y",$toutsujet[$i+1])) {
+  for ($i = 0; $i < count($toutsujet); $i++) {
+    $current = $toutsujet[$i];
+    
+    if (strpos($toutsujet[$i], '@') !== false) {
+      $current = substr($toutsujet[$i], 0, strpos($toutsujet[$i], '@'));
+    }
+    
+    if (isset($toutsujet[$i+1]) && strpos($toutsujet[$i+1], '@') !== false) {
+      $next = substr($toutsujet[$i+1], 0, strpos($toutsujet[$i+1], '@'));
+    } elseif (isset($toutsujet[$i+1])) {
+      $next = $toutsujet[$i+1];
+    }
+    
+    if (isset($toutsujet[$i+1]) && strftime("%Y",$current) == strftime("%Y",$next)){
       $colspan++;
     } else {
-      echo '<td colspan='.$colspan.' class="annee">'.strftime("%Y",$toutsujet[$i]).'</td>'."\n";
+      echo '<td colspan='.$colspan.' class="annee">'.strftime("%Y", $current).'</td>'."\n";
       $colspan=1;
     }
   }
@@ -686,15 +780,27 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
   echo '<td></td>'."\n";
   
   //affichage des mois
-  $colspan=1;
-  for ($i=0;$i<count($toutsujet);$i++) {
-    if (strftime("%B",$toutsujet[$i])==strftime("%B",$toutsujet[$i+1])&&strftime("%Y",$toutsujet[$i])==strftime("%Y",$toutsujet[$i+1])) {
+  $colspan = 1;
+  for ($i = 0; $i < count($toutsujet); $i++) {
+    $current = $toutsujet[$i];
+    
+    if (strpos($toutsujet[$i], '@') !== false) {
+      $current = substr($toutsujet[$i], 0, strpos($toutsujet[$i], '@'));
+    }
+    
+    if (isset($toutsujet[$i+1]) && strpos($toutsujet[$i+1], '@') !== false) {
+      $next = substr($toutsujet[$i+1], 0, strpos($toutsujet[$i+1], '@'));
+    } elseif (isset($toutsujet[$i+1])) {
+      $next = $toutsujet[$i+1];
+    }
+    
+    if (isset($toutsujet[$i+1]) && strftime("%B", $current) == strftime("%B", $next) && strftime("%Y", $current) == strftime("%Y", $next)){
       $colspan++;
     } else {
       if ($_SESSION["langue"]=="EN") {
-        echo '<td colspan='.$colspan.' class="mois">'.date("F",$toutsujet[$i]).'</td>'."\n";
+        echo '<td colspan='.$colspan.' class="mois">'.date("F",$current).'</td>'."\n";
       } else {
-        echo '<td colspan='.$colspan.' class="mois">'.strftime("%B",$toutsujet[$i]).'</td>'."\n";
+        echo '<td colspan='.$colspan.' class="mois">'.strftime("%B",$current).'</td>'."\n";
       }
       
       $colspan=1;
@@ -708,15 +814,27 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
   echo '<td></td>'."\n";
   
   //affichage des jours
-  $colspan=1;
-  for ($i=0;$i<count($toutsujet);$i++) {
-    if (strftime("%a %e",$toutsujet[$i])==strftime("%a %e",$toutsujet[$i+1])&&strftime("%B",$toutsujet[$i])==strftime("%B",$toutsujet[$i+1])) {
+  $colspan = 1;
+  for ($i = 0; $i < count($toutsujet); $i++) {
+    $current = $toutsujet[$i];
+    
+    if (strpos($toutsujet[$i], '@') !== false) {
+      $current = substr($toutsujet[$i], 0, strpos($toutsujet[$i], '@'));
+    }
+    
+    if (isset($toutsujet[$i+1]) && strpos($toutsujet[$i+1], '@') !== false) {
+      $next = substr($toutsujet[$i+1], 0, strpos($toutsujet[$i+1], '@'));
+    } elseif (isset($toutsujet[$i+1])) {
+      $next = $toutsujet[$i+1];
+    }
+    
+    if (isset($toutsujet[$i+1]) && strftime("%a %e",$current)==strftime("%a %e",$next)&&strftime("%B",$current)==strftime("%B",$next)){
       $colspan++;
     } else {
       if ($_SESSION["langue"]=="EN") {
-        echo '<td colspan='.$colspan.' class="jour">'.date("D jS",$toutsujet[$i]).'</td>'."\n";
+        echo '<td colspan='.$colspan.' class="jour">'.date("D jS",$current).'</td>'."\n";
       } else {
-        echo '<td colspan='.$colspan.' class="jour">'.strftime("%a %e",$toutsujet[$i]).'</td>'."\n";
+        echo '<td colspan='.$colspan.' class="jour">'.strftime("%a %e",$current).'</td>'."\n";
       }
       
       $colspan=1;
@@ -732,9 +850,13 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
     echo '<td></td>'."\n";
     echo '<td></td>'."\n";
     
-    for ($i=0;$toutsujet[$i];$i++) {
-      $heures=explode("@",$toutsujet[$i]);
-      echo '<td class="heure">'.$heures[1].'</td>'."\n";
+    for ($i = 0; isset($toutsujet[$i]); $i++) {
+      $heures=explode("@", $toutsujet[$i]);
+      if (isset($heures[1])) {
+        echo '<td class="heure">'.$heures[1].'</td>'."\n";
+      } else {
+        echo '<td class="heure"></td>'."\n";
+      }
     }
     
     echo '<td class="heure"><input type="image" name="ajoutsujet" src="images/add-16.png"  alt="' . _('Add') . '"></td>'."\n";
@@ -748,7 +870,7 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
   echo '<td></td>'."\n";
   echo '<td></td>'."\n";
   
-  for ($i=0;$toutsujet[$i];$i++) {
+  for ($i = 0; isset($toutsujet[$i]); $i++) {
     echo '<td class="sujet">'.$toutsujet[$i].'</td>'."\n";
   }
   
@@ -758,11 +880,11 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
 
 
 //affichage des resultats
-$somme[]=0;
+$somme[] = 0;
 $compteur = 0;
 
-while ($data=$user_studs->FetchNextObject(false)) {
-  $ensemblereponses=$data->reponses;
+while ($data = $user_studs->FetchNextObject(false)) {
+  $ensemblereponses = $data->reponses;
   
   echo '<tr>'."\n";
   echo '<td><input type="image" name="effaceligne'.$compteur.'" value="Effacer" src="images/cancel.png"  alt="Icone efface"></td>'."\n";
@@ -773,10 +895,13 @@ while ($data=$user_studs->FetchNextObject(false)) {
   
   //si la ligne n'est pas a changer, on affiche les données
   if (!$testligneamodifier) {
-    for ($k=0;$k<$nbcolonnes;$k++) {
-      $car=substr($ensemblereponses,$k,1);
-      if ($car=="1") {
+    for ($k = 0; $k < $nbcolonnes; $k++) {
+      $car = substr($ensemblereponses, $k, 1);
+      if ($car == "1") {
         echo '<td class="ok">OK</td>'."\n";
+        if (isset($somme[$k]) === false) {
+          $somme[$k] = 0;
+        }
         $somme[$k]++;
       } else {
         echo '<td class="non"></td>'."\n";
@@ -785,21 +910,24 @@ while ($data=$user_studs->FetchNextObject(false)) {
   } else { //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs
     
     //si c'est bien la ligne a modifier on met les checkbox
-    if ($compteur=="$ligneamodifier") {
-      for ($j=0;$j<$nbcolonnes;$j++) {
-        $car=substr($ensemblereponses,$j,1);
-        if ($car=="1") {
+    if ($compteur == "$ligneamodifier") {
+      for ($j = 0; $j < $nbcolonnes; $j++) {
+        $car = substr($ensemblereponses, $j, 1);
+        if ($car == "1") {
           echo '<td class="vide"><input type="checkbox" name="choix'.$j.'" value="" checked></td>'."\n";
         } else {
           echo '<td class="vide"><input type="checkbox" name="choix'.$j.'" value=""></td>'."\n";
         }
       }
     } else { //sinon on affiche les lignes normales
-      for ($k=0;$k<$nbcolonnes;$k++) {
-        $car=substr($ensemblereponses,$k,1);
+      for ($k = 0; $k < $nbcolonnes; $k++) {
+        $car = substr($ensemblereponses, $k, 1);
         
-        if ($car=="1") {
+        if ($car == "1") {
           echo '<td class="ok">OK</td>'."\n";
+          if (isset($somme[$k]) === false) {
+            $somme[$k] = 0;
+          }
           $somme[$k]++;
         } else {
           echo '<td class="non"></td>'."\n";
@@ -814,9 +942,9 @@ while ($data=$user_studs->FetchNextObject(false)) {
   }
   
   //demande de confirmation pour modification de ligne
-  for ($i=0;$i<$nblignes;$i++) {
-    if (isset($_POST["modifierligne$i"])||isset($_POST['modifierligne'.$i.'_x'])) {
-      if ($compteur==$i) {
+  for ($i = 0; $i < $nblignes; $i++) {
+    if (isset($_POST["modifierligne$i"]) || isset($_POST['modifierligne'.$i.'_x'])) {
+      if ($compteur == $i) {
         echo '<td><input type="image" name="validermodifier'.$compteur.'" value="Valider la modification" src="images/accept.png"  alt="Icone valider"></td>'."\n";
       }
     }
@@ -835,7 +963,7 @@ echo '<input type="text" name="nom"><br>'."\n";
 echo '</td>'."\n";
 
 //une ligne de checkbox pour le choix du nouvel utilisateur
-for ($i=0;$i<$nbcolonnes;$i++) {
+for ($i = 0; $i < $nbcolonnes; $i++) {
   echo '<td class="vide"><input type="checkbox" name="choix'.$i.'" value=""></td>'."\n";
 }
 
@@ -844,13 +972,15 @@ echo '<td><input type="image" name="boutonp" value="Participer" src="images/add-
 echo '</tr>'."\n";
 
 //determination du meilleur choix
-for ($i=0;$i<$nbcolonnes+1;$i++) {
-  if ($i=="0") {
-    $meilleurecolonne=$somme[$i];
-  }
-  
-  if ($somme[$i]>$meilleurecolonne) {
-    $meilleurecolonne=$somme[$i];
+for ($i = 0; $i < $nbcolonnes + 1; $i++) {
+  if (isset($somme[$i]) === true) {
+    if ($i == "0") {
+      $meilleurecolonne = $somme[$i];
+    }
+    
+    if (isset($somme[$i]) && $somme[$i] > $meilleurecolonne){
+      $meilleurecolonne = $somme[$i];
+    }
   }
 }
 
@@ -860,14 +990,18 @@ echo '<tr>'."\n";
 echo '<td></td>'."\n";
 echo '<td align="right">'. _("Addition") .'</td>'."\n";
 
-for ($i=0;$i<$nbcolonnes;$i++) {
-  $affichesomme=$somme[$i];
+for ($i = 0; $i < $nbcolonnes; $i++) {
+  if (isset($somme[$i]) === true) {
+    $affichesomme = $somme[$i];
+  } else {
+    $affichesomme = '';
+  }
   
-  if ($affichesomme=="") {
-    $affichesomme="0";
+  if ($affichesomme == "") {
+    $affichesomme = "0";
   }
   
-  if ($somme[$i]==$meilleurecolonne) {
+  if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){
     echo '<td class="somme">'.$affichesomme.'</td>'."\n";
   } else {
     echo '<td class="somme">'.$affichesomme.'</td>'."\n";
@@ -878,8 +1012,8 @@ echo '<tr>'."\n";
 echo '<td></td>'."\n";
 echo '<td class="somme"></td>'."\n";
 
-for ($i=0;$i<$nbcolonnes;$i++) {
-  if ($somme[$i]==$meilleurecolonne&&$somme[$i]) {
+for ($i = 0; $i < $nbcolonnes; $i++) {
+  if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){
     echo '<td class="somme"><img src="images/medaille.png" alt="Meilleur resultat"></td>'."\n";
   } else {
     echo '<td class="somme"></td>'."\n";
@@ -890,25 +1024,25 @@ echo '</tr>'."\n";
 
 
 // S'il a oublié de remplir un nom
-if (($_POST["boutonp"]||$_POST["boutonp_x"])&&$_POST["nom"]=="") {
+if ((isset($_POST["boutonp"]) || isset($_POST["boutonp_x"])) && $_POST["nom"] == "") {
   echo '<tr>'."\n";
   print "<td colspan=10><font color=#FF0000>" . _("Enter a name !") . "</font>\n";
   echo '</tr>'."\n";
 }
 
-if ($erreur_prenom) {
+if (isset($erreur_prenom) && $erreur_prenom) {
   echo '<tr>'."\n";
   print "<td colspan=10><font color=#FF0000>" . _("The name you've chosen already exist in this poll!") . "</font></td>\n";
   echo '</tr>'."\n";
 }
 
-if ($erreur_injection) {
+if (isset($erreur_injection) && $erreur_injection) {
   echo '<tr>'."\n";
   print "<td colspan=10><font color=#FF0000>" . _("Characters \"  '  < et > are not permitted") . "</font></td>\n";
   echo '</tr>'."\n";
 }
 
-if ($erreur_ajout_date) {
+if (isset($erreur_ajout_date) && $erreur_ajout_date) {
   echo '<tr>'."\n";
   print "<td colspan=10><font color=#FF0000>" . _("The date is not correct !") . "</font></td>\n";
   echo '</tr>'."\n";
@@ -924,28 +1058,30 @@ echo 'document.formulaire.nom.focus();'."\n";
 echo '</script>'."\n";
 
 //recuperation des valeurs des sujets et adaptation pour affichage
-$toutsujet=explode(",",$dsujet->sujet);
+$toutsujet = explode(",", $dsujet->sujet);
 
 //recuperation des sujets des meilleures colonnes
-$compteursujet=0;
-for ($i=0;$i<$nbcolonnes;$i++) {
-  if ($somme[$i]==$meilleurecolonne) {
+$compteursujet = 0;
+$meilleursujet = '';
+for ($i = 0; $i < $nbcolonnes; $i++) {
+  if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){
     $meilleursujet.=", ";
     
-    if ($dsondage->format=="D"||$dsondage->format=="D+") {
-      $meilleursujetexport=$toutsujet[$i];
-      if (strpos($toutsujet[$i],'@') !== false) {
-        $toutsujetdate=explode("@",$toutsujet[$i]);
-        if ($_SESSION["langue"]=="EN") {
-          $meilleursujet.=date("l, F jS Y",$toutsujetdate[0])." " . _("for") ." ".$toutsujetdate[1];
+    if ($dsondage->format == "D" || $dsondage->format == "D+") {
+      $meilleursujetexport = $toutsujet[$i];
+      
+      if (strpos($toutsujet[$i], '@') !== false) {
+        $toutsujetdate = explode("@", $toutsujet[$i]);
+        if ($_SESSION["langue"] == "EN") {
+          $meilleursujet .= date("l, F jS Y",$toutsujetdate[0])." " . _("for") ." ".$toutsujetdate[1];
         } else {
-          $meilleursujet.=strftime(_("%A, den %e. %B %Y"),$toutsujetdate[0]). ' ' . _("for")  . ' ' . $toutsujetdate[1];
+          $meilleursujet .= strftime(_("%A, den %e. %B %Y"),$toutsujetdate[0]). ' ' . _("for")  . ' ' . $toutsujetdate[1];
         }
       } else {
-        if ($_SESSION["langue"]=="EN") {
-          $meilleursujet.=date("l, F jS Y",$toutsujet[$i]);
+        if ($_SESSION["langue"] == "EN") {
+          $meilleursujet .= date("l, F jS Y",$toutsujet[$i]);
         } else {
-          $meilleursujet.=strftime(_("%A, den %e. %B %Y"),$toutsujet[$i]);
+          $meilleursujet .= strftime(_("%A, den %e. %B %Y"),$toutsujet[$i]);
         }
       }
     } else {
@@ -957,21 +1093,21 @@ for ($i=0;$i<$nbcolonnes;$i++) {
 }
 
 //adaptation pour affichage des valeurs
-$meilleursujet=substr("$meilleursujet",1);
-$meilleursujet=str_replace("°","'",$meilleursujet);
+$meilleursujet = substr("$meilleursujet", 1);
+$meilleursujet = str_replace("°", "'", $meilleursujet);
 
 //ajout du S si plusieurs votes
 $vote_str = _('vote');
-if ($meilleurecolonne!="1") {
+if (isset($meilleurecolonne) && $meilleurecolonne > 1) {
   $vote_str = _('votes');
 }
 
 echo '<p class=affichageresultats>'."\n";
 
 //affichage de la phrase annoncant le meilleur sujet
-if ($compteursujet=="1"&&$meilleurecolonne) {
+if (isset($meilleurecolonne) && $compteursujet == "1") {
   print "<img src=\"images/medaille.png\" alt=\"Meilleur resultat\">" . _("The best choice at this time is") . " : <b>$meilleursujet </b>" . _("with") . " <b>$meilleurecolonne </b>" . $vote_str . ".<br>\n";
-} elseif ($meilleurecolonne) {
+} elseif (isset($meilleurecolonne)) {
   print "<img src=\"images/medaille.png\" alt=\"Meilleur resultat\"> " . _("The bests choices at this time are") . " : <b>$meilleursujet </b>" . _("with") . " <b>$meilleurecolonne </b>" . $vote_str . ".<br>\n";
 }
 
@@ -988,44 +1124,29 @@ echo '<br>'."\n";
 //Changer le titre du sondage
 $adresseadmin=$dsondage->mail_admin;
 echo _("Change the title") .' :<br>' .
-    '<input type="text" name="nouveautitre" size="40" value="'.$titre.'">'.
+    '<input type="text" name="nouveautitre" size="40" value="'.$dsondage->titre.'">'.
     '<input type="image" name="boutonnouveautitre" value="Changer le titre" src="images/accept.png" alt="Valider"><br><br>'."\n";
-echo '</form>'."\n";
-
-if ($dsondage->format=="D"||$dsondage->format=="D+") {
-  echo '<form name="formulaire2" action="exportpdf.php" method="POST" onkeypress="javascript:process_keypress(event)">'."\n";
-  echo _("Generate the convocation letter (.PDF), choose the place to meet and validate") .'<br>';
-  echo '<input type="text" name="lieureunion" size="100" value="" />';
-  echo '<input type="hidden" name="sondage" value="$numsondageadmin" />';
-  echo '<input type="hidden" name="meilleursujet" value="$meilleursujetexport" />';
-  echo '<input type="image" name="exportpdf" value="Export en PDF" src="images/accept.png" alt="Export PDF"><br><br>';
-  echo '</form>'."\n";
-  // '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\n";
-}
-
-// TODO
-if ($_POST["exportpdf_x"]&&!$_POST["lieureunion"]) {
-  echo '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\n";
-}
 
 //si la valeur du nouveau titre est invalide : message d'erreur
-if (($_POST["boutonnouveautitre"]||$_POST["boutonnouveautitre_x"]) && $_POST["nouveautitre"]=="") {
+if ((isset($_POST["boutonnouveautitre"]) || isset($_POST["boutonnouveautitre_x"])) && !issetAndNoEmpty('nouveautitre')) {
   echo '<font color="#FF0000">'. _("Enter a new title!") .'</font><br><br>'."\n";
 }
 
 //Changer les commentaires du sondage
-echo _("Change the comments") .' :<br> <textarea name="nouveauxcommentaires" rows="7" cols="40">'.$commentaires.'</textarea><br><input type="image" name="boutonnouveauxcommentaires" value="Changer les commentaires" src="images/accept.png" alt="Valider"><br><br>'."\n";
+echo _("Change the comments") .' :<br> <textarea name="nouveauxcommentaires" rows="7" cols="40">'.$dsondage->commentaires.'</textarea><br><input type="image" name="boutonnouveauxcommentaires" value="Changer les commentaires" src="images/accept.png" alt="Valider"><br><br>'."\n";
 
 //Changer l'adresse de l'administrateur
 echo _("Change your email address") .' :<br> <input type="text" name="nouvelleadresse" size="40" value="'.$dsondage->mail_admin.'"> <input type="image" name="boutonnouvelleadresse" value="Changer votre adresse" src="images/accept.png" alt="Valider"><br>'."\n";
 
 //si l'adresse est invalide ou le champ vide : message d'erreur
-if (($_POST["boutonnouvelleadresse"]||$_POST["boutonnouvelleadresse_x"]) && $_POST["nouvelleadresse"]=="") {
+if ((isset($_POST["boutonnouvelleadresse"]) || isset($_POST["boutonnouvelleadresse_x"])) && !issetAndNoEmpty('nouvelleadresse')) {
   echo '<font color="#FF0000">'. _("Enter a new email address!") .'</font><br><br>'."\n";
 }
 
 //affichage des commentaires des utilisateurs existants
-$comment_user=$connect->Execute("select * from comments where id_sondage='$numsondage' order by id_comment");
+$sql = 'SELECT * FROM comments WHERE id_sondage='.$connect->Param('numsondage').' ORDER BY id_comment';
+$sql = $connect->Prepare($sql);
+$comment_user = $connect->Execute($sql, array($numsondage));
 if ($comment_user->RecordCount() != 0) {
   print "<br><b>" . _("Comments") . " :</b><br>\n";
   
@@ -1038,7 +1159,7 @@ if ($comment_user->RecordCount() != 0) {
   echo '<br>';
 }
 
-if ($erreur_commentaire_vide=="yes") {
+if (isset($erreur_commentaire_vide) && $erreur_commentaire_vide=="yes") {
   print "<font color=#FF0000>" . _("Enter a name and a comment!") . "</font>";
 }
 
@@ -1052,11 +1173,29 @@ echo '<input type="image" name="ajoutcomment" value="Ajouter un commentaire" src
 echo '<br>'."\n";
 echo _("Remove your poll") .' : <input type="image" name="suppressionsondage" value="'. _("Remove the poll") .'" src="images/cancel.png" alt="' . _('Cancel') . '"><br><br>'."\n";
 
-if ($_POST["suppressionsondage"]) {
+if (isset($_POST["suppressionsondage"])) {
   echo _("Confirm removal of your poll") .' : <input type="submit" name="confirmesuppression" value="'. _("Remove this poll!") .'">'."\n";
   echo '<input type="submit" name="annullesuppression" value="'. _("Keep this poll!") .'"><br><br>'."\n";
 }
 
+echo '</form>'."\n";
+
+if ($dsondage->format == "D" || $dsondage->format == "D+") {
+  echo '<form name="formulaire2" action="'.get_server_name().'exportpdf.php" method="POST" onkeypress="javascript:process_keypress(event)">'."\n";
+  echo _("Generate the convocation letter (.PDF), choose the place to meet and validate") .'<br>';
+  echo '<input type="text" name="lieureunion" size="100" value="" />';
+  echo '<input type="hidden" name="sondage" value="$numsondageadmin" />';
+  echo '<input type="hidden" name="meilleursujet" value="$meilleursujetexport" />';
+  echo '<input type="image" name="exportpdf" value="Export en PDF" src="images/accept.png" alt="Export PDF"><br><br>';
+  echo '</form>'."\n";
+  // '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\n";
+}
+
+// TODO
+if (isset($_POST["exportpdf_x"]) && !issetAndNoEmpty('lieureunion')) {
+  echo '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\n";
+}
+
 echo '<a name="bas"></a>'."\n";
 echo '<br><br>'."\n";
 
-- 
GitLab