Aller au contenu

Flash foire les accents une fois sur deux!


chemi2007

Sujets conseillés

:shutup:

J'ai un formulaire en Flash qui permet au visiteur d'envoyer un article à un ami.

Au lancement du formulaire, l'url et le titre de l'article sont envoyés dans le flash.

Seulement la moitié des articles se voient déchirer leurs accents !... et l'autre moitié aucun problème.

Comme ce n'est pas systématique, ça me semble très bizarre.

Pour info, les accents deviennent cela:

' --> â

û --> û

é --> û

à --> Ã (espace après le Ã)

â --> â

...

bon ceux qui savent auront certainement compris avec ça.

Quelqu'un a une idée de quoi faire s'il vous plaît?

j'ai tenté en vrac différentes choses trouvées sur le net mais je connais rien en php, et pas grand chose ailleurs...

Lien vers le commentaire
Partager sur d’autres sites

Apparemment vos caractères sont convertis en Unicode (UTF-8).

Vérifiez que votre page HTML/PHP utilise le bon encodage (ISO-8859-1 ou Unicode).

Comme on ne sait pas ce qu'il y a dans le formulaire Flash difficile de dire plus à ce stade :hypocrite:

Mais je parie que votre page est codée en ISO-8859-1 et que Flash travaille en Unicode en interne.

Ca pourrait arranger les choses si le charset est le même des deux côtés.

Vous parlez de PHP mais à quel niveau PHP est-il appelé...

PS: pourquoi ne pas réaliser un formulaire plus accessible (HTML/PHP) ?

Lien vers le commentaire
Partager sur d’autres sites

Merci "binarygirl" et "petit-ourson".

Pour répondre à tes questions binarygirl, je veux passer par un formulaire flash pour faire obstacle aux robots spameurs, car j'ai eu des problèmes sur ce site il y a quelques mois, mon hébergeur avait alors bloqué la fonction mail. Je me suis dit qu'il fallait être plus sophistiqué pour spammer à travers un flash.

Le site est effectivement en ISO-8859-1, déclaré sur chaque page html en meta.

Dans Flash, le seul choix est "UTF-8" ou "codage par défaut". J'ai pris le second, en prenant soin de configurer mes butineurs en ISO-8859-1 (j'ai aussi essayé UTF-8 en vain).

Le site a énormément de contenu, je ne peux pas le convertir en utf-8.

Malgré tout ça, ce qui me rend fou, c'est que comme dit précédemment, il n'y a que la moitié du temps où le texte s'affiche mal dans le flash! Il y arrive sans problème dans l'autre moitié des articles, alors que tous les articles sont saisis de la même façon par la même personne, sur le même ordinateur.

Pour le détail du flash, je rentre les variable (url et titre) par l'url:

formulaire-mail.swf?_leLien=http://www.monsite.org/spip/sp_article-breve.php3?id_article=#ID_ARTICLE&_titre=#TITRE

Il y a deux balise spip la-dedans. Mon spip marche en ISO-8859-1.

J'ai fait ce flash à partir d'un composant trouvé sur le web qui permettait simplement au début à l'utilisateur d'envoyer son adresse email pour une liste de diffusion.

Dès le lancement du flash il y a l'actionscript suivant sur le clip principal (le composant), qui passe les variable entrées par l'url dans les variables du clip flash, puis fait réagir l'animation en fonction de ce que renvoie le php:

onClipEvent (load) {
this._leLien = _root._leLien;
this._titre = _root._titre;
this.clipReception.hErr = "";
}
onClipEvent (enterFrame) {
if (this.clipReception.hErr <> "") {
if (this.clipReception.hErr == "0") {
this.gotoAndPlay ("Merci");
} else {
this.gotoAndPlay ("Erreur");
}
}
}

Ensuite dans le flash les textes saisis ont chacun une variable.

Quand le bouton "envoyer" est appuyé, voilà ce qui se passe (petit changement de nom de variable, vérification très sommaire de l'email et passage en salle d'attente le temps au php de répondre:

on (release) {
this.Variablemessage1 = escape(this.Variablemessage2);
if (VariableCourriel.indexOf("@") != -1 && VariableCourriel.indexOf(".") != -1) {
loadVariables (this.VariableURL, "clipReception", "GET");
gotoAndPlay("Attente");
}
}

la VariableURL est l'adresse du fichier php.

Toute les variables du flash lui sont envoyés et il répond, réponse que l'on prend dans le clipReception.

C'est pas très simple tout ça. J'espère que je suis assez clair pour que vous puissiez m'aider.

Merci en tout cas

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Comme manifestement tu n'as pas le choix d'encodage sous flash et que tu ne veux/peux pas passer ton site en UTF-8, il te reste une possibilité sous Php: la fonction utf8_decode().

Celle-ci convertira le texte en UTF-8 vers de l'ISO-8859-1 qui s'affichera correctement.

utf8_decode

(PHP 3 >= 3.0.6, PHP 4, PHP 5)

utf8_decode -- Convertit une chaîne UTF-8 en ISO-8859-1

Description

string utf8_decode ( string data )

utf8_decode() décode la chaîne data, en supposant qu'elle est au format UTF-8, et la convertit au format ISO-8859-1.

Voir aussi utf8_encode() pour plus de détails sur le codage UTF-8.

Lien vers le commentaire
Partager sur d’autres sites

la VariableURL est l'adresse du fichier php.

Toute les variables du flash lui sont envoyés et il répond, réponse que l'on prend dans le clipReception.

le spammeur peut donc automatiser son spam sous forme de get alors ?
Lien vers le commentaire
Partager sur d’autres sites

certainement.

Mais il faudrait créer un spam pour ce site en particulier non?

Mon intention était d'échapper au spam "basique", pas à une volonté délibéré de spammer mon site en particulier.

Est-ce que c'est obsolète selon toi Leonick?

Lien vers le commentaire
Partager sur d’autres sites

obsolète non, mais le flash pose quand même un certain nombre de problèmes, entres autres l'accessibilité et aussi l'histoire d'encodage comme ton problème. Car, effectivement flash a l'air de fonctionner (toujours ?) en utf-8.

Sur un de mes annuaires, j'avais utilisé une base de mydir, mais très fortement remaniée. J'ai commencé à avoir du spam, pour le supprimer, sans avoir besoin de mettre de captcha, j'ai changé le nom du formulaire, ainsi que des variables d'après ré-écriture. En plus l'appel direct à index.php?var= ne fonctionnait plus, car j'utilise un autre script que index par défaut.

Résultat, plus de spam direct, il reste toujours celui des êtres humains ui n'ont pas autre chose à faire que de saisir des sites qui vont aller direct à la poubelle car pas dans la thématique de l'annuaire. Je perds largement moins de temps à faire <suppr> que eux à effectuer la saisie :hypocrite:

Lien vers le commentaire
Partager sur d’autres sites

Si c'est le spam qui vous préoccupe, je pense que la solution mise en oeuvre est usine à gaz.

Déjà je suis contre le captcha car j'ai moi-même du mal à lire des fois, et je suis même pas déficiente visuellement (pas encore) :1eye:

J'ai éliminé la quasi-totalité du spam que je recevais via les formulaires de contact sur mes sites en utilisant quelques expressions régulières dans mon code: par exemple si le message contient des baslises telles que <a href>www.spamsite.com</a> c'est clair que c'est du spam donc le formulaire s'arrête. Je peux même mémoriser l'IP pour la bloquer un moment.

Si vous y tenez vous pouvez néanmoins mettre un captcha en complément d'un formulaire standard php, ça résoudra votre pb de charset et sans doute de spam par la même occasion. En fait je n'ai pas compris pourquoi vous vouliez le faire en flash ?

Lien vers le commentaire
Partager sur d’autres sites

En fait je n'ai pas compris pourquoi vous vouliez le faire en flash ?
parce ue les programmes auto de spam récupèrent le nom des diverses balises d'un formulaire et envoient ensuite le résultat sous forme de post ou de get. Dans le cas du flash, le nom des balises ne peut être récupéré.
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...