如何检查PHP中是否选中了复选框?

我试图检查是否已在PHP中检查了一个复选框以便注册.但它现在不能正常工作.这是我到目前为止使用的代码,用于检查是否已经检查过.

if(!isset($_POST['tos']))
  $this->errors[] = 'Please accept our Terms of Service.';

这是HTML代码.

<div class="checkBox">
<label>
<input type="checkBox" name="tos" value="0"> I agree to the <a href="#">Terms of Service</a> and <a href="#">Privacy Policy</a>
</label>
</div>

完整表格代码

        <form role="form" method="POST" action="<?PHP echo $_SERVER['PHP_SELF'];?>">
              <div class="form-group">

              <div class="row">
                  <div class="col-sm-6">
                  <label for="firstname">Firstname</label>
                  <input type="text" class="form-control" id="firstname" name="firstname" placeholder="Firstname">
                  </div>
                  <div class="col-sm-6">
                  <label for="surname">Surname</label>
                  <input type="text" class="form-control" id="surname" name="surname" placeholder="Surname">
                  </div>
              </div>
              </div>
              <div class="form-group">
                <label for="username">Username</label>
                <input type="text" class="form-control" id="ruser" name="ruser" placeholder="Username">
              </div>
              <div class="form-group">
                <label for="email2">Email address</label>
                <input type="email" class="form-control" id="remail" name="remail" placeholder="Enter email">
              </div>
              <div class="form-group">
                <div class="row">
                  <div class="col-sm-6">
                  <label for="password2">Password</label>
                  <input type="password" class="form-control" id="rpass" name="rpass" placeholder="Password">
                  </div>
                  <div class="col-sm-6">
                  <label for="password2">Repeat password</label>
                  <input type="password" class="form-control" id="rpass2" name="rpass2" placeholder="Password">
                  </div>
                </div>
              </div>
              <div class="checkBox">
                <label>
                  <input type="checkBox" name="tos" value="0"> I agree to the <a href="#">Terms of Service</a> and <a href="#">Privacy Policy</a>
                </label>
              </div>
               <input type="hidden" name="secur" value="<?PHP echo $ip;?>"/>
               <input type="hidden" name="token" value="<?PHP echo $token;?>"/>
              <button type="submit" name="register" class="btn btn-block btn-color btn-xxl">Create an account</button>
            </form>

这段代码出了什么问题?任何帮助,将不胜感激.

解决方法:

if(!isset($_POST['tos']))
  $this->errors[] = 'Please accept our Terms of Service.';`

这样做是说如果$_POST中没有’tos’,则抛出一个错误.

在将表单发送到服务器之前,您应该使用javascript检查此客户端.

你也可以……

<input type="checkBox" name="tos" value="accepted" checked>

PHP

if(isset($_POST['tos']) && $_POST['tos']==='accepted') echo 'All good'; 
else array_push($errors,'err code here'); //to add to $error array

更新

我不确定你是否使用jQuery,但只是为了更友好的用户方法

var tos = $('#tos');
var notice = $('.notice');
tos.on('click',function(){
  if(tos.is(':checked')){
    notice.text('Thank you.');
  }
  else{
   notice.text('Please accept our ToS to continue.');
  }
})

See a working example here.如果未选中,您甚至可以将表格全部停止.顺便说一句,如果我没记错,复选框输入只会在检查时发送POST数据.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...