2013-01-12 65 views
2

我倒像這是一個非常簡單的修復,但我已經嘗試了很多不同的方式來做到這一點,並花了很多小時在谷歌上。基本上用戶登錄,我的腳本確保它們在我的數據庫中。這很好,然後我開始我的見證。使用PHP會話來驗證用戶名

session_start(); 
$_SESSION['log']=$username; 
header("location:lindex.php"); 

在我的下一個頁面,lindex.php,我叫進會議秩序,儘量設置如果基於在$_SESSION['log']該值是否爲「支持」或不聲明,但似乎無論什麼在我的會話呼叫的價值是,它總是執行,如果我已經嘗試了基於它的字符串長度,strstr,strpos,==「支持的任何說法。沒有任何想法?這裏是lindex.php:

session_start(); 
if(empty($_SESSION['log'])){ 
echo "You must log in"; 
exit();} 

if(strstr($_SESSION['log'], 'support')) 
{ 
header("location:../sindex.php"); 
} 

如果會話爲空,則會退出腳本。

+1

爲什麼要用'log'到鍵在'username'? –

回答

1
if(strstr($_SESSION['log'], 'support')) 

應該是:

if($_SESSION['log'] == 'support')) 
+0

我甚至不能告訴你我已經嘗試了多少次......並且這次它有效。單個qoute和double之間有意義嗎? –

+0

@PhpProg,雙引號會讓PHP搜索字符串內的變量,單個不會,但在這種情況下應該沒有什麼區別。你可能會不小心把一個'='符號變成了'if($ _ SESSION ['log'] ='support')',它總是爲TRUE。請參閱[this](http://stackoverflow.com/a/13783985/1592648),以獲取避免此類錯誤的簡單方法。 = o) –

+0

非常感謝 –

0
if(isset($_SESSION['log'] === "support")) 
{ 
echo "You are logged in "; 
} else { 

echo "You are not logged in "; 
header("Location: http://site.com/login.php"); //should be always absolute URI 
die(); 
} 
+0

if(isset($ _ SESSION ['log'] ===「support」))'do? –