2010-09-07 49 views
1

我的登錄表單如果我不檢查記住我複選框在PHP腳本它給<b>Notice</b>: Undefined index: autologin in錯誤。在我的PHP文件我有 $check_autologin = $_POST['autologin'];而我檢查是用戶籤它複選框停止我的JQuery腳本

if($check_autologin == 1) 
    { 
    $password_hash = $encrypted_mypassword;  
    setcookie ($cookie_name, 'usr='.$username.'&hash='.$password_hash, time() + $cookie_time); 
    } 

,這是我的複選框欄<input type="checkbox" name="autologin" value="1">Remember Me<br />

怎麼可能複選框可以返回任何默認值,如果它未被選中?

+1

是真的在你的jQuery腳本中的錯誤?這對我來說更像是一個PHP錯誤。 – cori 2010-09-07 12:44:13

+0

如果你認爲問題出在jQuery上,你應該發佈你的javascript而不是你的PHP。 – jigfox 2010-09-07 12:46:21

+0

沒問題是在php.But與Jquery和Json我在PHP腳本的價值。如果有錯誤比腳本不發送價值和JQuery不起作用。 – Ercan 2010-09-07 12:49:22

回答

2

我懷疑問題是當你的複選框未被選中時,這個值不存在於$ _POST數組中。

嘗試使用

isset($_POST['autologin']) 

正是如此絕緣你的價值的檢查:

$check_autologin = false; 
if(isset($_POST['autologin'])) { 
    $check_autologin = $_POST['autologin']; 
} 
+1

+1 isset()'。當PHP處於嚴格模式時,如果您在使用索引之前沒有檢查存在,它會生成通知。 'empty()'是一個有用的選擇。 – jwueller 2010-09-07 12:50:47

0

未定義指數意味着你問PHP來告訴你一個不存在的數組元素的值。

這是一個'通知',這意味着它不是一個致命的錯誤,並不會停止運行程序,但是一個好主意來解決。 (它也可以設置PHP,所以它不報告通知級別的事件,但再次,更好的解決問題)

如何解決它?

a)如已經建議的那樣,檢查在檢查值之前是否設置了它。 因此,而不是隻是說如果($ _ POST [ 'X'])說,如果(isset($ _ POST [ 'X])& & $ _ POST [' X'])

二)明確剿警告。 PHP允許您使用@符號來執行此操作。 所以你會說如果(@ $ _ POST ['x'])

c)確保你只能引用你已知的變量。這將意味着對你的代碼採取不同的方法,但可能是使它在整體上更健壯的開始。 例如,您可以編寫一個foreach($ _ POST)循環,而不是直接查看您希望的$ _POST值,從而可以檢查$ _POST中的所有內容。這也可以讓你發現什麼時候有人張貼你不希望收到的價值觀。