2011-01-20 49 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()並讓我知道。