PHP 웹 사이트의 양식에서 $ _POST 변수를 수신하지 못했습니다.
<?
print "POST:<pre>";
print_r($_POST);
print "</pre>";
?>
<form method="POST" action="POST_test.php">
<input type="submit" value="Save Changes">
<input type="hidden" name="blah" value="1">
</form>
이의 내 아파치 웹 루트 폴더 "을 web_root"이며, 내 웹 사이트 폴더 "websiteA"라고하자
나는이 간단한 PHP 스크립트 "POST_test.php"를 만들어이 문제를 명확히하기 위해. 위의 스크립트를 "web_root/websiteA"에두고 IE7에서 버튼을 클릭하면 빈 $ _POST 배열이됩니다. 폴더 이름을 "web_root/websiteA2"로 변경하면 웹 루트의 다른 웹 사이트 (예 : "websiteB")에서 작동합니다. Firefox를 사용할 때 아무런 문제가 없습니다. 최근에 우리 시스템에서 NTLM 인증이 활성화되었습니다. 이것이 차이를 가져올 지 모르겠습니다.아파치 & PHP는 데비안 리눅스 (다소 오래된 버전)를 실행하는 서버에서 실행됩니다.
IE에서 페이지의 Ctrl-Refresh를 시도했는데 도움이되지 않았습니다. 또한 PC를 재부팅하지 않았습니다.
업데이트 :이 포럼 게시물이 문제를 설명하기 위해 나타납니다 당신은 혼합 NTLM이 아닌 NTLM에 대한 데이터를 게시 사이트 웹을 인증 할 수 http://lists.rubyonrails.org/pipermail/rails/2006-March/027283.html
- . Microsoft Internet Explorer 은 웹 사이트의 NTLM 인증 된 폴더를 방문한 후 웹 사이트를 방문한 모든 사용자에 대해 NTLM 인증을 요구합니다. 다음과 같이
나는이 동작을 확인할 수 있습니다
내가 $ _POST http://mydomain/websiteA/POST_test.php이 테스트 페이지를 제출하여 채워지지 않습니다 다음 http://mydomain/websiteA/index.php를 방문 할 때.
그러나 IE7 창을 모두 닫으면 http://mydomain/websiteA/POST_test.php으로 바로 검색하면 $ _POST가 테스트 페이지를 제출하여 채워집니다.
내가 에 IE를 얻기 위해 본 유일한 방법은 사이트에 이전 NTLM 인증이있다 "잊지"
그리고 위의 링크 된 포럼 게시물에서 제안 된 솔루션 중 하나가 될 것으로 보인다 401 페이지 상태를 보내는 것입니다. 이 효과적으로 IE 인증 상태를 다시 설정합니다.
'action' 속성의 값을'?'로 변경하면 작동합니까? – alex
아니요 - URL에 바로 도착합니까? 결국, 결과는 동일합니다. –
이것은 NTLM의 POST 데이터 문제를 설명합니다. http://lists.rubyonrails.org/pipermail/rails/2006-March/027283.html 동작이 유사한 지 확인하기 위해 몇 가지 테스트를 시도합니다 –