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