2012-01-20 6 views
2

PHP 5.2가 설치되어있는 원격 서버에서 실행되는 PHP 페이지 중 하나가 "패스 코드"키가 설정된 POST 요청을 수신 한 다음, 가장 이상한 일이 일어날 수 있습니다. 다음 코드에서 POST 요청의 "패스 코드"는 값 추적을 단순화하기 위해 재정의되지만 테스트에서 주석에 표시된 초자연적 인 출력을 생성합니다.변수에 값을 할당하면 세션 변수의 값이 바뀝니다

$_POST["passcode"] = "hi"; 
$_SESSION["passcode"] = "hello"; 

echo $_SESSION["passcode"] . '<br />'; // prints "hello" 
$passcode = $_POST["passcode"]; 
echo $_SESSION["passcode"] . '<br />'; // prints "hi" 

편집 : 그것은 register_globals의에 대한처럼 그래서 보인다. 따라서 다른 질문입니다 :

코드를 실행중인 서버에서 php.ini 파일에 액세스 할 수없는 경우이 동작을 끌 수있는 방법이 있습니까?

+0

수신 파일에만 해당 결과가 있습니까? 아니면 전체 코드를 통과했을 때? – MetalFrog

+0

@MetalFrog POST가 PHP 파일을받는 것이 지금까지 테스트 한 유일한 곳입니다. –

+0

이상합니다.
다섯 번째 줄을 주석 처리 할 때와 동일합니까? –

답변

7

register_globals

냄새가

를 쓴 곳이다

, 당신은 .htaccess 파일에서이 설정을 비활성화 할 수 있습니다 here

+0

감사합니다. 그러나 이것은 내 게시물에 다른 질문을 낳았다. –

+0

나는 내 대답을 업데이트했습니다 – Mchl

8

분명히 세션 변수는 전역 변수로 등록됩니다. 설명

+0

너무 감사합니다. –

+0

당신을 진심으로 환영합니다. "다른 질문"을 보지 못해 죄송합니다 :) –

2
것이 가능 한 가지 가능한 이유는 당신이 당신의 php.ini 파일을 편집 할 수없는 경우
$_SESSION['passcode']=&$passcode; 
+0

내 코드에서 어디에도 그 일을하지 않았는지 확실히 확인하십시오. –

+0

그러면 세션 변수가 전역 변수로 등록됩니다. 다른 사람들이 말한대로 ... –

2

세션 변수는 글로벌 바리 스타로 처리되도록 구성 될 수 있으므로 $_SESSION["passcode"] 및를 통해 액세스 할 수 있습니다.. 뭔가에 PHP 구성 (register_globals가)

-1

변경합니다 변수

$passcode 

의 이름을 확인합니다.?

+3

차라리 내 프로그래밍 스타일보다 호스팅 공급자를 변경하고 싶습니다. –

관련 문제