doutuo3935 2011-03-05 22:25
浏览 64
已采纳

这是检查PHP检查复选框的正确方法吗?

I have this code to check that my ToS checkbox is checked:

if (!isset($_POST['tosagree'])) {//if the user did not agree to ToS
    $errors[] = '<span>Please agree to the Terms of Service.<span>';
}

For some reason it is allowing me to register even with that code there. The weird thing is that if any other field is not field and that field is not checked it will print the error, but if that is the only problem it allows the user to register.

Update: seems like its a problem with something weird in my code. If you feel like looking through 217 lines of code here is all the code: http://pastebin.com/YkERYpeF

  • 写回答

1条回答 默认 最新

  • doushouj966020 2011-03-05 22:30
    关注

    Whether !isset($_POST['tosagree']) will be enough depends on the browser.

    To be safe, always set the value attribute of the checkbox. Then, you simply check if that value is present:

    <input type='checkbox' value='agreed'/>
    

    Then do this:

    if (!isset($_POST['tosagree']) || $_POST['tosagree'] != "agreed" ) {
        $errors[] = '<span>Please agree to the Terms of Service.<span>';
    }
    

    Also, when the value attribute is not explicitly specified, browsers will usually set value to On when it is checked.

    Edit

    Ok, I know what's happening. In your PHP code, you have this block:

    if (!isset($_POST['tosagree']) || $_POST['tosagree'] != "agreed") {//if the user did not agree to ToS
        $errors[] = '<span>Please agree to the Terms of Service.<span>';
    }
    

    Then later you have this line:

    if ($un && $e && $p && $ic) { //if there are no errors
    

    The problem is that you don't have a flag for when the TOS checkbox isn't checked. The error can't be printed because in the if statement you have a call to exit().

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题