HTTP Post alanlar PHP script tarafından alınan değil

4 Cevap php

Ben bu soruyu soran aptal hissediyorum, ama ben saatlerce onunla güreş oldum ve ben açmak için burada başka bilmiyorum.

Ben bir php komut dosyası için bir POST isteği yapan ve daha sonra söz konusu komut dosyası çıkışını görüntüleyen bir flaş formu var. Basitlik aşkına, bu php script diyelim:

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

Ben formu gönderdiğinizde, ben POST isteği tarafından yapılan doğrultusunda Firebug'ın net sekmesinde bu bakın:

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

recipientEmail=example@example.com

Yüzeyinde tüm iyi ve güzel. Sonrası bu komut için doğru değişken gönderilen yapılmıştır. Yanıt geri geldiğinde, bu benim Flaş izleyici görmek budur:

Mail sent to:

Istek benim tarayıcıda dışarı gitti sonra başka bir deyişle, $ _POST ['recipientEmail'] kesildi.

Burada oluyor ne düşünüyorsunuz? Komut ve swf dosya hem de aynı etki, aynı sunucuda bulunmaktadır.

EDIT: Ben sadece bir HTML formundan aynı komut isabet denedim, ve $ _POST başlığını yakalar. Flash'a tarafından gönderilen olduğunda bu yüzden sadece onu yakalamak değil. Firebug sonrası sekmesi flaş ile biraz daha farklı görünüyor:

recipientEmail  example@example.com
submit          Submit

Her değişken, kendi doğrultusunda olduğuna dikkat edin.

EDIT: İşte sunulmasını yapar, ilgili AS3 kodu:

	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.");
	}

4 Cevap

Dikkatle Flash uygulamacığından talebine karşı HTTP form tarafından yapılan istek başlıklarını kontrol. Olması gerektiği "application/x-www-form-urlencoded" - Bir bakışta, benim ilk tahminim veri gönderilen için doğru değil "text/html" içerik türü, olacaktır. Sen, ben PHP actually bu özel detaylar hakkında umurunda olmadığını görmek için hiç denemedim, ama kesinlikle şüpheli görünümlü.

Eğer var_dump($_POST); (veya print_r($_POST);) ne içerdiğini görmek için mi?

$ _REQUEST Için $ _POST değiştirmeyi deneyin. Ben $ _POST bilgileri bekliyordum önce nerede sorun yaşadım, ama o iş olmaz. $ _REQUEST Bunu değiştirme POST, GET ve COOKIE için değerleri getiriyor.

Eğer. Htaccess kullanıyor musunuz? Söyledi. Htaccess isteğiniz url yeniden yazma olmadığından emin olun. Eğer http://example.com gönderiyorsanız ve. Htaccess bunun olması için yeniden yazıyor ise http://example.com/, örneğin, size değişkenleri kaybedersiniz.