WAMP2中的php错误

时间:2011-04-09 21:04:37

标签: php mysql wamp

我有一个完整的PHP脚本用于我写的用户激活。完全正常工作,在我的实际网络托管上没有显示任何错误,虽然当我在WAMP2工作时,我会收到诸如此类的错误。

Notice: Undefined index: type in C:\wamp\www\activate.php on line 4
Notice: Undefined index: username in C:\wamp\www\activate.php on line 5
Notice: Undefined index: gender in C:\wamp\www\activate.php on line 6
Notice: Undefined index: formvalue in C:\wamp\www\activate.php on line 29

我知道问题是什么,这是因为页面activation.php都是来自create.php的表单提交(create.php上的表单隐藏值为1,如果存在则表单已提交进入mysql数据库)并且如果表单值不存在则用户正在激活他们的帐户。

当用户激活时,我使用$ _POST定义的变量和隐藏的表单值1未定义,这导致错误。

我的问题是为什么当我的网页加载到我的实际托管但是出现在WAMP2中时,这些错误没有显示?并且这些错误很重要,拥有未定义的变量是不好的做法吗?如果是这样,我该如何克服这个问题?

谢谢,我希望我解释一切都好。

4 个答案:

答案 0 :(得分:1)

  

使用undefined是不好的做法   变量


  

我该如何克服这个问题?

不使用不存在的变量。

或者使用已使用默认值初始化的变量,如果尚未提供预期值。

例如:

if (isset($_POST['login'])) {
    $login = $_POST['login'];
} else {
    $login = '';
}

或者,使用三元运算符来缩短范围:

$login = isset($_POST['login']) ? $_POST['login'] : '';


  

为什么不显示这些错误   当我的页面加载到我的实际   托管但是出现在WAMP2?

如果可以因为显示在一台服务器上而不显示在另一台服务器上 - 请参阅display_errors

或者可能是因为error_reporting级别在两台服务器上不一样。

通常,您的开发服务器配置为报告通知(请参阅E_NOTICE,并显示错误 - 这使得在查找某些问题的原因时更容易。

答案 1 :(得分:1)

您的PHP配置为在WAMP2配置上显示通知,警告等。

在托管环境中,这是禁用的,并且可能只会显示严重错误。

您可以找到有关错误报告的更多信息:http://forums.devshed.com/php-development-5/changing-error-reporting-in-php-ini-549798.html

如果您不知道php.ini文件的位置,请尝试使用以下代码创建一个php文件以显示当前配置:

<?php
   phpinfo();
?>

答案 2 :(得分:0)

http://php.net/manual/en/errorfunc.configuration.php - display_errors和display_startup_errors
我想说的是 - 检查数组键是否存在的良好做法:

$login = isset($_POST['login']) ? $_POST['login'] : NULL;

答案 3 :(得分:0)

您的主机很可能将error_reporting设置为未显示E_NOTICE的值(E_ALL ^ E_NOTICE)。我总是检查我的变量的存在,因此不会抛出未定义的变量/索引。这有助于我进行调试,我总是启用E_NOTICE(error_reporting = E_ALL)。

您可能希望使用filter_*方法获取POST或GET值,因为它还会检查提交的值是否为字符串。