PHP $ _GET和$ _POST未定义的问题(PHP $_GET and $_POST unde

2019-07-04 04:44发布

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

我从一台服务器移动PHP站点到另一个。 新的服务器是IIS 7.0,PHP 5.2.1,短打开标签“开”,我不知道原来的服务器是如何建立(我只是给出的代码)。

以下是代码在页面上的一个非常第一部分:

<?
ob_start();
session_start();

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

当这个页面执行时,总是显示以下错误:

PHP注意:未定义指数:在第6行确认[文件位置] .PHP

此外,用户可以通过从主页(这是一个标准的HTML页面)重定向访问该页面。 当正确导航完整网址如下:

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

......我明白为什么引发错误。 我不明白的是如何代码都不能工作,因为它原来的服务器上。 难道我会丢失配置设置?

*这个同样的问题发生在几十个地点遍布站点。 这只是问题的一个具体的发生。

Answer 1:

新服务器error_reporting设置为E_ALL。 你看到的只是一个通知,不是一个错误。 尝试:

error_reporting(E_ALL ^ E_NOTICE)

与错误报告集到E_ALL,访问其中没有设置产生一个错误的阵列的构件。 如果你不希望降低你的错误报告级别,检查$ _GET前[“变种”],改变你的代码:

if(isset($_GET['confirm']) && ($_GET['confirm'] == 13 || $_GET['confirm'] == 14 || $_GET['confirm'] == 15 || $_GET['confirm'] == 16)) {

通过将调用isset()函数之前,你实际访问$_GET['confirm']你将验证你不访问,没有设置一个数组成员。 ( $_GET['confirm']将仅在URL中结束设置?confirm=...?something...&confirm=...



Answer 2:

我建议优化代码阅读:

if (isset($_GET['confirm']) && ($_GET['confirm'] >= 13 && $_GET['confirm'] <= 16)) 

我完全与Josh的提议达成一致。



Answer 3:

由于没有索引$ _GET [“确认”],PHP抛出你正在寻找一个未定义的索引的通知。 正在显示该通知,因为新服务器具有E_NOTICE在使用error_reporting地方设置标志,无论是在php.ini中或者在上pageloads运行一些配置文件或引导。

从PHP手册, E_NOTICE :“运行时间通知表示脚本遇到的东西,可以指出错误,但也可能发生在运行脚本的正常过程。”

您可以尝试关闭的通知,如果你不担心他们,或用它们来追查地方可能会出现问题。

对于您发布的代码,一个简单的办法是改变的条件来

if(isset($_GET['confirm']) && <list of OR conditions>)

这样,PHP捞出评估条件,如果没有“确认”指数。



Answer 4:

isset()是一个有用的功能。 它返回“真”如果变量存在,“假”,如果没有。 通常情况下,人们用它与结合超全局喜欢$_GET$_POST ,以确定是否你是从该网站的其他页面发送-这允许你创建基于您的用户是来自不同的动作和哪些数据是沿标记。 它还可以防止在试图使用你还没有定义的变量,如OP越来越错误。 因此,而不是需要写两个不同的PHP文件,并担心发送您的用户错误的,你可以做到这一切在一个页面。

周杰伦,我会小心你的一些电话的使用。 <?php是更有可能比工作<? 。 我听说在session_start()应设置为浏览器的第一件事或可引起头的问题。 是的,你需要你使用它之前已经声明的变量-如果你不是在键入[file].php?confirm=[some number]为您的网址,网页会打破,除非你修改它允许休息。



Answer 5:

这是因为confirm查询字符串变量似乎并没有设置,您可以检查它喜欢:

ini_set('display_errors', true);
error_reporting(E_ALL);

var_dump($_GET['confirm']);


文章来源: PHP $_GET and $_POST undefined problem