在php代码中,表格trace_users(user_name、open、write是列)跟踪已登录的用户。当任何用户登录时,列open设置为true,并在列write上设置值为1。如果用户退出登录,则在write列上将open列设置为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行,如果userA已登录并且另一个用户(比如userB)尝试登录,则会显示
userA正在编辑表格。要接管吗?
。我想要实现的是,如果userB在弹出框中点击“确定”接管了表单,则userA应该进入只读模式(撤销写访问权限),而userB应该拥有完全访问权限(写)。
userA => open = true, write = 0
userB => 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已经登录,而用户B也想登录并尝试接管表单,那么用户A就没有写入权限,而用户B则应该获得完全访问权限,即:
用户A (open=true, write=0)
用户B (open=true, write=1)
注意:若要禁止写入,保存按钮将不会出现。