2012-11-08 7 views
0

처음으로이 문제가 발생했습니다.PHP LOST SESSION

기본적으로 login 함수를 실행하면 index.php 파일에 전달되는 세션 var을 만듭니다.

문제는 브라우저를 새로 고치거나 다른 메뉴 항목을 클릭하면 세션이 손실된다는 것입니다. 여기에 몇 가지 코드

는 :

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

리디렉션되는 페이지에서 세션 시작이 표시되지 않습니다. 세션이 쿠키 탭에서 시작될지라도 디버그에는 방화 광을 사용할 수도 있습니다. 로그인을 시도 할 때 PHPSESSID와 같은 것을보아야합니다. 이것이 당신의 답이지만 아직 코멘트를 게시 할 수 없다면 확실하지 않습니다.

+0

마지막 줄을 읽으십시오. 귀하의 답변은 어쨌든 코멘트입니다. – itachi

+0

나는 마지막 줄을 읽었다. 당신은 index.php에 대해 이야기하고 있습니다, 이것이 바로 당신이 redericting하고있는 페이지입니까? 리디렉션되는 페이지가 아닙니다 .. –

+0

리디렉션은 index.php에서입니까? a = log에서 index.php로 이동하면 인덱스 페이지의 맨 위에 session_start()를 추가하지만 작동하지 않습니다! – JackLipari