2014-02-24 78 views
0

我對PHP比較陌生,但我知道很多。我正在創建一個登錄表單,我正在檢查他們是否已登錄,然後才能進入頁面,如果他們沒有登錄,那麼他們被重定向到登錄頁面,我正在使用會話。每次用戶在日誌中或註冊它創建使用會話時間:PHP會話問題 - 檢查登錄

$_SESSION['username'] = '$username'; 

在每個用戶不允許訪問頁,包括我,checklogin.php - 我做了一個文件,使用此代碼: 。

<?php 
function checklogin() { 
session_start(); 
if(!isset($_SESSION['myusername'])){ 
    return false; 
    header('location: login.php'); 
} else { 
    return true; 
} 
} 

checklogin(); //checks login 

?> 

但是它似乎並沒有工作在未登入時,您可以訪問網頁此外,還有一個if語句:

if(!isset($_SESSION['myusername'])){ 

這是用來確定什麼是所示標題。

這一切都沒有工作,所以我做錯了什麼?任何幫助將不勝感激。

+3

將'session_start();'放在頁面的頂部,而不是放在你的函數中。 –

+0

給我一分鐘,會嘗試。 – poseidon

+0

'$ _SESSION ['username']!== $ _SESSION ['myusername']'... – War10ck

回答

1

你需要把session_start()在你的PHP文件的頂部端,checkLogin()函數之外。會話變量需要使用相同的名稱,因此請在「用戶名」和「myusername」之間選擇。您還需要交換你的語句的順序,如果用戶沒有登錄:

header('location: login.php'); 
return false; 

header呼叫不會發生作爲功能針前返回。你也不需要引用你的變量,例如$_SESSION['username'] = $username;是正確的,假設$username已定義。

+2

現在所有的作品都很完美,非常感謝! – poseidon

0
$_SESSION['username'] = $username; 

,這是正確的語法使用它..