From 7c9a061582a6123338546f247340841c15d2fc8d Mon Sep 17 00:00:00 2001 From: Simon Leblanc Date: Sun, 22 May 2011 04:03:44 +0200 Subject: [PATCH] Delete php warning and secure SQL --- adminstuds.php | 4 +- choix_autre.php | 95 ++++++++++++++++++++++++++------------------ creation_sondage.php | 28 ++++++++++--- 3 files changed, 82 insertions(+), 45 deletions(-) diff --git a/adminstuds.php b/adminstuds.php index ac921b0..12e0c31 100644 --- a/adminstuds.php +++ b/adminstuds.php @@ -361,7 +361,7 @@ if ($dsondage->commentaires){ echo '
'. _("Comments") .' :
'."\n"; $commentaires=$dsondage->commentaires; $commentaires=str_replace("\\","",$commentaires); - echo $commentaires; + echo nl2br($commentaires); echo '
'."\n"; } echo '
'."\n"; @@ -417,7 +417,7 @@ if (isset($_POST["ajoutercolonne_x"]) && issetAndNoEmpty('nouvellecolonne') && ( //on rajoute la valeur a la fin de tous les sujets deja entrés $nouveauxsujets.=","; $nouveauxsujets.=str_replace(","," ",$_POST["nouvellecolonne"]); - $nouveauxsujets=str_replace("'","°",$nouveauxsujets); + $nouveauxsujets = htmlentities(html_entity_decode($nouveauxsujets, ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); //mise a jour avec les nouveaux sujets dans la base $sql = 'UPDATE sujet_studs SET sujet = '.$connect->Param('nouveauxsujets').' WHERE id_sondage = '.$connect->Param('numsondage'); diff --git a/choix_autre.php b/choix_autre.php index eb21269..75a8a9d 100644 --- a/choix_autre.php +++ b/choix_autre.php @@ -47,7 +47,7 @@ if (file_exists('bandeaux_local.php')) { } //si les variables de session ne sont pas valides, il y a une erreur -if (!$_SESSION["nom"]&&!$_SESSION["adresse"]&&!$_SESSION["commentaires"]&&!$_SESSION["mail"]) { +if (issetAndNoEmpty('titre', $_SESSION) === false || issetAndNoEmpty('nom', $_SESSION) === false || issetAndNoEmpty('adresse', $_SESSION) === false) { echo ''."\n"; echo ''."\n"; echo ''."\n"; @@ -72,60 +72,70 @@ if (!$_SESSION["nom"]&&!$_SESSION["adresse"]&&!$_SESSION["commentaires"]&&!$_SES //partie creation du sondage dans la base SQL //On prépare les données pour les inserer dans la base - if ($_POST["confirmecreation_x"]) { + $erreur = false; + $testdate = true; + $date_selected = ''; + + if (isset($_POST["confirmecreation"]) || isset($_POST["confirmecreation_x"])) { //recuperation des données de champs textes - for ($i=0;$i<$_SESSION["nbrecases"]+1;$i++) { - if ($_POST["choix"][$i]) { + $toutchoix = ''; + for ($i = 0; $i < $_SESSION["nbrecases"] + 1; $i++) { + if (isset($_POST["choix"]) && issetAndNoEmpty($i, $_POST["choix"])) { $toutchoix.=','; - $toutchoix.=str_replace(","," ",$_POST["choix"][$i]); + $toutchoix.=str_replace(",", " ", htmlentities(html_entity_decode($_POST["choix"][$i], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8')); } } - $toutchoix=str_replace("'","°",$toutchoix); $toutchoix=substr("$toutchoix",1); $_SESSION["toutchoix"]=$toutchoix; - if ($_POST["champdatefin"]) { + if (issetAndNoEmpty('champdatefin')) { $registredate=explode("/",$_POST["champdatefin"]); - if (mktime(0,0,0,$registredate[1],$registredate[0],$registredate[2])>time()+250000) { - $_SESSION["champdatefin"]=mktime(0,0,0,$registredate[1],$registredate[0],$registredate[2]); + if (is_array($registredate) === false || count($registredate) !== 3) { + $testdate = false; + $date_selected = $_POST["champdatefin"]; + } else { + $time = mktime(0,0,0,$registredate[1],$registredate[0],$registredate[2]); + if ($time === false || date('d/m/Y', $time) !== $_POST["champdatefin"]) { + $testdate = false; + $date_selected = $_POST["champdatefin"]; + } else { + if (mktime(0,0,0,$registredate[1],$registredate[0],$registredate[2]) > time() + 250000) { + $_SESSION["champdatefin"]=mktime(0,0,0,$registredate[1],$registredate[0],$registredate[2]); + } + } } } else { $_SESSION["champdatefin"]=time()+15552000; } - //format du sondage AUTRE - $_SESSION["formatsondage"]="A".$_SESSION["studsplus"]; - - ajouter_sondage(); - } - - // recuperation des sujets pour sondage AUTRE - for ($i=0;$i<$_SESSION["nbrecases"];$i++) { - if (!preg_match(';<|>|";',$_POST["choix"][$i])) { - $_SESSION["choix$i"]=$_POST["choix"][$i]; + if ($testdate === true) { + //format du sondage AUTRE + $_SESSION["formatsondage"]="A".$_SESSION["studsplus"]; + + ajouter_sondage(); } else { - $erreur_injection="yes"; + $_POST["fin_sondage_autre"] = 'ok'; } } - //nombre de cases par défaut - if (!$_SESSION["nbrecases"]) { + // recuperation des sujets pour sondage AUTRE + $erreur_injection = false; + if (isset($_SESSION["nbrecases"])) { + for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) { + if (isset($_POST["choix"]) && isset($_POST["choix"][$i])) { + $_SESSION["choix$i"]=htmlentities(html_entity_decode($_POST["choix"][$i], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); + } + } + } else { //nombre de cases par défaut $_SESSION["nbrecases"]=10; } - if ($_POST["ajoutcases"]||$_POST["ajoutcases_x"]) { + if (isset($_POST["ajoutcases"]) || isset($_POST["ajoutcases_x"])) { $_SESSION["nbrecases"]=$_SESSION["nbrecases"]+5; } - echo ''."\n"; - echo ''."\n"; - echo ''."\n"; - echo ''."\n"; - echo ''.NOMAPPLICATION.''."\n"; - echo ''."\n"; - echo ''; - echo ''."\n"; + print_header(); echo ''."\n"; echo '
'."\n"; @@ -139,8 +149,11 @@ if (!$_SESSION["nom"]&&!$_SESSION["adresse"]&&!$_SESSION["commentaires"]&&!$_SES echo ''."\n"; //affichage des cases texte de formulaire - for ($i=0;$i<$_SESSION["nbrecases"];$i++) { - $j=$i+1; + for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) { + $j = $i + 1; + if (isset($_SESSION["choix$i"]) === false) { + $_SESSION["choix$i"] = ''; + } echo ''."\n"; } @@ -162,28 +175,34 @@ if (!$_SESSION["nom"]&&!$_SESSION["adresse"]&&!$_SESSION["commentaires"]&&!$_SES echo '
'. _("Choice") .' '.$j.' :
'."\n"; //test de remplissage des cases + $testremplissage = ''; for ($i=0;$i<$_SESSION["nbrecases"];$i++) { - if ($_POST["choix"][$i]!="") { + if (isset($_POST["choix"]) && issetAndNoEmpty($i, $_POST["choix"])) { $testremplissage="ok"; } } //message d'erreur si aucun champ renseigné - if ($testremplissage!="ok"&&($_POST["fin_sondage_autre"]||$_POST["fin_sondage_autre_x"])) { + if ($testremplissage != "ok" && (isset($_POST["fin_sondage_autre"]) || isset($_POST["fin_sondage_autre_x"]))) { print "
" . _("Enter at least one choice") . "

"."\n"; - $erreur="yes"; + $erreur = true; + } + + //message d'erreur si mauvaise date + if ($testdate === false) { + print "
" . _("Date must be have the format DD/MM/YYYY") . "

"."\n"; } if ($erreur_injection) { print "" . _("Characters \" < and > are not permitted") . "

\n"; } - if (($_POST["fin_sondage_autre"]||$_POST["fin_sondage_autre_x"])&&!$erreur&&!$erreur_injection) { + if ((isset($_POST["fin_sondage_autre"]) || isset($_POST["fin_sondage_autre_x"])) && !$erreur && !$erreur_injection) { //demande de la date de fin du sondage echo '
'."\n"; echo '
'."\n"; echo '
'. _("Your poll will be automatically removed after 6 months.
You can fix another removal date for it.") .'

'."\n"; - echo _("Removal date (optional)") .' : '. _("(DD/MM/YYYY)") ."\n"; + echo _("Removal date (optional)") .' : '. _("(DD/MM/YYYY)") ."\n"; echo '
'."\n"; echo '
'."\n"; echo ''. _("Once you have confirmed the creation of your poll, you will be automatically redirected on the page of your poll.

Then, you will receive quickly an email contening the link to your poll for sending it to the voters.") .'
'."\n"; diff --git a/creation_sondage.php b/creation_sondage.php index ffdc5fd..4436817 100644 --- a/creation_sondage.php +++ b/creation_sondage.php @@ -78,15 +78,33 @@ function ajouter_sondage() $date_fin=$_SESSION["totalchoixjour"][$taille_tableau]+200000; } + if (is_numeric($date_fin) === false) { + $date_fin = time()+15552000; + } + $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; global $connect; - $connect->Execute('insert into sondage ' . - '(id_sondage, commentaires, mail_admin, nom_admin, titre, id_sondage_admin, date_fin, format, mailsonde) ' . - 'VALUES '. - "('$sondage','$_SESSION[commentaires]', '$_SESSION[adresse]', '$_SESSION[nom]', '$_SESSION[titre]','$sondage_admin', FROM_UNIXTIME('$date_fin'), '$_SESSION[formatsondage]','$_SESSION[mailsonde]' )"); - $connect->Execute("insert into sujet_studs values ('$sondage', '$_SESSION[toutchoix]' )"); + $sql = 'INSERT INTO sondage + (id_sondage, commentaires, mail_admin, nom_admin, titre, id_sondage_admin, date_fin, format, mailsonde) + VALUES ( + '.$connect->Param('id_sondage').', + '.$connect->Param('commentaires').', + '.$connect->Param('mail_admin').', + '.$connect->Param('nom_admin').', + '.$connect->Param('titre').', + '.$connect->Param('id_sondage_admin').', + FROM_UNIXTIME('.$date_fin.'), + '.$connect->Param('format').', + '.$connect->Param('mailsonde').' + )'; + $sql = $connect->Prepare($sql); + $res = $connect->Execute($sql, array($sondage, $_SESSION['commentaires'], $_SESSION['adresse'], $_SESSION['nom'], $_SESSION['titre'], $sondage_admin, $_SESSION['formatsondage'], $_SESSION['mailsonde'])); + + $sql = 'INSERT INTO sujet_studs values ('.$connect->Param('sondage').', '.$connect->Param('choix').')'; + $sql = $connect->Prepare($sql); + $connect->Execute($sql, array($sondage, $_SESSION['toutchoix'])); $message = _("This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll."); $message .= "\n\n";