2011-01-20 56 views
0

这是我的登录代码。当我第一次尝试登录时,它会将session值传递给空白值。但当我再次返回登录页面时&登录成功登录。 我不明白这个代码怎么了? PLZ帮助我。需要帮助的登录代码的PHP?

session_unset(); 
    session_start(); 
    Global $i; 
    $root = $_SERVER['DOCUMENT_ROOT']; 
    include($root."/signinConfig.php"); 
    function redirect($redirect=null) 
    { 
    header("Location : $redirect"); 
    } 
      if (isset($_POST['submit'])) 
      { 
      $check = mysql_query("SELECT * FROM user_reg WHERE `username` = '".$_POST['username']."'")or die("Dont Dare To Hack"); 
      $check2 = mysql_numrows($check); 
       if ($check2 == 0) 
       { 
    die('That user does not exist in our database. <a href="../Signup/registration.php" style="text-decoration: none;">Click Here To Register</a>');    
       } 
       else 
       { 
        $i=0; 
        $password = mysql_result($check,$i,"password"); 
        $_POST['pass'] = stripslashes($_POST['pass']); 
        $pass = md5($_POST['pass']); 
      if ($pass == $password) 
     { 
      $_SESSION['username']= mysql_result($check,$i,"username"); 
      mysql_close(); 
      redirect("/User_CP/user_cp.php"); 
      } 
     else 
     { 
     die('Incorrect password, please try again.'); 
     } 
       } 
      }//after this html code take place 

在配置文件中我存储数据库连接代码&会话过期代码。这里是

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1000)) { // last request was more than 30 minates ago 
    session_destroy(); // destroy session data in storage 
    session_unset();  // unset $_SESSION variable for the runtime 
    } 
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp 
+0

只是一个建议,你可能想在使用`mysql_real_escape_string(..)`发射查询之前逃避输入' – SuperSaiyan 2011-01-20 11:41:38

+0

@Thrustmaster即使现在它不能登录 – 2011-01-20 11:50:34

回答

1

好吧,首先,你的redirect功能缺失exit();header

function redirect($redirect=null) 
    { 
    header("Location : $redirect"); 
    exit(); 
    } 

的问题是,如果你不给退出,代码将继续redirect功能后运行。

例如,在这里你有

redirect("/User_CP/user_cp.php"); 

它将重定向的页面,但PHP仍然会运行,如果你有行会被执行,并且在会议结束后一个session_destroy()session_unset()功能将会过期。

即使会话未被销毁,也有可能导致一些冲突。

试试exit()并让我知道。