带有确定和取消按钮的php提示框

问题描述 投票:-1回答:1

我有一个 php代码(也有一点javascript) 如下图所示,其中 警报信息 时,会显示 第二位用户 试图用 一个用户已经登录.

我现在遇到的问题是在点击 在提示框中,确定,它进入内部 如果阻塞 但在点击取消时,它没有进入 不然 相反,它进入了 如果再堵.

<?php
    $message = "user " . $row['user_name'] . " is logged in. Do you want to take over ?";
    echo "<script type='text/javascript'>confirm('$message');</script>";
    if(confirm)
    {
        $stmt1=$connect->prepare("UPDATE trace_users SET write_access='0' WHERE write_access='1'"); // revoke write access of all users
        $stmt1->execute();
    }
    else
    {
        echo "I am in else block";  // Line A
        $stmt1=$connect->prepare("UPDATE trace_users SET write_access='1' WHERE write_access='0'"); // revoke write access of all users
        $stmt1->execute();
    }
?>

我增加了 线路 ALine B 用于调试。点击按钮后 好的 按钮A线被调用,在点击 取消 按钮,A行再次被调用。

javascript php alert
1个回答
1
投票

这里有一个快速的例子来让你开始。

index.php
<?php
//....
$user =  "John Doe"; // $row['user_name'];
$message = "User $user is logged in. Do you want to take over?";

if (isset($_GET['takeover'])) {
    if ($_GET['takeover'] == "confirm") {
        // $stmt1 = $connect->pre......etc
        exit(json_encode(["message" => "Access confirmed"])); // Send response to JS
    } else {
        // $stmt1 = $connect->pre......etc
        exit(json_encode(["message" => "Access revoked"])); // Send response to JS
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>TEST</title>
</head>
<body>

  <h1>MY USER INTERFACE</h1>

  <script>
    const takeover = confirm("<?= $message ?>");
    fetch(`?takeover=${takeover ? "confirm" : "revoke"}`)
      .then(response => response.json())
      .then(data => {
        console.log(data);
      });
  </script>
</body>
</html>
  • 服务器会在服务页面之前 "剥离 "PHP标签,但呼应的值会保留下来。即 $message 在JavaScript代码中。
  • 在文档准备时 confirm() 触发,并在JS中携带一个布尔值。
  • 根据该值只需使用GET请求获取相同的文件(或任何其他如果你想)。somepagename.php?takeover=confirm
  • 在PHP中聆听 $_GET 请求,并以JSON响应AJAX请求。
  • 打开控制台,看到服务器用足够的消息对象数据进行响应。

祝你编码愉快。


0
投票

在你的userpage.php中,你有Log In。

<a href="confirm_login.php?user_name=" . $row['user_name']>Log In</a>

在你的confirm_login.php中,你有两个选项的确认。

$message = "user " . $_GET[user_name] . " is logged in. Do you want to take over ?";
<a href="userpage.php?confirm=yes">Yes</a>
<a href="userpage.php?confirm=no">No</a>

现在当你选择选项时,你会重定向回userpage.php。

if ( $_GET[confirm] == "yes" ) {
    $stmt1=$connect->prepare("UPDATE trace_users SET write_access='0' WHEREwrite_access='1'");
    $stmt1->execute();
} else if ( $_GET[confirm] == "no" ) {
    $stmt1=$connect->prepare("UPDATE trace_users SET write_access='1' WHERE write_access='0'"); // revoke write access of all users
    $stmt1->execute();  
}

这就是你文章中描述的普通PHP方法。就像其他酷友说的那样,你可以用AJAX不改URL。

© www.soinside.com 2019 - 2024. All rights reserved.