8795 sujets

Développement web côté serveur, CMS

Bonjour,

je viens vers vous car je rencontre une erreur sql lorsque j’insère le contenue d'un champ "textarea" qui contient des caractères spéciaux.

Voici l'erreur :
Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';:.?,")\', '2014-12-18', '22', '0', '1', '0')' at line 2 ) Erreur SQL!


Voici le code de mon formulaire :
 <div class="form-group">
                  <label for="message" class="col-sm-4 control-label">Problème rencontré</label>
                  <div class="col-sm-8">
                    <textarea name="message" id="message" class="form-control" cols="50" required size="30"></textarea>
                  </div><!-- Message -->
                </div><!-- form-group-message -->


voici le code de traitement :

$message     = $_POST['message'];

			//////////test variable
			//print_r($iduser); echo '<br>'; print_r($idsite); echo '<br>'; print_r($systeme); echo '<br>'; print_r($dateconvert); echo '<br>'; print_r($message); echo '<br>';
	        $sql = $cnx->query("INSERT INTO tickets (IDTicket, DateNow, IDUtilisateur, IDSysteme, ProblemeIDTF, DateProbleme, IDSite, Garantie, Etat, Inter) 
			VALUE('', NOW(), '".$iduser."', '".$_POST['systeme']."', '".utf8_encode($message)."', '".convertDate($dateprob)."', '".$idsite."', '0', '1', '0')") or die('Erreur SQL!<br>'.print_r($cnx->errorInfo()));


je précise que tous est en UTF-8. Base de donnée en UTF-8-general-ci MyIsam
Salut,

Tu fais tes connexion mysql en PDO ?

Par ailleurs, si je comprend bien ton script (PHP), tu insert dans la base sans vérifier si l'utilisateur a écris un texte pouvant faire sauter ton SQL (Injection SQL). Remplace :

utf8_encode($message)


par

filter_var($message, FILTER_SANITIZE_STRING)
Bon bah en fait c'est le premier site que j'ai fait il y a longtemps, depuis j'ai eu un peut plus d'expérience donc je pense que je vais le refaire soit en symfony ou codeigniter !!!

Pour info il y a des requettes PDO et d'autre non !!! Celle-ci n'utilise pas PDO!
Modifié par cid5420 (09 Dec 2014 - 12:55)
Okay, essaye de regrouper tes requêtes sur une seule connexion (PDO). Cela sera plus simple pour toi à maintenir et debuger.

Bon conseil, regarde comment son organiser les CMS, je pense que ça t'aidera pas mal à trouver une architecture correct pour tes site. Sinon cherche des tuto sur l'architecture MVC.
Comme je l'ai dit, c'était je crois le premier site php que j'ai fait, ça fait maintenant 1a que je développe et depuis, j'ai fait pas mal d'application (MVC) donc de ce côté là il n'y a pas de problème.
Je vais reprendre l'application et la refaire avec une architecture mvc !!!