gpt4 book ai didi

php - 从数据库中获取信息而无需注销并重新登录

转载 作者:行者123 更新时间:2023-11-28 23:17:23 25 4
gpt4 key购买 nike

我想在站点刷新时从数据库中获取更新的信息,而不是必须注销并重新登录。

当他们登录时,我从 user.php 获取信息,然后他们被重定向到 memberpage.php。当他们刷新 memberpage.php 时,如果数据库中有任何更改,它也会在 memberpage 上更改。因此,如果他们使用 isBanned_reason = 0 登录,然后我在数据库上将其更改为 1,我希望它也能在成员(member)页面上更改。

这是我的代码:用户.php

<?php
include('password.php');
class User extends Password{

private $_db;

function __construct($db){
parent::__construct();

$this->_db = $db;
}

private function get_user_hash($username){

try {
$stmt = $this->_db->prepare('SELECT password, username, memberID, isBanned_reason, Rank FROM members WHERE username = :username AND active="Yes" ');
$stmt->execute(array('username' => $username));

return $stmt->fetch();

} catch(PDOException $e) {
echo '<p class="bg-danger">'.$e->getMessage().'</p>';
}
}

public function login($username,$password){

$row = $this->get_user_hash($username);

if($this->password_verify($password,$row['password']) == 1){

$_SESSION['loggedin'] = true;
$_SESSION['username'] = $row['username'];
$_SESSION['memberID'] = $row['memberID'];
$_SESSION['Rank'] = $row['Rank'];
$_SESSION['isBanned_reason'] = $row['isBanned_reason'];


return true;
}
}

public function logout(){
session_destroy();
}

public function is_logged_in(){
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){
$_SESSION['Rank'];
$_SESSION['isBanned_reason'];

return true;
}
}

}


?>

成员(member)页面.php

<?php require('includes/config.php'); 



//if not logged in redirect to login page
if(!$user->is_logged_in()){ header('Location: login.php'); }



//define page title
$title = 'Members Page';

//include header template

?>

<link rel="stylesheet" type="text/css" href="style/Stylememberpage.css">






<?php if ($_SESSION['isBanned_reason'] == 0) {?>
<body>
<center>
<p>
<h1 id="Caption1">Secret website title</h1>
<h2 id="Caption2">You are logged in as a staff member</h2>
<ul id="menu">
<li id="items"><a href="index.php">Home</a></li>
<li id="items"><a href="registrer.php">Staff Site</a></li>
<li id="items"><a href="Leaderboards.html">Games</a></l1>
<li id="items"><a href="Contact.html">Leaderboard</a></li>
<li id="items"><a href="logout.php">Log out</a></li>
</body>
</ul>


</p>
</center>

<?php
}
?>











<?php if ($_SESSION['isBanned_reason'] == 1) {?>
<body>
<center>
<p>
<h1 id="Banned1">Your account has been locked.</h1>
<h2 id="Banned2">You are banned for until: 12.12.2020 reason : scamming/exploit.</h2>
<ul id="menu">
<li id="items"><a href="index.php">Home</a></li>
<li id="items"><a href="registrer.php">Staff Site</a></li>
<li id="items"><a href="Leaderboards.html">Games</a></l1>
<li id="items"><a href="Contact.html">Leaderboard</a></li>
<li id="items"><a href="logout.php">Log out</a></li>
</body>
</ul>


</p>
</center>

<?php
}
?>

而且,如果可能的话。当我更改我的数据库上的 isBanned_reason 时,是否有任何方法可以在用户不必刷新页面的情况下“应用”它?因为我希望他们在更改时立即被禁止。我该怎么做?

最佳答案

您可以使用 jQuery Ajax 函数来检查服务器或数据库的更改值,也可以使用 setInterval 函数每 5 秒 触发 ajax >

像这样尝试:

Jquery Ajax:(在您想要连续触发检查的页面上)

setInterval(function(){
$.ajax({
url : 'check_db.php', //URL: lets say you have check_db.php in same directory where this file is
dataType : 'html',
data : 'post',
data : {user_id : 'user_id'},
success : function(response){
//catch the response here from server
if (response == 1) {
window.location.href="logout.php"; //redirecting user to logout
}
}
})
},5000);//Every 5 seconds

此外,确保加载 jquery 库以在页面顶部运行 jquery 函数

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

如果您不想重定向您的页面以登录并要求重新登录,那么在此 AJAX 调用的成功方法中,您需要编写另一个 AJAX 来设置 session 变量并隐藏禁止区域。更新 session 变量是必需的,因为如果用户刷新页面,那么您的 if 语句必须正常工作以检查被禁止的 session 变量。

这就是为什么最好把AJAX学清楚。 Link

关于php - 从数据库中获取信息而无需注销并重新登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287899/

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