2012-07-03 37 views
0

我已經越來越在我的PHP文件中的以下錯誤:時定位誤差在PHP

注意:未定義指數:errStr在/clientdata/zeus-dynamic-1/c/r/crowndoor.com.au/www第13行的/crowntest/contact.php

注意:未定義索引:發送到/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

爲什麼不像$_POST['errStr']那樣使用isset()

0

您需要檢查密鑰是否存在。

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

行更改13:

if($_SESSION['errStr']) 

要:

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

轉到:

error_reporting(E_ALL & ~E_NOTICE

和/或先檢查數組鍵的存在。

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

關閉生產中的注意事項 - 沒有發展。另外使用isset($ _ SESSION ['sent'])檢查眼睛更容易 –

+0

如果值爲null,則isset返回「false」。在這種情況下,顯式檢查是否存在密鑰。 – madflow

1

在php頁面的頂部添加代碼。

<?php error_reporting(0); ?>