我有一个输入字段(自动填充),格式为<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];
答案 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'];