2009-09-14 3 views
0

이 질문을하는 것이 바보 같아요.하지만 몇 시간 동안 씨름하고 있었고, 어디에서 돌아야할지 모르겠군요.PHP 포스트 스크립트에서 HTTP 포스트 필드를받지 못했습니다.

나는 PHP 스크립트에 POST 요청을하는 플래시 양식을 가지고 있으며, 그런 다음 스크립트의 출력을 표시합니다.

Referer: http://example.com/my.swf 
Content-type: text/html 
Content-length: 68 

[email protected] 

: 나는 양식을 제출하면

echo 'Mail sent to: ' . $_POST['recipientEmail']; 

, 내가 POST 요청에 의해 만들어진 라인에서 방화범의 순 탭에서 볼 : 간단하게하기 위해 들어, 이것은 PHP 스크립트입니다 가정 해 봅시다 모두 표면에 좋고 좋아요. 게시물이 만들어져 스크립트에 올바른 변수를 보냈습니다. 응답이 돌아올 때, 이것은 내가 내 플래시 추적에서 볼 것입니다 : 요청이 브라우저 나갔다 후

Mail sent to: 

는 $ _POST [ 'recipientEmail는'] 손실되었습니다.

여기 어떻게 생각하십니까? 스크립트와 swf 파일은 모두 동일한 도메인의 동일한 서버에 있습니다.

편집 : 방금 HTML 양식에서 동일한 스크립트를 치려고했는데 $ _POST 헤더를 잡습니다. 따라서 Flash에서 전송할 때만 잡기가 어렵습니다. Firebug의 게시물 탭은 플래시보다 약간 달라 보입니다.

recipientEmail [email protected] 
submit   Submit 

각 변수는 고유 한 줄에 있습니다.

편집 :

var _gateway:String = Share.getGateway(); 
    var request:URLRequest; 
    var variables:URLVariables = new URLVariables(); 
    var loader:URLLoader = new URLLoader();  

    request = new URLRequest(_gateway); 
    request.contentType = 'text/html'; 
    request.method = URLRequestMethod.POST; 


    variables.senderName = senderName.text; 
    variables.recipientEmail = recipientEmail.text; 
    variables.senderMessage = senderMessage.text; 

    request.data = variables; 

    try { 
       loader.load(request); 
    }catch (error:Error) { 
     Debug.trace("Unable to load requested document."); 
    } 
+0

프레임 워크 또는 순수 PHP를 사용하고 있습니까? 일부 프레임 워크는 $ _POST 배열을 지 웁니다. – jimyi

+0

@jimyi, 아니요. 어떤 프레임 워크도 사용하고 있지 않습니다. – picardo

+0

나는 HTML 폼에서 같은 스크립트를 치려고 시도했다. 기적적으로 $ _POST 헤더를 잡았다. 따라서 Flash에서 전송할 때만 잡기가 어렵습니다. 흠. – picardo

답변

5

Flash 양식의 요청에 대해 HTTP 양식의 요청 헤더를주의 깊게 확인하십시오. 한눈에 내 첫 번째 추측은 콘텐츠 형식이 "text/html"이며 전송되는 데이터에 맞지 않습니다. "application/x-www-form-urlencoded"이어야합니다. PHP 이 실제로에 관심이 있는지 여부를 테스트 한 적이 없지만 의심 스럽습니다.

+0

그 말이 맞아. 콘텐츠 유형으로 text/html을 설정했습니다. 내가 체크해 볼게. – picardo

+0

후리! 당신이 옳았. 이것이 내가 Stackoverflow를 좋아하는 이유입니다.정말 고마워. – picardo

+0

대단히 환영합니다. ;-) –

0

당신이 var_dump($_POST); (또는 print_r($_POST);)가 포함 된 내용을 볼 수 있습니다 : 여기에 제출하게 관련 AS3 코드는?

+0

내가 그렇게 할 때 비어 있습니다. 하지만 내 편집을 보면, $ _POST는 양식 제출이 FLash에서 이루어진 경우에만 비어 있습니다. 관련 플래시 코드도 게시 할 예정입니다. – picardo

0

$ _POST을 $ _REQUEST로 변경해보십시오. 나는 $ _POST에서 정보를 기대하기 전에 문제가 있었지만 작동하지는 않습니다. $ _REQUEST로 변경하면 POST, GET, COOKIE 값을 가져옵니다.

0

.htaccess를 사용하고 있습니까? .htaccess가 요청 URL을 다시 쓰지 않는지 확인하십시오. 예를 들어, http://example.com으로 보내고 .htaccess가 http://example.com/으로 다시 쓰는 경우 변수를 잃게됩니다.