Récupérer apostrophe avec $_POST

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 : Récupérer apostrophe avec $_POST

par Ryle » 28 août 2006, 17:30

Y a pas besoin de remplacer par un autre caractère, faut juste jouer avec les guillemets et les apostrophes. Ton problème, vient du fait que le html généré n'est pas bon
<?php
$Etape = 'L\'espace'; 
echo "<option value='$Etape '>$Etape </option>"; 
?>

va générer le code html suivant : 
<option value='L'espace '>L'espace </option>
et du coup, la value de ton option s'arrête à 'L', le "espace '" étant ignoré.

Tu peux protéger l'apostrophe dans le html en protégeant (en php) le caractère protégeant l'apostrophe (en html) : 'L\\\'espace', mais c'est un peu lourd à mon avis. Sinon en jouant juste sur l'imbrication apostrophes/guillemets, tu peux aussi faire un truc du genre
$Etape = "L'espace"; 
echo '<option value="' . $Etape .'">'.$Etape.'</option>';
Voire enfin, puisque ton libellé à la même valeur que ton option, laisser tomber le champ value, le libellé étant dès lors utilisé par défaut comme valeur :
$Etape = "L'espace"; 
echo "<option>$Etape </option>";

par thehawk » 28 août 2006, 17:04

normal l'url ne gere pas de ' ou " le seul moyen est de le remplacer par un autre caractere comme _ par exemple

Récupérer apostrophe avec $_POST

par neotima » 28 août 2006, 16:57

Bonjour,

J'ai un petite problème lors de l'nvoie d'une variable avec un apostrophe avec la méthode $_POST.

Voici mon code:

Code : Tout sélectionner

if (isset($_POST['NomEtape']))$NomEtape = $_POST['NomEtape']; echo "<form name='saisie' method='post' action=''>"; echo "<td width='5%' align=left><b>"; echo "<select name='NomEtape'>"; $Etape = 'L'espace'; echo "<option value='$Etape '>$Etape </option>"; echo "</select></b><input type='submit' name='action' value='OK'>"; echo "</td>"; echo "</form>"; echo $NomEtape;


Mais avec la méthode POST dans ma variable $NomEtape , je récupère juste le L est pas le reste. Même je mets Etape = 'L\'espace';

Merci d'avance pour une solution. :)