2015-12-12 21 views
1

我有一個post.php頁面,其中顯示我的網站上的帖子。它根據訪問它的用戶類型顯示功能/鏈接,就像寫博文的用戶(會話持有者)一樣,它將顯示編輯和刪除按鈕,而不是針對其他人。 對於這個我使用會話:如何處理來賓用戶查看帖子?

if(!empty($_GET['username'])) { 
$username = $_GET['username']; 
} 
else if(!empty($_SESSION['username'])) { 
$username = $_SESSION['username']; 
} 
else{ 
// do nothing 
} 

現在的問題訪客用戶產生(用戶未登錄)的會話持有人$_SESSION['username'];可操作和LOGGED_IN用戶(而不是會話持有人)$_GET['username'];是可操作的,所以訪客用戶在此頁面上獲取未定義的變量。爲了解決這個問題,我添加$username="";以上else語句,現在的說法是:

if(!empty($_GET['username'])) { 
$username = $_GET['username']; 
} 
else if(!empty($_SESSION['username'])) { 
$username = $_SESSION['username']; 
} 
else{ 
$username=""; 
} 

這雖然解決了我的問題,但我想知道是否有使用這種方法的任何安全隱患或其他問題。歡迎任何更好的主意。

+0

我們不能告訴你不知道什麼是暴露的安全隱患。也就是說,'$ _GET ['username']'不能確保登錄的用戶。任何人都可以輸入GET(或POST)變量。 – Fredrik

回答

1

第一個使用POST方法獲取數據

//後全成登錄

$username = $_POST['username']; 
$_SESSION['loggedin'] = generate token or true or false ur choice; 

//restrict this in ur all contructor of view 
if($_SESSION['loggedin']){ 
//ur accessible here you are authorized; 
} 
else { 
//sorry we are redirecting you; 

} 
相關問題