2010-01-17 4 views
1

임의의 페이지에 다음 코드의 출력은 다음과 같습니다

  print $_SESSION['uid']; // logged in user 
     // Get Data . 
     $uid = $_GET['ID']; // part of random page processing 
      print $_SESSION['uid']; 

은 다음과 같습니다 내 사용자 ID 로그인이 변화

1 
2 

! : 당신은 당신이 $_SESSION['uid']++을 어디서든 일을하지 않는 확신 ...

 // Authenticate 
     $query = "SELECT * FROM User WHERE Email = '".$Email."' AND Password = '".$Password."'"; 
     $result = mysql_query($query); 

     // Authenticated? 
     if(mysql_num_rows($result)) { 
      // Yes 

      // Set session Vars 
      $uid = mysql_result($result,0,ID); 
      $Access = mysql_result($result,0,Access); 

      session_destroy(); 
      session_start(); 
      $_SESSION['loggedIN'] = 1; 
      $_SESSION['Access'] = $Access; 
      $_SESSION['uid'] = $uid; 

      // Print a successful login and redirect 
+0

사실,'session_destroy'는'$ _SESSION' 배열을 삭제하지 않습니다. 알려진 버그입니다. –

+0

정말요? : o 그러면 어떤 vars를 제거하는 올바른 절차는 무엇입니까? – Bojack

답변

6

부작용은 register_globals입니다. 기본적으로 :

$uid 

$_SESSION['uid'] 

참조 같은 변수 그래서 당신이 수행 할 때

$SESSION['uid'] = $_GET['ID']; 

내 조언 :

$uid = $_GET['ID']; 

그것의 상당입니까? 레지스터 전역을 끕니다. PHP 5.3에서 사용되지이고, 그것을 해제 php.ini 파일을 편집하고이 지침을 변경하려면 PHP 6에서 제거됩니다

register_globals = Off 

다음 아파치를 다시 시작 (또는 어떤 웹 서버입니다).

+0

고마워, 내가 어떻게 끄 겠어? – Bojack

+0

좋은 캐치, +1. –

2

이상해 :

로그인에 대한 코드 @ (인증) 페이지는 다음과 같이인가?

또한 register_globals이 있습니까?

+0

BTW, 나는 4PP로 너를 때리고있다! –

+0

아니, 그게 문제라고 생각해. :) – Bojack

+0

@ Chacha102 : 하하, 이제는 더 이상! : P –

1

register_globals은 기본적으로 꺼져 있어야합니다.

어디서나 session_register을 불러야합니까?

+0

저는 php5.2.8을 사용 중입니다. 그리고 나는 설정에 간섭하지 않았다. 아니. – Bojack

관련 문제