2010-09-07 97 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中的所有内容。这也可以让你发现什么时候有人张贴你不希望收到的价值观。