Pb : apostrophes ET guillemets dans <input type="text"> d'un formulaire récursif

Résolu
Djazzyman Messages postés 10 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 mai 2013 - 23 janv. 2009 à 01:15
Djazzyman Messages postés 10 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 mai 2013 - 23 janv. 2009 à 14:22
Bonsoir à tous,

J'ai créé un formualire récursif (qui s'appelle lui-même après validation) et je rencontre des problèmes d'affichage pour les chaînes de caractères possédant des apostrophes ET des guillemets.

Exemple d'utilisation :
Si l'utilisateur NE SAISI PAS l'identifiant, SAISI la chaîne de caractères suivante comme mot de passe : C'est le "bonheur" !!! (ou vice versa) et valide le formulaire, le champ texte Mot de passe contient alors :
C'est le
alors que je souhaiterais qu'il contienne :
C'est le "bonheur" !!!
(et rien dautre, notamment pas d'antislash)

Voici le code source de mon formulaire, placé impérativement dans le fichier login.php (si le nom de fichier est différent, le code ne fonctionnera pas) :

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
<?php
// Si les 2 champs texte du formulaire sont renseignés : BRAVO, on peut continuer...
if(isset($_POST['id']) && ! empty($_POST['id']) && isset($_POST['mdp']) && ! empty($_POST['mdp']))
{
    echo 'BRAVO !!! Vous avez gagné une tringle à rideaux.
';
    // On peut désormais comparer les valeurs saisies avec celles présentes dans une base de données
    // (pour autoriser une connexion à un compte par exemple)
}
// Sinon : affichage du formulaire
else
{
    echo 'Veuillez renseigner les 2 champs texte SVP.
';
?>

<form action='login.php' method=POST>
    Identifiant :

    " />

    Mot de passe :

    " />

   
</form>

<?php
}
?>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

J'ai bien essayé la technique suivante souvent mentionnée dans le - riche - forum de CS :
echo '
';
mais j'obtiens le même résultat !!!

Je m'arrache les cheveux à en devenir chauve !!!

Quelqu'un pourrait-il m'aider, pour qu'il me reste encore qques cheveux sur le caillou à la fin de la semaine ???

2 réponses

kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
23 janv. 2009 à 07:38
Salut,

Je prends pitié de tes cheveux :o)

Pour l'explication, si tu as des guillemets dans l'un des champs, voilà comment sera le code HTML résultant :
par ex pour :
"
/>

Donnera :
<input type="text" name="mdp" value="le "bonheur""/><br/>

Le navigateur n'affichera que ce qu'il y a entre les guillemets (en bleu)

Fais donc un truc comme ça :
" />

Cordialement,

Kohntark-
3
Djazzyman Messages postés 10 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 mai 2013
23 janv. 2009 à 14:22
Salut Kohntark,

Je te remercie pour ta réponse rapide.

En fait, j'ai repotassé le bon vieux manuel et j'ai résolu mon problème vers 6h du mat', grâce à la fonction htmlspecialchars().

MAIS, comme tu le suggères, il semblerait que htmlentities() soit plus adaptée (cf. la bible) :

" htmlentities() est identique à la fonction htmlspecialchars(), sauf que tous les caractères qui ont des équivalents en entités HTML sont effectivement traduits.
Si vous voulez réaliser l'opération inverse, vous devez utiliser la fonction html_entity_decode(). "

Merci encore : mes cheveux commencent à repousser !   =:o)

Djazzyman
0