【问题标题】:check box stops my Jquery script复选框停止我的 Jquery 脚本
【发布时间】:2010-09-07 12:37:30
【问题描述】:

如果我不检查 php 脚本中的记住我复选框,我的登录表单会给出 <b>Notice</b>: Undefined index: autologin in 错误。在我的 .php 文件中 $check_autologin = $_POST['autologin']; 我正在检查用户是否检查过它

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 />

如果不选中,复选框如何返回任何默认值?

【问题讨论】:

  • 你的 jQuery 脚本中真的有错误吗?在我看来,这更像是一个 PHP 错误。
  • 如果您认为问题出在 jquery 上,您应该发布您的 javascript 而不是 PHP。
  • php 没有问题。但是使用 Jquery 和 Json,我在 php 脚本中取值。如果出现错误,则脚本不会发送值并且 Jquery 不起作用。
  • 所以请向我们展示您的 javascript,以便我们查看,有什么问题。没有看到它是不可能找到你的 javascript 问题的。

标签: php jquery checkbox default


【解决方案1】:

我怀疑问题是当您的复选框未选中时,$_POST 数组中不存在该值。

尝试使用

隔离您的值检查
isset( $_POST['autologin'] )

因此:

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

【讨论】:

  • +1 表示isset()。当 PHP 处于严格模式时,如果您在使用索引之前没有检查是否存在,它会产生一个通知。 empty() 是一个有用的替代方案。
【解决方案2】:

未定义索引意味着您要求 PHP 告诉您一个不存在的数组元素的值。

这是一个“通知”,这意味着它不是致命错误,也不会阻止程序运行,但修复它是个好主意。 (也可以设置 PHP 使其不报告通知级别的事件,但同样,最好只是解决问题)

如何解决?

a) 正如已经建议的那样,在检查值是什么之前检查它是否已设置。 所以不要只说 if($_POST['x']) 说 if(isset($_POST['x]) && $_POST['x'])

b) 明确禁止警告。 PHP 允许您使用@ 符号来执行此操作。 所以你会说 if(@$_POST['x'])

c) 确保您只引用您知道已设置的变量。这将意味着对您的代码采用不同的方法,但可能是使其总体上更健壮的开始。 例如,您可以编写一个 foreach($_POST) 循环来检查 $_POST 中的所有内容,而不是直接查看您期望的 $_POST 值。这还可以让您发现有人发布了您不希望收到的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多