0

我正在看几个 php 教程,其中许多都是这样开始的:

<?php
 if(!$_POST['username']){
  ..
  ..
 };
?>

或者

<?php
 $username = $_POST['username'];
  ..
  ..
?>

但是每次我第一次访问该页面时,它都会打印一个错误,因为 $_POST['username'] 没有初始化。我该如何解决这个问题?

感谢你

4

6 回答 6

1

向网络服务器发出请求时,您可以使用四种主要的 HTTP 方法:GET、POST、DELETE 和 PUT。使用其中的每一个,您都可以通过 PHP 允许您访问的请求传递变量。对于GETPOST,您可以分别使用相应的数组访问变量:$_GET& $_POST

如果您以前从未处理过 HTTP 方法,那是因为您不需要真正考虑它。这是因为当您在浏览器中键入 URL 并点击 go 时,它GET默认使用该方法。

因此,在这种情况下,可能发生的情况是您在POST加载页面时根本没有发出请求。即使你是,你也需要POST定义正确的变量来访问它,在这个例子中是username.

由于上述之一不正确,因此变量的值为空。当您尝试在 PHP 中访问空值时,脚本会抛出错误(如您所见)。你可以改变它,但我不推荐它。我想知道我在编写代码时正确处理了我的空变量。但也许这只是我。

我推荐的以及其他人建议的解决方案是使用该isset()函数来查看变量是否已定义。这将防止您的代码被破坏。查看 isset 文档了解更多信息。

于 2013-05-20T17:49:12.300 回答
0

您可以设置error_reportingE_ALL ~E_NOTICE

请参阅有关此的文档:http: //php.net/manual/en/function.error-reporting.php

或在 php.ini 文件中全局禁用它。

于 2013-05-20T17:43:27.723 回答
0

那是因为您没有通过POST(例如来自表单帖子)收到值。按照其他人的建议添加isset()验证。看看http://php.net/manual/es/function.isset.php

于 2013-05-20T17:43:58.190 回答
0
<?php

if(isset($_POST['username'])){
   ..
   ..
}

?>
于 2013-05-20T17:44:18.560 回答
0

利用isset($_POST['username'])

if(isset($_POST['username']))
{
.
.
.
}
于 2013-05-20T17:44:33.680 回答
0

$_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

于 2013-05-20T17:46:44.093 回答