[RESOLU] Problème de caractère en injectant des requêtes avec php PDO dans mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème de caractère en injectant des requêtes avec php PDO dans mysql

Re: Problème de caractère en injectant des requêtes avec php PDO dans mysql

par stephd » 11 févr. 2020, 18:38

Super @rthur, c’était bien ca, en joutant ;charset=utf8 tout a fonctionné correctement!

Merci beaucoup de ton aide!

Re: Problème de caractère en injectant des requêtes avec php PDO dans mysql

par stephd » 11 févr. 2020, 13:56

Tout simplement en allant lire directement dans la table depuis phpmyadmin, et j'ai observé initialement le pb lorsque, en local, j'ai affiché le forum, pointant sur la bdd locale que j'avais créé avec mon programme. Les accent été tous remplacé.

Ah! bien, merci, je vais essayé ça, effectivement ça pourrait être une très bonne piste!

Re: Problème de caractère en injectant des requêtes avec php PDO dans mysql

par @rthur » 11 févr. 2020, 12:00

Comment sais-tu qu'ils sont "mal" écrit dans ta base ?
(Pour être sûr que ce soir pas le script qui lit et affiche le contenu de ta base qui pose problème)


Tu peux spécifier le charset de la connexion PDO pour voir si c'est mieux:
$dbco = new PDO("mysql:host=$servname;dbname=$dbname;charset=utf8", $user, $pass);

Re: Problème de caractère en injectant des requêtes avec php PDO dans mysql

par stephd » 10 févr. 2020, 19:57

merci de ta réponse @Artur,
Je me suis surement mal exprimé, tout ce que j'affiche avant d'envoyer la requête sql dans la table s'affiche correctement dans la page,
mais une fois que c'est envoyé dans la base, les données avec accent sont écrits dans la base avec des codes du style:

"J'ai commencé il y a 2 ans... "

au lieu de

"J'ai commencé il y a 2 ans..." ,

c'est l'écriture dans la base, ou au moment de l'injection.

voici des extraits de mon code:

Code : Tout sélectionner

$MonTexte = ""; .... $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); .... $dbco->exec($MonTexte);...

et si j'ajoute ceci:

Code : Tout sélectionner

echo $MonTexte;
le texte s'affiche correctement à l'écran.

|*() |*()

Re: Problème de caractère en injectant des requêtes avec php PDO dans mysql

par @rthur » 10 févr. 2020, 14:25

Peut être un problème d'indication d'encodage dans ton script au moment de renvoyer l'info au navigateur.
Essaye d'ajouter ça au tout début de ton script :
header('Content-Type: text/html; charset=utf-8');
Si le problème persiste, vérifie avec phpmyadmin que les infos dans ta base s'affichent correctement.

Problème de caractère en injectant des requêtes avec php PDO dans mysql

par stephd » 09 févr. 2020, 22:06

Bonjour,
J'ai réalisé un petit code, qui lit un fichier text, contenant des requêtes sql.
Je lis ligne par ligne et j'injecte dans une table mysql.
En fait ce sont des lignes de requête d'un forum phpbb que je tente de déplacer sur un serveur local depuis les fichiers de sauvegarde du forum.
Tout fonctionne bien, mise a par que dans la base de donnée les caractères accentués sont remplacés par d'autres caractères.
la base est en utf8_bin les tables aussi.
Si j'affiche la requête a injecter, je l'affiche sur le dom, qui s'affiche correctement.
Le tout est stocké sur un serveur local debian 8, et j’exécute le code depuis un pc distant avec chrome.
pour la connexion j'utilise PDO.
Que devrais-je vérifier, ou utiliser pour éviter ce remplacement de caractère, quelle serait la piste?
Merci de votre aide.