php 带有确定和取消按钮的警告框
php alert box with ok and cancel buttons
我有一个 php 代码(还有一点 javascript),如下所示,其中 警报消息 在 第二个用户 尝试登录表单时显示 一个用户已经登录 。
我现在遇到的问题是在警告框中单击 确定,它进入 if 块 但它单击取消时它不会进入 else 块 而是进入
再次进入 if 块。
<?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();
}
?>
我添加了 行 A/Line B 用于调试目的。单击按钮 Ok 按钮将调用 A 行,单击 Cancel 按钮将再次调用 A 行。
这是一个帮助您入门的简单示例:
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>
- 服务器会在提供页面之前 "strip" PHP 标记,但回显值将保留。即:JavaScript 代码中的
$message
。
- On Document ready
confirm()
触发,JS中携带一个boolean值。
- 根据该值,只需使用 GET 请求获取相同的文件(或任何其他文件)
somepagename.php?takeover=confirm
- 在 PHP 中侦听
$_GET
请求并使用 JSON 响应响应 AJAX 请求。
- 打开控制台,查看服务器以足够的消息对象数据响应。
编码愉快。
在您的 userpage.php 上您有登录:
<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。
我有一个 php 代码(还有一点 javascript),如下所示,其中 警报消息 在 第二个用户 尝试登录表单时显示 一个用户已经登录 。
我现在遇到的问题是在警告框中单击 确定,它进入 if 块 但它单击取消时它不会进入 else 块 而是进入 再次进入 if 块。
<?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();
}
?>
我添加了 行 A/Line B 用于调试目的。单击按钮 Ok 按钮将调用 A 行,单击 Cancel 按钮将再次调用 A 行。
这是一个帮助您入门的简单示例:
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>
- 服务器会在提供页面之前 "strip" PHP 标记,但回显值将保留。即:JavaScript 代码中的
$message
。 - On Document ready
confirm()
触发,JS中携带一个boolean值。 - 根据该值,只需使用 GET 请求获取相同的文件(或任何其他文件)
somepagename.php?takeover=confirm
- 在 PHP 中侦听
$_GET
请求并使用 JSON 响应响应 AJAX 请求。 - 打开控制台,查看服务器以足够的消息对象数据响应。
编码愉快。
在您的 userpage.php 上您有登录:
<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。