我在同一台服务器上有多个站点,只有很少的更改。问题是,当用户登录A站点时,如果他进入B站点,则从URL访问,允许他查看内容。如何限制用户查看B网站内容。
下面是我的身份验证码
function validate_login($email , $password){
global $_config;
if(empty($email) or empty($password)){
return false;
}
//Now perform validation here
//$email = mysql_real_escape_string($email);
//$password = mysql_real_escape_string($password);
$query_obj = new execute_query();
$where = 'email="'.$email.'" and password = md5("'.$password.'")';
$result = $query_obj->select_query(array('*') , 'user' , $where);
$user = array();
if($result->num_rows > 0){
$user = array();
while($row = $result->fetch_assoc()) {
$user = $row;
$user['is_logged'] = true;
}
session_start();
$_SESSION['user'] = $user;
$url = $_config['site_url'].'dashboard.php';
//header('Location :'.$url);die;
header("Location: ".$url);
}
return false;
}
在每个页面的顶部,我正在检查会话,如。
<?php
session_start();
//echo "<pre>";print_r($_SESSION['user']);die;
if(!isset($_SESSION['user'])){
$url = $_config['site_url'].'login.php';
//header('Location :'.$url);die;
header("Location: ".$url);
} ?>
P.S:一种方法是将unique_session_id保存在数据库中,并检查用户是否属于当前数据库。但我想要一些更通用和更好的解决方案。
由于
答案 0 :(得分:0)
您可以在会话中添加额外级别,以便唯一地存储2个网站
<?php
session_start();
if(!isset($_SESSION['siteA']['user'])) {
$url = $_config['site_url'].'login.php';
header("Location: ".$url);
}
?>
知道您需要做的就是确保siteA
和siteB
中的代码知道每个网站的密钥值,即siteA
和siteB
密钥。< / p>
<?php
session_start();
$site = getSiteKeyFromConfig();
if(!isset($_SESSION[$site]['user'])) {
$url = $_config['site_url'].'login.php';
header("Location: ".$url);
}
?>