[RESOLU] Affichage du caractère ' (accent)

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] Affichage du caractère ' (accent)

Re: Affichage du caractère ' (accent)

par philspain » 19 sept. 2012, 14:36

Merci pour vos réponses ...

Effectivement, je pense que la solution préconisée par Ryle est la plus simple : envoyer un flag à partir des pages sources (j'ai le même problème pour les retours d'erreurs à partir de mon sript de traitement) et mettre un switch/case dans ma page target pour afficher le bon message

Je n'y avais pas pensé ...
Comme quoi, il y a plus dans 2 têtes que dans une ...

... et effectivement, "c'est moi que je me suis gouré" dans l'appellation ... ce n'est pas l'accent, c'est l'apostrophe .... sorry ...

Merci pour vos réponses, en tout cas ... sympa

Philippe

Re: Affichage du caractère ' (accent)

par dix2 » 19 sept. 2012, 14:14

salut,

et si tu essaies ceci :
<a href="#" onClick="openfenetre(\"../common_fr/_formfree.php?envoi=Vous pouvez imprimer ce formulaire avant de l ' envoyer afin de conserver une trace de votre demande&ori=1\",'A','1280','1024','yes','center')">
ça donne quoi ?

@+
dix2

Re: Affichage du caractère ' (accent)

par Ryle » 19 sept. 2012, 13:44

Alors tout d'abord, c'est un problème d'apostrophe plutôt que d'accent :) (merci maître capello ;))

Entre guillemets, on ne peut pas mettre de guillemets sans les protéger (mais on peut utiliser des apostrophes), entre apostrophes, on ne peut pas mettre d'apostrophes sans les protéger (mais on peut utiliser des guillemets). Ton problème vient du fait que tu as des guillemets pour ton attribut html, et que celle-ci contient une chaine javascript délimitée par des apostrophes (en supposant qu'il n'y a pas de php autour de tout ça ;))

La bonne syntaxe est donc bien :
<a href="#" onClick="openfenetre('../common_fr/_formfree.php?envoi=Vous pouvez imprimer ce formulaire avant de l \' envoyer afin de conserver une trace de votre demande&ori=1','A','1280','1024','yes','center')">
Ta méthode javascript se contentant d'ouvrir l'url spécifiée avec les arguments, celle-ci n'est pas en cause. A mon avis, ton problème est dans _formfree.php qui récupère correctement ta variable $_GET['envoi'] (sans le \ ), applique les magic quotes (qui protège automatiquement les variables reçues) et ajoute donc le \ qui te gène à l'écran.

Du coup, voici quelques suggestions :
- tu testes si les magic quotes sont activées ou non et tu re-transformes ta chaine en conséquence :
 if (get_magic_quotes_gpc()) // SI ajout automatique des antislash par php
            $_GET['envoi'] = stripslashes($_GET['envoi']); // suppression des antislashs ajoutés à ta variable $_GET['envoi']
- autre solution qui me semble plus simple, c'est de mettre ton message d'information directement dans ton script php, et éventuellement dans l'url, envoyer un flag pour dire si le message doit être affiché ou non...

Re: Affichage du caractère ' (accent)

par philspain » 18 sept. 2012, 16:34

\' ou peut être '' (2 quotes)

Edit : regarde dans le source de la page ce qui est généré. C'est peut être \\' qu'il faut mettre pour que \ ne soit pas transformé en \\ mais en \'
Merci Mazarini.
Ni l'un ni l'autre ne fonctionne mais je crois que mon problème vient plutôt de Javascript, pas de PHP.
Je ne suis donc pas sûr d'avoir mis le post sur le bon forum (PHP FRANCE ... il y a PHP dans le titre)

Je vais chercher dans cette voie.

Merci pour tes réponses toujours rapides, en tout cas
Philippe

Re: Affichage du caractère ' (accent)

par Mazarini » 18 sept. 2012, 15:38

\' ou peut être '' (2 quotes)

Edit : regarde dans le source de la page ce qui est généré. C'est peut être \\' qu'il faut mettre pour que \ ne soit pas transformé en \\ mais en \'

Affichage du caractère ' (accent)

par philspain » 18 sept. 2012, 14:24

Bonjour ....
Si quelqu'un a une idée pour ce petit problème :

Voici le code qui fonctionne (sans accent)
<a href="#" onClick="openfenetre('../common_fr/_formfree.php?envoi=Vous pouvez imprimer ce formulaire avant de l envoyer afin de conserver une trace de votre demande&ori=1','A','1280','1024','yes','center')">]

Si je met l'accent, j'ai bien sûr un message d'erreur:
<a href="#" onClick="openfenetre('../common_fr/_formfree.php?envoi=Vous pouvez imprimer ce formulaire avant de l ' envoyer afin de conserver une trace de votre demande&ori=1','A','1280','1024','yes','center')">

Si je mets l'antislash pour échapper, je n'ai plus de message d'erreur mais l'antislash s'affiche au résultat
<a href="#" onClick="openfenetre('../common_fr/_formfree.php?envoi=Vous pouvez imprimer ce formulaire avant de l \' envoyer afin de conserver une trace de votre demande&ori=1','A','1280','1024','yes','center')">

PS : 'openfenetre' est une fonction Javascript que voici:
<script language="JavaScript" type="text/javascript">
var win=null;
function openfenetre(mypage,myname,w,h,scroll,pos){
if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no';
win=window.open(mypage,myname,settings);}
</script>

Un grand merci d'avance de vos bons conseils ...
Philippe