[英]PHP redirect user if logged in
我是PHP和MySql的新手,傻了还请见谅
我正在 UserSpice 登录管理框架之上为我的项目开发一个 web 应用程序
现在我创建了一个登录表单。 登录时将重定向到仪表板,这是一个引导管理模板。
我的登录页面是
本地主机/我的项目/index.php
我的仪表板页面是
本地主机/我的项目/account.php
现在发生的事情是,登录后我可以看到仪表板,假设如果我将 URL 更改为而无需注销
本地主机/我的项目
然后它显示登录表单而不是重定向到我的帐户.php。 但同时如果再次将 URL 更改为
本地主机/我的项目/account.php
在不要求我重新登录的情况下,它成功进入了 session。
我现在以其他方式交叉检查,就像我注销并尝试直接进入
本地主机/我的项目/account.php
现在不带我进去逻辑上要求我登录,因为我已经注销了。
我想要的是,如果我登录了,我想自动重定向到 account.php
因为我使用的是用户管理框架,所以我认为它会解决这个问题,但我现在正面临这个问题。 我稍微挖掘了一下,在框架中发现了以下代码,它检查用户是否未登录然后重定向到 index.php 但它不检查是否已登录然后它应该 go 到 account.php .
//If page does not exist in DB, allow access
if (empty($pageDetails)){
return true;
}
//If page is public, allow access
elseif ($pageDetails['private'] == 0) {
return true;
}
//If user is not logged in, deny access
elseif(!$user->isLoggedIn())
{
Redirect::to(env('client').'index.php');
return false;
}
else {
//Retrieve list of permission levels with access to page
$query = $db->query("SELECT permission_id FROM permission_page_matches WHERE page_id = ?",[$pageID]);
$permission = $query->results();
$pagePermissions[] = $permission;
//Check if user's permission levels allow access to page
if (checkPermission($pagePermissions)){
return true;
}
//Grant access if master user
elseif ($user->data()->id == $master_account){
return true;
}
else {
Redirect::to("index.php");
return false;
}
}
我试图在其中添加以下代码
elseif(!$user->isLoggedIn())
{
Redirect::to(env('client').'index.php');
return false;
}
elseif($user->isLoggedIn())
{
Redirect::to(env('client').'account.php');
return true;
}
但是,这对我没有帮助。 请帮我重定向到 account.php 如果用户已经登录并且不小心将 url 更改为登录表单。
更新:(执行@DanHoover 解决方案后)
根据@DanHoover i vardump 用户的建议。
如果我注销,我将得到以下转储
object(User)#3 (5) {
["_db":"User":private]=>
object(DB)#4 (7) {
["_pdo":"DB":private]=>
object(PDO)#5 (0) {
}
["_query":"DB":private]=>
object(PDOStatement)#6 (1) {
["queryString"]=>
string(50) "SELECT id, page, private FROM pages WHERE page = ?"
}
["_error":"DB":private]=>
bool(false)
["_results":"DB":private]=>
array(1) {
[0]=>
object(stdClass)#7 (3) {
["id"]=>
string(2) "13"
["page"]=>
string(9) "index.php"
["private"]=>
string(1) "0"
}
}
["_resultsArray":"DB":private]=>
array(1) {
[0]=>
array(3) {
["id"]=>
string(2) "13"
["page"]=>
string(9) "index.php"
["private"]=>
string(1) "0"
}
}
["_count":"DB":private]=>
int(1)
["_lastId":"DB":private]=>
string(1) "0"
}
["_data":"User":private]=>
NULL
["_sessionName":"User":private]=>
string(4) "user"
["_isLoggedIn":"User":private]=>
NULL
["_cookieName":"User":private]=>
string(18) "pmqesoxiw318374csb"
}
假设如果我登录了,我正在跟踪转储
object(User)#3 (5) {
["_db":"User":private]=>
object(DB)#4 (7) {
["_pdo":"DB":private]=>
object(PDO)#5 (0) {
}
["_query":"DB":private]=>
object(PDOStatement)#8 (1) {
["queryString"]=>
string(50) "SELECT id, page, private FROM pages WHERE page = ?"
}
["_error":"DB":private]=>
bool(false)
["_results":"DB":private]=>
array(1) {
[0]=>
object(stdClass)#6 (3) {
["id"]=>
string(2) "13"
["page"]=>
string(9) "index.php"
["private"]=>
string(1) "0"
}
}
["_resultsArray":"DB":private]=>
array(1) {
[0]=>
array(3) {
["id"]=>
string(2) "13"
["page"]=>
string(9) "index.php"
["private"]=>
string(1) "0"
}
}
["_count":"DB":private]=>
int(1)
["_lastId":"DB":private]=>
string(1) "0"
}
["_data":"User":private]=>
object(stdClass)#7 (29) {
["id"]=>
string(1) "1"
["email"]=>
string(25) "myid@mysite.com"
["username"]=>
string(5) "admin"
["password"]=>
string(60) "$2y$12$1v06jm2KMOXuuo3qP7erTuTIJFOnzhpds1Moa8BadnUUeX0RV3ex."
["fname"]=>
string(4) "Raja"
["lname"]=>
string(5) "Gopal"
["permissions"]=>
string(1) "1"
["logins"]=>
string(2) "27"
["account_owner"]=>
string(1) "1"
["account_id"]=>
string(1) "1"
["company"]=>
string(9) "UserSpice"
["stripe_cust_id"]=>
string(0) ""
["billing_phone"]=>
string(0) ""
["billing_srt1"]=>
string(0) ""
["billing_srt2"]=>
string(0) ""
["billing_city"]=>
string(0) ""
["billing_state"]=>
string(0) ""
["billing_zip_code"]=>
string(0) ""
["join_date"]=>
string(19) "2016-01-01 00:00:00"
["last_login"]=>
string(19) "2016-03-17 05:08:20"
["email_verified"]=>
string(1) "1"
["vericode"]=>
string(6) "322418"
["title"]=>
string(0) ""
["active"]=>
string(1) "0"
["custom1"]=>
string(0) ""
["custom2"]=>
string(0) ""
["custom3"]=>
string(0) ""
["custom4"]=>
string(0) ""
["custom5"]=>
string(0) ""
}
["_sessionName":"User":private]=>
string(4) "user"
["_isLoggedIn":"User":private]=>
bool(true)
["_cookieName":"User":private]=>
string(18) "pmqesoxiw318374csb"
}
然后我尝试了你的建议
if (isset($user)) {
Redirect::to('users/account.php');
}
现在发生的情况是,如果我登录,它会完美地重定向到 account.php。 但是,假设如果我注销,它会显示 Following error
如果您已经登录,我不确定100%如何获得登录表单。确定要登录吗? 您可以做的几件事...
登录UserSpice后,您可以访问名为$ user的变量。 如果不存在,则您没有登录。这为您提供了一些选择。 为了测试目的,您可以在php中的任何页面上执行
dump($user); //will give you a preformatted var_dump of the user variable.
如果再次出现错误,则表明您尚未登录。如果它给出了格式精美的var_dump,则您可以。 确定您已登录后,就可以处理重定向。
如果我正确理解了您的问题,那么您希望该网站在用户登录后的行为有所不同。我的正确说法是您不想让登录用户进入首页。
因此,您要执行的操作是,在检查页面是否为安全页面(类似于isSecurePage或类似名称的页面)的行之后,进入根目录和页面顶部的index.php中。
if (isset($user)) {
Redirect::to('users/account.php');
}
如果不是,那真的很接近。 基本上...您正在检查该用户变量是否存在,如果存在,则要使用内置的静态函数将其重定向到某个位置。
让我知道是否可以解决。
我通过在index.php中添加以下代码成功解决了它
<?php
if ($user->isLoggedIn()) {
Redirect::to('account.php');
}
?>
我对@DanHoover表示感谢,因为只有在我继续前进的过程中,他才发挥了领导作用。 多谢同伴。
试试这个-
<?php
session_start();
if((isset($_SESSION["user"])))
{
header("Location: account.php");
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.