2014-11-21 328 views
-2

我想在使用下面的方法向用戶顯示頁面之前驗證用戶已經登錄,而if/else方法在用純HTML包裝時工作正常當涉及到PHP時。順便說一句,我是新手。會發生什麼是頁面簡單地加載,就好像下面的兩個標籤不存在一樣......如果我以前登錄過,那麼會很好,但我沒有。Php登錄腳本不會環繞php

<?php 
session_start(); 
if(isset($_SESSION['user'])) { 
?> 

HTML/PHP Page goes here. 

<?php 
} else { 
    header("Location: cms/admin/loginreadmode.php"); 
} 
?> 

由於提前,

+0

u能解釋清楚!ATLEAST嘗試發佈小提琴段與示例代碼! – 2014-11-21 15:35:10

+1

「它失敗時,有PHP參與」它可能會幫助,如果你提供的是PHP。 – 2014-11-21 15:35:58

回答

0

可以調試只是你的session_start低於();通過打印您的會話:

echo '<pre>'; 
print_r($_SESSION); 
die(); 

如果$ _SESSION ['user']沒有顯示在您的數組中,它不會被設置。 你可以做到這一點是這樣的:

session_start(); 
$_SESSION['user'] = true; 
-1

1)這不是檢查用戶是否登錄,純粹是檢查用戶的會話是否存在可最終導致了很多問題的一個偉大的方法。將ID存儲在會話中,然後檢查ID是否有效可能是更好的方法,

2)當我將上面的代碼複製到測試文檔中時,它直接進入else語句中的重定向頁面。這是由於用戶會話沒有被設置,只要我在代碼執行之前設置用戶會話就可以正常工作。我看到'HTML/PHP頁面在這裏'。

設置用戶會話:

$_SESSION['user'] = 'TestUser'; 
+0

如何我們可以調試嗎?興我們不能重現嗎?如果我們不能重現它,那一定是別的。我在答案的最後部分介紹了這一點。 – 2014-11-21 15:50:43

+0

「我們如何調試我們無法重現的東西」。這正是我的觀點。你不能重現這個問題,因此你不能給出一個真實的答案。這個問題缺乏足夠的信息來提供有意義的答案。此外,OP表明問題存在_when not logged in。這意味着設置會話將無濟於事,因爲在未登錄時不應設置會話。登錄時只應顯示給未登錄用戶的內容。你的「答案」決不會解決這個問題。 – 2014-11-21 15:55:28

+0

啊,我明白你的意思了,我的壞話。我不得不多次重讀這個問題,他的問題變得越來越不明確。 – 2014-11-21 15:59:51

-1

您可以在頁面的頂部更改代碼是

<?php 
session_start(); 
if(!isset($_SESSION['user'])) { 
header("Location: cms/admin/loginreadmode.php"); 
die(); 
} 
?> 
+0

這只是OP已經在做的反向邏輯。 – 2014-11-21 15:56:55

+0

@PatrickQ這將完成他需要的工作..如果他在下面添加代碼之前試圖檢查會話 – 2014-11-21 18:00:30

0

你確定你在每一個頁面中添加會話支持?

if (!isset($_SESSION)) { 
session_start(); 
} 

此代碼應該是工作,所以錯誤可能是somwhere否則我建議你檢查,如果你登錄後設置$ _SESSION [「用戶。 你也應該用簡單的

取代你不工作的代碼部分
echo "hello"; 

仄它。