PHP初始化变量


PHP initializing variables

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

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

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

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

感谢u

在向Web服务器发出请求时,可以使用四种主要的HTTP方法:GET、POST、DELETE和PUT。使用每一个,您都可以在请求中传递PHP允许您访问的变量。对于GETPOST,您可以访问具有相应数组的变量:$_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