Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : Erreur mysql_real_escape_string()

Erreur mysql_real_escape_string() il y a 9 ans 7 mois #20407

  • erick
  • Portrait de erick
Bonjour à tous.

Je suis en train de développer un module de suivi administratif de la formation continue (ça avance)...
Je viens ce matin de déplacer l'appli d'un serveur de dev à un autre. Le code étant rigoureusement identique, tout fonctionne parfaitement sur le premier, mais je rencontre le problème classique lors de l'utilisation de la fonction mysql_real_escape_string() sur le second. Le message est :"Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/dolibarr-2.7.1/htdocs/agefodd/agefodd_stagiaire.class.php on line 98"

J'ai pas mal graté sur le web ce matin, mais pas sans trop de résultat. La fonction est bien disponible sur le nouveau serveur (PHP Version 5.2.6-1).
Il pourrait falloir passer le link_identifier en paramètre, mais comment le récupérer depuis ma classe de connexion, et pourquoi cela fonctionne sur le premier serveur?

Merci et bonne journée.
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Erreur mysql_real_escape_string() il y a 9 ans 7 mois #20411

  • regis
  • Portrait de regis
  • Hors ligne
  • Administrateur
  • Messages : 2073
  • Remerciements reçus 103
  • Karma: 140
nous n'utilisons pas cette fonction, pourquoi tu n'utilises pas la classe mysql de dolibarr pour effectuer tes requêtes ?
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Erreur mysql_real_escape_string() il y a 9 ans 7 mois #20412

  • erick
  • Portrait de erick
C'est ce que je pense faire ;-)
Je me suis appuyé sur la doc et ai généré un fichier "agefodd_stagiaire.class.php" (comme tu peux le constater dans le message d'erreur de mon message précédent).

J'utilise donc bien $resql=$this->db->query($sql);

Mais dans le fonctions d'update et de create, je cherche à protéger au minimum mes input dans mysql (cf rubrique "// Clean parameters" du fichier auto-généré dans Dolibarr).
Bref, j'ai peut-être raté un truc...

Je voudrais quand même comprendre pourquoi mysql-real-escape-string fonctionne sur un serveur et pas sur l'autre...

Merci d'avance.
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Erreur mysql_real_escape_string() il y a 9 ans 7 mois #20455

  • benharvest
  • Portrait de benharvest
  • Hors ligne
  • Senior Boarder
  • Messages : 49
  • Remerciements reçus 1
  • Karma: 1
J'ose espérer que dolibarr vérifie ce qui entre dans la base !

Pour mysql_real_escape_string, il est mieux d'utiliser mysqli qui, en mode objet, n'a pas besoin du link_identifier.

Je ne comprends jamais trop pourquoi (mais je ne suis pas vraiment développeur) tout le monde réinvente la roue alors qu'il existe la classe PDO qui est faite pour faciliter, sécuriser, accélérer les accès SQL et permettre simplement d'utiliser mysql, postgre, sqlite, oracle...
L'administrateur a désactivé l'accès en écriture pour le public.

Re: Erreur mysql_real_escape_string() il y a 9 ans 7 mois #20475

  • eldy
  • Portrait de eldy
  • Hors ligne
  • Administrateur
  • Messages : 1054
  • Remerciements reçus 50
  • Karma: 107
Tu peux protéger tes champs en utilisant addslashes plutot que mysql_real_escape_string
L'administrateur a désactivé l'accès en écriture pour le public.