修复php中的错误

时间:2012-07-03 06:05:33

标签: php

我的php文件中出现以下错误:

注意:第13行的/clientdata/zeus-dynamic-1/c/r/crowndoor.com.au/www/crowntest/contact.php中的未定义索引:errStr

注意:未定义的索引:在第20行的/clientdata/zeus-dynamic-1/c/r/crowndoor.com.au/www/crowntest/contact.php中发送

出现在浏览器窗口的顶部。 我尝试使用以下命令关闭通知:error_reporting(E_ALL ^ E_NOTICE);但它似乎没有任何区别。我现在正在尝试修复未定义的索引。我的php如下:

<?php
session_name("fancyform");
session_start();


$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];


$str='';
if($_SESSION['errStr'])
{
    $str='<div class="error">'.$_SESSION['errStr'].'</div>';
    unset($_SESSION['errStr']);
}
if (!isset($_POST['errStr'])) 
{
//If not isset -> set with dumy value 
$_POST['errStr'] = "undefine"; 
}

$success='';
if($_SESSION['sent'])
{
    $success='<h1>Thank you!</h1>';

    $css='<style type="text/css">#contact-form{display:none;}</style>';

    unset($_SESSION['sent']);
}
?>

如果有人对如何修复这些通知有任何想法,那就太棒了。

7 个答案:

答案 0 :(得分:1)

这意味着您正在寻找的数组索引不存在。处理它的两种方法是确保它存在,然后此错误消息将指出您的应用程序中的逻辑缺陷。或者,如果索引合法地不存在,请在访问之前使用isset进行检查。请参阅The Definitive Guide To PHP's isset And empty

答案 1 :(得分:1)

在php页面的顶部添加代码。

<?php error_reporting(0); ?>

答案 2 :(得分:0)

为什么不像isset()一样使用$_POST['errStr']

答案 3 :(得分:0)

您需要先检查密钥是否存在。

if(isset($_SESSION['errStr']) && $_SESSION['errStr']) {

答案 4 :(得分:0)

更改第13行:

if($_SESSION['errStr'])

要:

if(isset($_SESSION['errStr']))

答案 5 :(得分:0)

然而,您可以自己手动检查而不会干扰php.ini设置,因为当您迁移服务器一天时,它会在部署中添加更多复杂功能。

要手动检查,请参阅以下代码...您已在代码中的某个位置执行此操作...

<?php
if (isset($_SESSION['sent'])) {
    $success='<h1>Thank you!</h1>';
    $css='<style type="text/css">#contact-form{display:none;}</style>';
        unset($_SESSION['sent']);
}
?>

答案 6 :(得分:0)

关闭通知,如:

error_reporting(E_ALL & ~E_NOTICE

和/或首先检查数组键是否存在。

$sent = array_key_exists('sent', $_SESSION) ? $_SESSION['sent'] : null;