2016-02-16 24 views
-1

为了增加对安全登录的用户,session_start();和分配其他会话变量后,我也尝试着存储HTTP_USER_AGENT值,使用$_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']);login.php页。如何删除HTTP_USER_AGENT的会议

此外,在login.php页,我重定向登录用户到主页,如果他们试图不再次访问它首测出来,使用条件是这样的:

if (isset($_SESSION['agent']) OR ($_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']))) { 

//redirect to home page 
header('location:http://index.php.com'); 
exit(); 
} 

的问题是,在logout.php页我的代码的条件是这样的:

if (!isset($_SESSION['agent']) OR ($_SESSION['agent'] != md5($_SERVER['HTTP_USER_AGENT']))) { 

//Redirect to home page 

}else{ 
$_SESSION = array(); // Destroy the variables. 
session_destroy(); // Destroy the session itself. 
setcookie (session_name(), '', time()-3600); // Destroy the cookie. 
} 

然后我又回来访问login.php页面作为登录用户(会话已设置),它仍然将我重定向到主页。

然后我尝试删除FF浏览器中的cookies,关闭它,然后重新访问login.php页面,它仍然重定向了我。

你知道我错了或失踪了吗?

注:我没有问题,摧毁了会议如果没有存储**的HTTP_USER_AGENT

+0

变化 如果(isset($ _ SESSION [ '代理'] )OR($ _SESSION ['agent'] = md5($ _ SERVER ['HTTP_USER_AGENT']))) 到 如果(isset($ _ SESSION [ '代理'])OR($ _SESSION [ '代理'] == MD5($ _ SERVER [ 'HTTP_USER_AGENT']))) – Firewizz

+0

在您的login.php我想你令人困惑的是设置一个变量('=')并比较一个变量('==')。 – Eborbob

+0

请注意,任何人如何捕获会话ID还可以访问包括用户代理在内的所有其他头文件。这不会提高安全性。 – johannes

回答

1

你必须要检查的任务。

变化:

if (isset($_SESSION['agent']) OR ($_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']))) { 

if (isset($_SESSION['agent']) OR ($_SESSION['agent'] == md5($_SERVER['HTTP_USER_AGENT']))) { 

题外话安全提示(也许有帮助):

public function Start_Secure_Session() 
{ 
    // Forces sessions to only use cookies. 
    ini_set('session.use_only_cookies', 1); 

    // Gets current cookies params 
    $cookieParams = session_get_cookie_params(); 

    // Set Cookie Params 
    session_set_cookie_params($cookieParams["lifetime"],  $cookieParams["path"], $cookieParams["domain"], $this->isHTTPS, $this- >deny_java_session_id); 
    // Sets the session name 
    session_name($this->session_name); 

    // Start the php session 
    session_start(); 

    // If new session or expired, generate new id 
    if (!isset($_SESSION['new_session'])) 
    { 
     $_SESSION['new_session'] = "true"; 

     // regenerate the session, delete the old one. 
     session_regenerate_id(true); 
    } 
}