2013-03-14 63 views
0

我已經看到了很多關於此的文章,但迄今沒有任何工作。我想要做的事很簡單。如何正確使用會話

我有一個登錄頁面..通過mysql/php等驗證您是誰。此頁面中有session_start()。從那裏,它會將您帶到菜單頁面。

我想讓它到達如果會話尚未從登錄頁面啓動的地方,您無法查看菜單頁面,它會將您引導回登錄頁面。如果這是不可能的,我最終想做的就是讓它到達必須使用登錄頁面查看菜單頁面的位置。從評論

代碼:

的login.php

session_start(); 
session_id ("username"); 

menu.php

if(!session_id() == "") { 
    header("location:login.html"); 
} 
+0

向我們展示了什麼沒有奏效,也許解釋什麼是「沒有工作「的意思。 – 2013-03-14 01:56:57

+0

這是我試過的最新代碼。從這裏發生的事情是,你仍然能夠查看主頁面,沒有任何錯誤。 login.html session_start(); session_id(「username」);如果(!session_id()==「) { header(」location:login.html「); – 2013-03-14 01:57:50

+0

「主頁」不是php;告訴我們你到目前爲止所做的一切。 – 2013-03-14 01:58:54

回答

0

使用框架如Laravel因爲這些功能都已經內置了和妥善處理。 Theres沒有使用重新發明輪子和像我提到的那個框架很容易學習。

編輯:對不起,我是比較新的回答問題,所以我會再試一次。

在庫,如Usercake,發生的事情是當你的用戶登錄,要求用戶在你登錄可以進入

檢查每個頁面上設置可變會話

$_SESSION["stack_user"] = "[email protected]"; // This could be their name, an object etc 

在此之後

if (!isset($_SESSION["stack_user"])){ 
    header("Location: /login.php"); 
} 
// The rest of your page logic here 

Aaaaaand我才意識到這已經說...男孩我是開了一個糟糕的開局

+0

一個不應該使用的代碼至少粗略理解,IMO。在他開始依靠框架爲他做這件事之前,他應該已經具備了這些東西如何起作用的基本工作知識。 – cHao 2013-03-14 03:13:14

+0

我明白他正在學習如何完成,但他沒有任何地方說這不是一個生產現場。就像我說的那樣,重新發明輪子是沒有用的。 – Adam 2013-03-14 21:04:26

2

而不是剛剛開始的會議,你應該把東西一邊,這樣你知道它去過去login.php

$_SESSION['logged_in'] = true; 

然後,在菜單頁面中,你還需要session_start()

session_start(); 
if (!isset($_SESSION['logged_in'])) { 
    header('Location: /login.php'); 
} 
+0

此代碼基本上工作。現在,如果我嘗試直接轉到main.php,它會將我引導回login.php 但是,登錄後,它仍將我引導回login.php。 – 2013-03-14 02:17:03

+0

我的不好,我在代碼中有一個錯字。這工作..非常感謝你 – 2013-03-14 02:21:35