PHP:checkbox-isset 总是返回 true

标签 php jquery mysql checkbox

在我的表单中(我使用 jQuery 的 ajax() 通过 POST 提交)我有以下复选框(检查新用户是否应具有管理员权限):

<form action="../inc/new_user.php" id="new_user_form">
    Username:<br><input type="text" name="username" placeholder="Username"><br><br>
    Email:<br><input type="text" name="email" placeholder="Email"><br><br>
    Password:<br><input type="password" name="password" placeholder="Password"><br><br>


    <!-- here's the checkbox -->
    Admin: <input type="checkbox" name="admin" /><br><br>

    <input type="submit" value="Save">
</form>

然后我发布值(所有其他字段都工作得很好,只是复选框没有):

$( "#new_user_form" ).submit(function( event ) {
      event.preventDefault();
      var $form = $( this ),
        username = $form.find( "input[name='username']" ).val(),
        email = $form.find( "input[name='email']" ).val(),
        password = $form.find( "input[name='password']" ).val(),
        admin = $form.find( "input[name='admin']" ).val(),
        url = $form.attr( "action" );

      var posting = $.post( url, { username: username, email: email, password: password, admin:admin } );

      posting.done(function( data ) {
        $( "#message_dialog" ).empty().append( data );
        $ ("#message_dialog" ).dialog({
          modal: true,
          buttons: {
            Ok: function() {
              $( this ).dialog( "close" );
            }
          }
        });
      });
    });

此代码用于获取 PHP 中的值:

$user_username      =   $_POST['username'];
$user_email     =   $_POST['email'];
$user_password      =   $_POST['password'];
if (isset($_POST['admin'])) {
    $user_admin = 1;
} else {
    $user_admin = 0;
}

但是当我回显 $user_admin 时,无论复选框的状态如何,我总是得到“1”。这很奇怪,因为我多次被告知如果未选中该复选框,则不会设置 $_POST 值。

我还尝试在输入元素上使用值属性,并在 PHP 中进行比较。我的方法都不起作用,这让我现在发疯。

注意:我将我的 php 变量 $user_admin 设置为 0 或 1,以将其作为 TINYINT 存储在我的数据库 (MySQL) 中。 1 表示“是的,用户是管理员”,0 表示“不,他不是管理员”。

请告诉我这里出了什么问题。

最佳答案

你可能想要一个 bool 值来告诉你复选框是否被选中:

admin = $form.find( "input[name='admin']" ).is(':checked'),

然后用PHP检查

if (isset($_POST['admin']) && $_POST['admin']) {

关于PHP:checkbox-isset 总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20075511/

相关文章:

php - 将数据库表存储到数组php

jquery - 如何摆脱 fullCalendar 滚动?

php - 如何将模型数据加载到在 Yii 中使用 Ajax 过滤的 Select2 下拉列表

java - Spring Boot 执行器 MySQL 数据库健康检查

php - 如果页面请求太快,则 Zend Session 被销毁

javascript - WordPress 注入(inject) js 脚本

java - Struts 2 操作未将所需结果返回到 Jquery Ajax 调用

mysql - 将oracle脚本转换为mysql脚本

mysql - 如何编写足球排名系统算法

php - 如何在服务器中安装钩子(Hook)?