2 votes

Envoi de caractères spéciaux dans un formulaire HTML

J'ai un champ de saisie (qui est rempli automatiquement) avec le nom du format <myemail@host.com> . J'ai donné le formulaire enctype="application/x-www-form-urlencoded" mais lorsque je le récupère en PHP, il n'affiche que le nom. Veuillez m'aider à récupérer l'email également.

Mon formulaire HTML :

<form action="{$path_site}{$index_file}" method="POST" enctype="application/x-www-form-urlencoded">
    <table>
        <tr>
            <td>Your Name</td>
            <td><input type="text" name="sender_name" size="37" /></td>
        </tr>
        <tr>
            <td>To</td>
            <td><input type="text" name="reciever_name" size="37" id="inputString" onkeyup="lookup(this.value)" onblur="fill()" /></td>
        </tr>
    </table>
</form>

Et du code PHP :

echo $msg_sender_name = $info[reciever_name];

3voto

Arsen7 Points 5534

Extraire l'information des commentaires, où vous dites :

si le texte est comme "monNommyEmail@email.com", info['reciever_name'] affiche uniquement "monNom".

Je dirais que votre problème est lié à la affichage des résultats et n'est pas liée à la forme.

Vous affichez probablement la chaîne reçue en tant que HTML, où les caractères "<" et ">". sont spéciales .

Au lieu de

echo $info['reciever_name'];

vous devez utiliser le htmlspecialchars fonction :

echo htmlspecialchars($info['reciever_name'], ENT_QUOTES);

Il s'agit du bogue le plus courant en PHP (et dans de nombreuses autres langues) .

Vous devriez vous échapper tout le texte que vous affichez surtout quand elle vient de non fiable et chaque valeur fournie par l'utilisateur n'est pas fiable .

Si vous ne parvenez pas à échapper à la sortie, vous risquez de compromettre la sécurité de vos utilisateurs - vous voudrez peut-être lire l'article suivant Cross-site-scripting sur Wikipedia.

0voto

asbjornu Points 5042

Le code PHP suivant

echo $msg_sender_name = $info[reciever_name];

semble manquer quelques guillemets. Essayez plutôt ceci :

echo $msg_sender_name = $info['reciever_name'];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X