2011-07-14 128 views
1

我有一个登录页面和“会员区”页面,登录代码是在这里:PHP会话问题

的login.php

if ($account->is_logged_in()) 
{ 
    $route->to(ACCOUNT_URL); 
} 

elseif (isset($_POST['username'])) 
{ 
    if ($account->authenticates()) 
    { 
     if ($account->log_in()) $route->to(ACCOUNT_URL); 
    } 
    else 
    { 
     $flash->set('error', 'The credentials you provided are incorrect.'); 
    } 
} 

的功能(在不同的文件)

public function log_in() 
{ 
    session_unset(); 
    session_destroy(); 

    if(session_start()) 
    { 
     $_SESSION['logged_in'] = true; 
     $_SESSION['username'] = $_POST['username']; 
    } 
} 

public function authenticates() 
{ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    if (ctype_alnum($username) && ctype_alnum($password)) 
    { 
     $username = mysql_real_escape_string(filter_var($username, FILTER_SANITIZE_STRING)); 
     $password = $this->encrypt(mysql_real_escape_string(filter_var($password, FILTER_SANITIZE_STRING))); 

     $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; 

     $result = mysql_query($sql); 

     if (mysql_num_rows($result) == 1) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    else 
    { 
     return false; 
    } 
} 

然后我的会员区页面:

if ($account->is_logged_in()) 
{ 
    echo 'logged in'; 
} 
elseif (!$account->is_logged_in()) 
{ 
    echo 'not logged in'; 
    echo session_id(); 
    print_r($_SESSION['logged_in']); 
} 

login.php重定向我(意味着它对我的帐户进行身份验证),但是当我到达members.php时,它会回应“未登录”,这就是全部。

+1

if(session_Start()) – genesis

回答

1

你在其中使用会话的所有脚本的最开始有session_start()任何页面调用session_start()

4

你需要在members.php顶部(这需要访问$_SESSION

// Must initiate the session to test if logged in. 
session_start(); 
if ($account->is_logged_in()) 
{ 
    echo 'logged in'; 
} 
elseif (!$account->is_logged_in()) 
{ 
    echo 'not logged in'; 
    echo session_id(); 
    print_r($_SESSION['logged_in']); 
} 
+0

谢谢,我多么傻xD后尝试把else语句放到你的log_in函数中 – Zen