2012-11-08 39 views
0

這是我第一次遇到這個問題。PHP LOST SESSION

基本上,當我執行登錄函數時,我創建了一個會話變量,它被傳遞給index.php文件。

問題是,如果我刷新瀏覽器,或者點擊其他菜單項,我丟失了會話。

這裏是一些代碼:

public function Login_Form() 
{ 
    if(isset($_POST['login'])) 
     $this->login($_POST); 
?> 
<form action="<?php $_SERVER['PHP-SELF']; ?>" method="POST" id="form_login"> 
<table> 
    <tr> 
     <td>Username</td> 
     <td><input type="text" name="username" /></td> 
    </tr> 
    <tr> 
     <td>Password</td> 
     <td><input type="password" name="password" /></td> 
    </tr> 
    <td><input type="submit" name="login" value="Login" /></td> 
</table> 
</form> 
<?php 
} 

private function login($p) 
{ 
    // OTTENGO VALORI PASSATI DAL LOGIN FORM 
    $username = mysql_real_escape_string($p['username']); 
    $password = mysql_real_escape_string(md5($p['password'])); 
    // CONTROLLO CHE ESISTA L'UTENTE 
    $control = mysql_query("SELECT * FROM tareado.user WHERE username='$username' AND password='$password'"); 
    if(mysql_affected_rows() > 0) 
    { 
     while($x = mysql_fetch_array($control)) 
     { 
      $id_utente = $x['iduser']; 
      $_SESSION['idutente'] = $id_utente; 
     } 

     $_SESSION['username'] = $username; 
     //session_write_close();    
     header("Location: index.php"); // REDIRECT TO INDEX.PHP, NOW WE ARE IN index.php?a=log 
     //exit(); 

    } 
    else 
     echo "Credenziali errate"; 
} 

我穿上的index.php在session_start()的頂部,但我總是丟失會話。

這可能是問題所在?重定向?

+0

你有沒有檢查是否有任何錯誤?您可能必須向所有人設置錯誤報告,並查看是否有(或者沒有)發生意想不到的事情。 – Martin

回答

0

我沒有在頁面中看到會話開始從哪裏重定向。如果會話甚至在Cookies選項卡下啓動,您也可以使用螢火蟲進行調試。當您嘗試登錄時,您應該看到類似PHPSESSID的內容。不知道這是你的答案,但我無法發表評論。

+0

閱讀最後一行。無論如何,你的回答是一個評論。 – itachi

+0

我讀了最後一行。你正在談論index.php,這是你正在重寫的頁面嗎?不是你正在重定向的頁面。 –

+0

重定向來自index.php?a = log to index.php,我將session_start()放在索引頁面的頂部,但它不起作用! – JackLipari