我正在寻找不同的方法来保存用户在表单中的输入,即使他们刷新浏览器后也能够保留。我发现了以下内容:
value="<?php echo @$_POST['blah'];?>">
我也见过这样的用法:
而我也看到它像下面这样:
value="<?php echo $_POST['blah'];?>">
他们似乎都可以完成同样的事情。在$_POST数组之前添加@符号的意义是什么?是否有一种方法比另一种更好?
@
是 PHP 的错误控制运算符。在表达式前(例如数组访问或函数调用),它将抑制通常会生成的任何错误。功能上没有区别,只是在你的设置中会生成和记录或显示哪些警告/通知。
在这种情况下,如果 $_POST 数组中没有定义 'blah'
,第一个表单(带有 @)不会生成通知,而第二个表单会生成。
至于哪种方法更可取,在我的经验中,通常不鼓励使用 @
,也不鼓励使用任何仅抑制错误的方法——更好的做法是先积极检查事物。PHP 文档提供了以下原因来提醒注意:
警告:目前,“@” 错误控制操作符前缀甚至会禁用将终止脚本执行的关键错误的错误报告。除其他外,这意味着,如果你使用 “@” 来抑制某个函数的错误并且该函数不可用或输错了,那么脚本将在那里停止执行,而没有任何关于为什么停止的指示。
简言之:它抑制错误,这通常是不鼓励的,除非你有充分的理由这样做。更好的方法是积极主动。
@
符号可以抑制POST方法抛出的任何错误。例如,当它未定义时,您将不会收到警告。