Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的复选框问题_Php_Javascript - Fatal编程技术网

php中的复选框问题

php中的复选框问题,php,javascript,Php,Javascript,我的问题是当用户点击复选框时,用户被激活。此代码运行良好。但当用户再次单击取消复选框时,用户再次被取消激活。怎么做?这是我的工作代码 当用户单击复选框时激活用户 if($_GET['doAction'] == 'Activate') { if(!empty($_GET['q'])) { $userid = $_GET['q']; $conn = db_connection(); $query = "UPDATE user SET activ

我的问题是当用户点击复选框时,用户被激活。此代码运行良好。但当用户再次单击取消复选框时,用户再次被取消激活。怎么做?这是我的工作代码

当用户单击复选框时激活用户

if($_GET['doAction'] == 'Activate') {
    if(!empty($_GET['q'])) {
        $userid = $_GET['q'];
        $conn = db_connection();
        $query = "UPDATE user SET activate = '1' WHERE userid = '".$userid."' ";
        $result=$conn->query($query);
    }
}
这是我的复选框

<input type="checkbox" name="app" onchange="callUser(this.value,doAction.value);" value="<?php echo $userid;?>" <?php if($row['approved'] == '1'){ echo "checked=\"true\""; }?>/>
<input type="hidden" name="doAction" id="doAction" value="Approved" />

如果用户取消选中doAction='Deactivate'复选框,您需要什么?

在这里发布callUser函数的源代码

如果用户取消选中复选框而不是doAction='Deactivate'?

在此处发布callUser函数的源代码

您应该发送复选框的状态,而不是隐藏字段值

onchange="callUser(<?php echo $userid;?>,this.value);"
另外,请注意,您的代码示例和我的anwser都非常不安全。您很容易受到SQL注入攻击和潜在的权限问题


编辑:修复不发送用户ID的问题。

您应该发送复选框的状态,而不是隐藏字段值

onchange="callUser(<?php echo $userid;?>,this.value);"
另外,请注意,您的代码示例和我的anwser都非常不安全。您很容易受到SQL注入攻击和潜在的权限问题


编辑:修复不发送用户ID。

更新:鉴于刚刚公布的Javascript方法破坏了网页的默认表单发送功能,请忽略此答案

提交表单时,未选中的复选框不会传回服务器。因此,在这种情况下:

if($_GET['doAction'] == 'Activate') {
    if(!empty($_GET['q'])) {
        $userid = $_GET['q'];
        $conn = db_connection();

        if (!empty($_GET['app'])) {
            $query = "UPDATE user SET activate = '1' WHERE userid = '".$userid."' ";
        }
        else {
            $query = "UPDATE user SET activate = '0' WHERE userid = '".$userid."' ";
        }
        $result=$conn->query($query);
    }
}
希望这有帮助


此外,最好使用参数并将变量绑定到SQL,而不是串接字符串。这将大大有助于防止SQL注入攻击。

更新:鉴于刚刚公布的Javascript方法破坏了网页的默认表单发送功能,请忽略此答案

提交表单时,未选中的复选框不会传回服务器。因此,在这种情况下:

if($_GET['doAction'] == 'Activate') {
    if(!empty($_GET['q'])) {
        $userid = $_GET['q'];
        $conn = db_connection();

        if (!empty($_GET['app'])) {
            $query = "UPDATE user SET activate = '1' WHERE userid = '".$userid."' ";
        }
        else {
            $query = "UPDATE user SET activate = '0' WHERE userid = '".$userid."' ";
        }
        $result=$conn->query($query);
    }
}
希望这有帮助


此外,最好使用参数并将变量绑定到SQL,而不是串接字符串。这将大大有助于防止SQL注入攻击。

另一件事是,您不会使用值来设置其是否已选中

checked=“checked”
表示在输入标记中启用

那么谁说它没有被发送是正确的呢?你最好的检测方法就是使用
isset($\u请求['checkBx'])

例如


另一件事是您不使用值来设置是否选中

checked=“checked”
表示在输入标记中启用

那么谁说它没有被发送是正确的呢?你最好的检测方法就是使用
isset($\u请求['checkBx'])

例如


您正在调用JavaScript函数
callUser
。你能发布这个函数吗?html中根本没有
Activate
word。是否遗漏了某些内容?选中复选框时,其值为
(在URL的
部分中),未选中时,该复选框将丢失。您正在调用JavaScript函数
callUser
。你能发布这个函数吗?html中根本没有
Activate
word。你遗漏了什么吗?选中复选框时,其值为
(在URL的
部分中),未选中时,其值为
。或者你可以使用
mysql\u real\u secape\u string($userid)
,效果一样,但网站却很少work@barkermn01
else{$query=“更新用户集激活='0',其中userid='.$userid.“'”;}
此语句将永远不会执行,因为我正在从数据库检索
app
的值。app应仅在其处于活动状态时发送。是否每次都有一些javascript激活复选框?或者可以使用
mysql\u real\u secape\u字符串($userid)
同样好,但却少了一个该死的站点work@barkermn01
else{$query=“UPDATE user SET activate='0'其中userid='“$userid.”“;}
此语句将永远不会执行,因为我正在从数据库中检索
app
的值。app应该只在它处于活动状态时发送。是否每次都有一些javascript激活复选框?对安全性的一个常见误解是,它是一个附加组件或修补程序,稍后再执行。安全系统必须设计为从一开始就安全,以获得最佳效果。这也是更多的工作,以添加所有比你去做,就像代码注释。谢谢你的建议。您的代码正在运行。再次感谢。:-)对安全性的一个常见误解是,它是一个附加组件或修补程序,以后再做。安全系统必须设计为从一开始就安全,以获得最佳效果。这也是更多的工作,以添加所有比你去做,就像代码注释。谢谢你的建议。您的代码正在运行。再次感谢。:-)
if(isset($_REQUEST['checkbx'])){
  // code for they are enabled
}else{
  // code for they are disabled
}