2012-07-03 3 views
0

Я получаю следующие ошибки в моем PHP файл:Исправление ошибок в PHP

Notice: Undefined индекс: ErrStr в /clientdata/zeus-dynamic-1/c/r/crowndoor.com.au/www /crowntest/contact.php на линии 13

Примечание: Undefined индекс: посланный в /clientdata/zeus-dynamic-1/c/r/crowndoor.com.au/www/crowntest/contact.php на линии 20

которые отображаются в верхней части окна браузера. Я попытался отключить уведомления, используя: 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

Почему вы не используете isset(), как и вы, с $_POST['errStr']?

0

Вам нужно проверить ключ, который существует или не первый.

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

Изменение линии 13:

if($_SESSION['errStr']) 

To:

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

Это означает, что индекс массива, который вы ищете, не существует. Два способа справиться с этим - либо убедиться, что он существует, то это сообщение об ошибке будет указывать на логический недостаток в вашем приложении. Или, если индекс может законно не Есть, используйте isset, чтобы проверить перед доступом к нему. См. The Definitive Guide To PHP's isset And empty.

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

Turn извещений, как:

error_reporting(E_ALL & ~E_NOTICE)

и/или проверить наличие ключей массива в первую очередь.

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

Отключить уведомления в производстве - не в разработке. Также проверьте использование isset ($ _ SESSION ['sent']) проще на глазах –

+0

isset возвращает «false», если значение равно null. В этом случае явная проверка заключается в том, что ключ существует. – madflow

1

Добавить код в верхней части страницы php.

<?php error_reporting(0); ?>