PHP $ _GET和$ _POST未定义的问题

4 php post get undefined

我是PHP的新手,所以如果这是一个简单的问题,我道歉...

我正在将PHP站点从一个服务器移动到另一个服务器.新服务器是IIS 7.0,PHP 5.2.1,短开标签打开"On",我不知道原始服务器是如何设置的(我刚刚给出了代码).

以下是其中一个页面的第一部分代码:

<?
ob_start();
session_start();

if($_GET['confirm'] == 13 || $_GET['confirm'] == 14 || $_GET['confirm'] == 15 || $_GET['confirm'] == 16) 
{
    include("test/query/test_query.php");
}
?>
Run Code Online (Sandbox Code Playgroud)

执行此页面时,始终显示以下错误:

PHP注意:未定义的索引:在第6行的[文件位置] .php中确认

此外,用户通过从主页(标准HTML页面)重定向来访问此页面.正确导航到的完整URL如下:

HTTP:// WWW [现场] .COM/test.php的#登录

...我理解为什么会抛出错误.我不明白的是这个代码如何在原始服务器上工作.我可以错过配置设置吗?

*同样的问题发生在整个网站的几十个地方.这只是该问题的一个特定事件.

Jos*_*osh 28

新服务器已error_reporting设置为E_ALL.你所看到的是通知,而不是错误.尝试:

error_reporting(E_ALL ^ E_NOTICE)
Run Code Online (Sandbox Code Playgroud)

将错误报告设置为E_ALL时,访问未设置的数组成员会生成错误.如果您不希望降低错误报告级别,请在检查$ _GET ['var']之前将代码更改为:

if(isset($_GET['confirm']) && ($_GET['confirm'] == 13 || $_GET['confirm'] == 14 || $_GET['confirm'] == 15 || $_GET['confirm'] == 16)) {
Run Code Online (Sandbox Code Playgroud)

通过在实际访问之前添加对isset()的调用$_GET['confirm'],您将验证您没有访问未设置的数组成员.($_GET['confirm']仅在URL以?confirm=...或结尾时设置?something...&confirm=...)

  • +1.OP正在经历草率的编码实践,仅此而已. (4认同)

tue*_*ist 6

我建议优化阅读代码:

if (isset($_GET['confirm']) && ($_GET['confirm'] >= 13 && $_GET['confirm'] <= 16)) 
Run Code Online (Sandbox Code Playgroud)

我完全赞同乔希的建议.