d'un formulaire récursif" />

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

[Résolu]
Signaler
Messages postés
10
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
16 mai 2013
-
Messages postés
10
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
16 mai 2013
-
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

Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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-
Messages postés
10
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
16 mai 2013

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