2012-01-11 41 views
2

我已經試過這在每一頁在我的網站頭運行,以驗證用戶登錄,他們可以瀏覽該網站前session.php文件腳本。但是,現在process_login腳本不會加載安全登錄頁面,而只是重新加載到登錄頁面。我相信我的安全會話沒有被正確設置。有人能進一步解釋這是如何對我有用的嗎?如何使用php和mysql進行安全會話?

這是腳本,的process_login在被執行時在用戶點擊登錄:

<?php 

// Initialize session 
session_start(); 

// Require database connection settings 
require('config.inc'); 

// Retrieve email and password from database 
$email = mysql_real_escape_string($_POST['email']); 
$password = mysql_real_escape_string(md5($_POST['password'])); 
$query = "SELECT * FROM $table WHERE email='$email' AND password='$password' LIMIT 1"; 
$result = mysql_query($query); 

// Check email and password match 
if(mysql_num_rows($result)) { 
     // Set email session variable 
     $_SESSION['email'] = $_POST['email']; 
     // Jump to secured page 
     header('Location: home.php'); 
} 
else { 
      // Jump to login page 
      header('Location: index.php'); 
} 

?> 

,這是session.php文件腳本是在要求用戶在要被記錄的每個頁面的頭:

<?php 

if (isset($_SESSION['email']) == 0) { 
    // Redirect to login page 
    header('Location: index.php'); 
} 

?> 
+2

我們能看到你試過嗎? – Ivan 2012-01-11 02:34:23

+0

你應該給我們看一些代碼。 – Cyclonecode 2012-01-11 02:34:33

+0

當的process_login腳本被調用時,用戶定義尚未登陸,所以你不應該的process_login期間運行驗證/重定向代碼。 – Jon 2012-01-11 02:36:16

回答

2

您需要包括代碼

session_start(); 
在你的文件session.p

惠普訪問您的會話變量

或者你應該確保會話自動啓動是在你的PHP配置中啓用。

+0

但如果我有它在每個新頁面上啓動一個會話將會搞砸了什麼? – user1142202 2012-01-11 04:14:57

+0

號應該做這樣http://www.php.net/manual/en/function.session-start.php – 2012-01-11 04:53:33

+0

鋪鎮拉吉是正確的。記住,PHP是無狀態的,這就是爲什麼你首先需要會話。在訪問/ ser ANY會話變量之前,您必須在每次加載頁面時調用session_start()。 – Daisetsu 2012-01-11 23:57:40