我为两个客户端创建了一个PHP页面,相同的数据一样,它们只是由服务器和MySQL表中的文件路径分开。
在这种情况下,我有一个welcome.php文件,所有页面都需要知道是否已存在活动的登录会话,如果没有,则将用户重定向到login.php页面。
以下是我在login.php中的代码:
<?php
// Initialize the session
// This sends a persistent cookie that lasts a day.
session_start([
'cookie_lifetime' => 86400,
]);
// If session variable is not set it will redirect to login page
if(!isset($_SESSION['username']) || empty($_SESSION['username'])){
header("location: /JB104/login.php");
exit;
}
?>
此代码可以正常工作,因为它确认是否存在登录会话并向用户显示其请求的页面,如果没有,则将用户重定向到登录页面。
问题在于:
我刚观察到如果我在一个客户的页面中,让我们说客户端A有这条路径:xxxxx.com/AAA/home.php我改为让我们说xxxxx .com / BBB / home.php,页面不控制登录参数,在首次登录时切换到初始凭据的新页面。
如何在这两个登录凭据之间创建验证,以便用户AAA首先登录xxxxx.com/AAA/home.php然后将URL更改为xxxxx.com/BBB/home,无法访问用户BBB。 PHP?
每个用户的登录凭据也存在不同的表格。
答案 0 :(得分:0)
您需要检查会话的用户名,然后相应地重定向,在用户的php文件中呈现每个用户的home.php,只需检查请求路径或获取正在访问哪个页面的用户然后尝试使用会话变量中的用户名进行交叉检查,如果失败则只退出或重定向到另一个正确的页面 您也可以从登录页面重新定位,点只是检查用户名是否足够,对您的$ _SESSION [&#39;用户名&#39;]进行处理并重定向或阻止访问进行比较
答案 1 :(得分:0)
可能您的问题与会话识别有关。可能您的应用程序没有区分不同项目之间的会话。
我在Yii2遇到了类似的问题,原因是项目配置为相同的会话名称,即它们的会话名称具有相同的值。