0

我的 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']);
}
?>

如果有人对如何解决这些通知的出现有任何想法,那就太好了。

4

7 回答 7

1

在 php 页面顶部添加代码。

<?php error_reporting(0); ?>
于 2012-07-03T06:15:47.770 回答
1

这意味着您要查找的数组索引不存在。处理该问题的两种方法是确保它存在,然后此错误消息将指出您的应用程序中的逻辑缺陷。或者,如果索引可能不合法存在,isset请在访问它之前使用来检查。请参阅PHP 的 isset 和 empty 权威指南

于 2012-07-03T06:09:02.017 回答
0

You can however check manually yourself without interfering the php.ini setting as it will add more complication on the deployment when you migrate your server one day.

To check manually, please see the following code...you have done it in a line somewhere in your code though...

<?php
if (isset($_SESSION['sent'])) {
    $success='<h1>Thank you!</h1>';
    $css='<style type="text/css">#contact-form{display:none;}</style>';
        unset($_SESSION['sent']);
}
?>
于 2012-07-03T06:10:17.560 回答
0

转告通知,如:

error_reporting(E_ALL & ~E_NOTICE)

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

$sent = array_key_exists('sent', $_SESSION) ? $_SESSION['sent'] : null;
于 2012-07-03T06:14:50.933 回答
0

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

于 2012-07-03T06:08:07.010 回答
0

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

if(isset($_SESSION['errStr']) && $_SESSION['errStr']) {
于 2012-07-03T06:08:10.367 回答
0

更改第 13 行:

if($_SESSION['errStr'])

至:

if(isset($_SESSION['errStr']))
于 2012-07-03T06:08:43.660 回答