以HTML格式发送特殊字符

时间:2011-09-12 07:42:53

标签: php html forms enctype

我有一个输入字段(自动填充),格式为<myemail@host.com>。我给了表单enctype="application/x-www-form-urlencoded",但是当我在PHP中检索它时,它只显示了名称。请帮助我检索电子邮件。

我的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>

和PHP代码:

echo $msg_sender_name = $info[reciever_name];

2 个答案:

答案 0 :(得分:3)

从评论中提取信息,您可以说:

  

如果文字类似于“myName&lt; myEmail@email.com>”,则info['reciever_name']仅显示“myName”

我会说你的问题与显示结果有关,而与表格无关。

您可能会将收到的字符串显示为HTML,其中字符“&lt;”和“&gt;” 很特别

而不是

echo $info['reciever_name'];

您应该使用htmlspecialchars功能:

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

这是PHP (以及许多其他语言)中最常见的错误

您应该转义所有正在显示的文字,特别是当它来自不受信任的来源时 - 并且用户提供的每个值都是不受信任的

如果您无法逃避输出,则可能会危及用户的安全 - 您可能需要阅读维基百科上的Cross-site-scripting

答案 1 :(得分:0)

以下PHP代码

echo $msg_sender_name = $info[reciever_name];

似乎缺少几个引号。试试这个:

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