我的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']);
}
?>
如果有人对如何修复这些通知有任何想法,那就太棒了。
答案 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;