我正在观看一些php教程,其中许多教程都是这样开始的:
<?php
if(!$_POST['username']){
..
..
};
?>
或
<?php
$username = $_POST['username'];
..
..
?>
但每次我第一次访问该页面时,它都会打印一个错误,因为$_POST['username]没有初始化。我该如何解决此问题?
感谢u
在向Web服务器发出请求时,可以使用四种主要的HTTP方法:GET、POST、DELETE和PUT。使用每一个,您都可以在请求中传递PHP允许您访问的变量。对于GET
和POST
,您可以访问具有相应数组的变量:$_GET
&$_POST
。
如果你以前从未处理过HTTP方法,那是因为你不需要真正考虑它。这是因为当你在浏览器中键入URL并点击go时,它默认使用GET
方法。
因此,在这种情况下,可能发生的情况是,在加载页面时根本没有发出POST
请求。即使是这样,也需要定义适当的POST
变量来访问它,在本例中就是username
。
由于以上其中一项不正确,因此变量的值为null。当您尝试在PHP中访问null值时,脚本会抛出一个错误(正如您所看到的(。你可以改变这一点,但我不建议这样做。我想知道我在写代码时正确地处理了空变量。但也许那只是我。
我建议以及其他人建议的解决方案是使用isset()
函数来查看变量是否已定义。这将防止您的代码被破坏。查看isset文档了解更多信息。
<?php
if(isset($_POST['username'])){
..
..
}
?>
您可以将error_reporting
设置为E_ALL ~E_NOTICE
请参阅相关文档:http://php.net/manual/en/function.error-reporting.php
或者在php.ini文件中全局禁用它。
使用isset($_POST['username'])
if(isset($_POST['username']))
{
.
.
.
}
$_POST['username']正在尝试获取'username'变量,该变量包含对页面的POST http请求(考虑提交表单(。正常浏览页面是http GET请求。
尝试使用这个来避免问题:
<?php
if(isset($_POST['username'])) {
... if POST and includes a username value, do this ...
} else {
... otherwise do this stuff ...
}
有关HTTP请求类型的更多信息,请阅读我:http://techforum4u.com/content.php/229-HTTP-Request-GET-HEAD-POST-PUT-DELETE-OPTION-TRACE
这是因为您没有通过POST
收到值(就像从表单帖子中收到的一样(。按照其他人的建议添加isset()
验证。看看http://php.net/manual/es/function.isset.php