@$_POST 与 $_POST.... 有啥区别? [复制]
Posted
技术标签:
【中文标题】@$_POST 与 $_POST.... 有啥区别? [复制]【英文标题】:What is the difference between @$_POST vs $_POST....? [duplicate]@$_POST 与 $_POST.... 有什么区别? [复制] 【发布时间】:2014-06-09 05:53:07 【问题描述】:在用户刷新浏览器后,我正在寻找将用户输入保存在表单中的不同方法,我遇到了这个问题:
value="<?php echo @$_POST['blah'];?>">
我也见过这样的:
value="<?php echo $_POST['blah'];?>">
他们似乎都在做同样的事情。 $_POST 数组前面的 @ 符号有什么意义?一种方式优于另一种方式吗?
【问题讨论】:
它被称为“at符号”,所以现在你可以在网上搜索它 【参考方案1】:@
是 PHP 的 error control operator。基本上,将它放在表达式之前(例如数组访问或函数调用)将抑制通常会生成的任何错误。从功能上讲,没有区别,只是将生成和记录或显示哪些警告/通知,具体取决于您的设置。
在这种情况下,如果 'blah'
未在 $_POST 数组中定义,则第一个表单(带有 @)不会生成通知,而第二个表单会。
至于什么是首选,根据我的经验,@
通常是不鼓励的,就像任何只是抑制错误的东西一样 - 更好的做法是先主动检查事情。除其他原因外,PHP 文档给出了警惕它的原因:
警告:目前,“@”错误控制运算符前缀甚至会禁用对将终止脚本执行的严重错误的错误报告。除其他外,这意味着如果您使用“@”来抑制某个函数的错误,并且该函数不可用或输入错误,则脚本将在那里死掉,而没有说明原因。
TL;DR:它抑制错误,除非你有充分的理由这样做,否则通常不鼓励这样做。最好积极主动。
【讨论】:
【参考方案2】:@
符号抑制 POST 引发的任何错误。例如,当它未定义时,您不会收到警告。
【讨论】:
这就是为什么我禁用不告诉我任何东西的烦人警告。【参考方案3】:在 Php 中放置 @ 是为了防止显示我们在该部分代码中存在的系统错误。
【讨论】:
以上是关于@$_POST 与 $_POST.... 有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
php中获取数据 php://input$_POST与$GLOBALS['HTTP_RAW_POST_DATA']三者的区别