我是PHP和MySql的新手。請原諒我,如果我傻PHP重定向用戶如果登錄
我開發我的UserSpice登錄管理框架的頂部項目一個Web應用程序
現在,我創建了一個登錄表單。登錄時將重定向到作爲引導管理模板的儀表板。
我的登錄頁面是
本地主機/ myproject的/ index.php文件
我的儀表板頁面
本地主機/ myproject的/ account.php
現在會發生什麼,登錄後我可以看到d ashboard,假設未註銷,如果我的網址更改爲
本地主機/ myproject的
則顯示登錄表單,而不是重定向到我的account.php。但在同一時間,如果該URL又變成
本地主機/ myproject的/ account.php
沒有要求我重新登錄進入成功地採取了會議。
我過其他方式檢查現在像我登出,並試圖直接輸入到
本地主機/ myproject的/ account.php
現在沒有考慮我在它邏輯上要讓我登錄因爲我已經登出。
什麼,我想是如果我登錄,我想自動重定向到account.php
,因爲我使用的是用戶管理框架,我認爲它會採取照顧,但這個問題我現在面臨。我有點挖,並在框架中發現以下代碼,檢查用戶是否沒有登錄它將重定向到index.php,但它不檢查是否它已登錄,那麼它應該去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登錄形式。
UPDATE:(表演@DanHoover溶液後)
按照由@DanHoover我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) "[email protected]"
["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。但是,假設,如果我退出它說,跟隨誤差
我很高興它的工作!我完全忘記了isLoggedIn()函數......自從我寫了這個函數以後,這真的很有趣。無論哪種方式,我很高興你啓動並運行。另外,使用Redirect :: to static方法的好處在於它首先使用JavaScript,如果不起作用,它將返回到頭('location'),因此它有助於防止頭已發送錯誤。 –