2012-01-11 40 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