Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php htmlspecialchars在$\u POST中的输出_Php_Htmlspecialchars - Fatal编程技术网

Php htmlspecialchars在$\u POST中的输出

Php htmlspecialchars在$\u POST中的输出,php,htmlspecialchars,Php,Htmlspecialchars,通过$u POST将登录名(电子邮件地址)从第1页发送到第2页,以便处理jim_o'brien@thing.com. echo”“ 查看第2页的源代码,我看到它输出了jim_o'brien@thing.com而不是jim#o';brien@thing.com如我所料 I当再次将数据发送到新页面(第3页)时,我会将登录再次包装到htmlspecialchars($\u GET['login'],ENT\u QUOTES)。。。它做了我期望它做的事 但有人能解释为什么它会丢失它的#039编码

通过$u POST将登录名(电子邮件地址)从第1页发送到第2页,以便处理jim_o'brien@thing.com.

echo”“

查看第2页的源代码,我看到它输出了
jim_o'brien@thing.com
而不是
jim#o';brien@thing.com
如我所料

I当再次将数据发送到新页面(第3页)时,我会将登录再次包装到
htmlspecialchars($\u GET['login'],ENT\u QUOTES)
。。。它做了我期望它做的事

但有人能解释为什么它会丢失它的
#039编码?我可以理解它在浏览器中重复一个引号,但为什么它也在源代码中重复


谢谢你,吉姆brien@thing.com
不是有效的电子邮件地址,不允许使用

使用过滤器输入进行验证

$login = filter_input(INPUT_GET, 'login', FILTER_VALIDATE_EMAIL); //or INPUT_POST, if method is POST
if(!$login){
   //invalid e-mail 
}

参考资料:

查看页面的源代码,事实上它运行良好-在浏览器中,您会看到“”,因为您的浏览器使其“人性化”,但在查看源代码后,您会看到,一切都很好

换言之,请尝试:

echo htmlentities("jim_o'brien@thing.com", ENT_QUOTES);

事实上,原来的问题是正确的。这是我在大约五分钟内破解的一些代码。它不漂亮,也不复杂,但它说明了问题的关键

 <?php
 $posted=$_POST[posted];
 if (isset($posted)) {
 echo "POSTED: $posted<br>"; //output: You'll see a quote
 $specposted=preg_replace('/&#039/','****',$posted);
 echo "after entity replace: $specposted<br>"; //output: You'll see a quote
 }
 else{
 $phraseone="You'll see a quote";
 $phrasetest=htmlentities($phraseone, ENT_QUOTES);
 echo "phrasetest: $phrasetest<br>"; //output: You'll see a quote
 $specialphrase=preg_replace('/&#039/','****',$phrasetest); 
 echo "after entity replace: $specialphrase<br>"; //output: You****;ll see a quote
 print<<<HERE
 <form method='post'>
 <input type='hidden' name='posted' value='$phrasetest'>
 <input type='submit' value='GO!'>
 </form>
 HERE;
 }
 ?>

你为什么说那不是一个有效的电子邮件地址?它是有效的。包含单引号的邮件地址是有效的,即使Gmail,Yahoo,Hotmail…等拒绝它们。就验证而言,我使用正则表达式。但我的问题是关于通过POST的htmlspecialchars的输出。无论如何,谢谢。生活和学习。。。我真的不知道。我一直认为只允许字母、数字、破折号和下划线。谢谢(:htmlentities给出了相同的结果。但您的答案必须是正确的。浏览器使其可读。谢谢。抱歉,源代码不会因为$u POST发送而输出
\039;
,而是我第一次说的一个引用。我仍然想知道原因。
回应htmlspecialchars(“