gpt4 book ai didi

php - 如何只允许一个用户在 php 中编辑表单?

转载 作者:行者123 更新时间:2023-12-03 20:54:17 25 4
gpt4 key购买 nike

我有一个 php 代码,如下所示,其中 用户名/密码 通过 db 和 验证只允许一个用户登录(在下面 php 代码的 X 行) .

在php代码中,表 trace_users ( user_name , open , write 为列)记录登录用户的轨迹。当任何用户登录时,列打开 设置为 true 值 1 柱子。如果用户注销,列打开 设置为 false 值 0 柱子。

登录用户 => open = true, write = 1 当用户退出时 => open = false, write = 0
php代码:

if ($user_from_db && password_verify($password, $user_from_db->user_pass)) {

$sql = "SELECT * FROM trace_users where open='true'";
if($result1 = mysqli_query($connect, $sql)){
if(mysqli_num_rows($result1) > 0){ // Line X
while($row = mysqli_fetch_array($result1)){
if($row['open'] == "true") {
if(!isset($_SESSION['admin'])) {
$message = "user " . $row['user_name'] . " is currently editing the form. Want to take over ?";
echo "<script type='text/javascript'>if(confirm('$message')) { } else { };</script>"; // Line A
}
break;
}
}
} else{
$_SESSION['admin'] = true;
$_SESSION['user_name'] = $username;
$open="true";
$write="1";
$stmt= $connect->prepare("UPDATE trace_users SET open=?, write=? WHERE user_name=?");
$stmt->bind_param('sss', $open, $write, $_SESSION['user_name']);
$stmt->execute();
}
}

} else {
echo "Invalid Username or Password";
}

在 A 行如果 用户A 已登录,另一个用户可以说 用户B 尝试登录然后它会说 userA is currently editing the form. Want to take over ? .
我想要实现的是如果 用户B 接 watch 格 在警告框中单击确定 然后 用户A 应该进入只读模式(撤销写访问)和 用户B 应该
获得完全访问权限(写入)。

用户A => open = true, write = 0 用户B => open = true, write = 1
这是我尝试过的:

在 A 行之后,我想添加这些行,以便尝试接管的用户能够登录。
$_SESSION['admin'] = true;
$_SESSION['user_name'] = $username;
$open="true";
$write="1";
$stmt= $connect->prepare("UPDATE trace_users SET open=?, write=? WHERE user_name=?");
$stmt->bind_param('sss', $open, $write, $_SESSION['user_name']);
$stmt->execute();

问题陈述:

我想知道我应该在上面的 php 代码中进行哪些更改,以便如果 用户A 已登录并 userB也想登陆,尝试接管表单
那么应该没有 的写访问权限用户A , 和 用户B 应该给予完全访问,即

用户A (open=true , write=0)
用户B (open=true, write=1)
注:对于无写访问权限,用户将不会出现保存按钮。

最佳答案

问题更多在于流程逻辑,而不是代码:

  • UserA 连接(调用 1,php 授予访问权限:打开 => 1,写入 => 1)
  • UserB 连接(调用 2,php 向 UserB 显示弹出窗口:打开 => 1)
  • UserB 必须决定接管(或不接管)(调用 3,php 授予 UserB 的写权限并撤销 UserA 的写权限:UserA write => 0,UserB write=>1)

  • 使用您的代码,您正在管理第 1 步和第 2 步。
    当UserB决定接手时,第2步的php代码已经结束了(你提示的问题)。您必须编写专用代码才能获得 UserB 对问题的回答(这完全是关于您准备的 javascript)。

    无论如何,您没有检查任何写访问权限,因此一旦 UserB 接管然后注销,UserA 仍将具有打开的连接但没有写访问权限。如果 UserB 再次连接,它将再次提示接管不存在的内容(UserA 写访问权消失)。

    关于php - 如何只允许一个用户在 php 中编辑表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61399335/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com