Benim $ 'POST kırma Strange 302 yönlendirme

5 Cevap php

Onu işlemek gerekiyordu başka bir php sayfasına bir form göndererek duyuyorum. Sorun onu okumaya çalışırken $ _POST genellikle boş olmasıdır.

This is the form:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Order Form</title>
</head>


<body>
    <form id="mailorder" name="mailorder" action="mailordertest.php" method="post">
        <input type="hidden" name="A212-M" value="1" /> 
        <input type="hidden" name="A212-XXXL" value="2" /> 
        <input type="hidden" name="A212-XXL" value="3" /> 
        <input type="hidden" name="A212-XL" value="4" /> 

        <input type="submit" value="Confirm Order">
    </form>
</body>
</html>

Ve bu işlem sayfası:

<?php
    session_start();
    error_reporting(E_ALL);

    print_r($_POST);
?>

Bu dizi ancak genellikle çıkış şey () olacak, ama bazen veriler ilk kez gelecek. $ _POST Boşaldığında, ben dön vurdu ve sonra yeniden ve birkaç denemeden sonra, bu iş olacak edebilirsiniz.

Ben Kundakçı ile bütün mesele teftiş etmiş ve işleme sayfa 302 (tabii ki bir GET kullanır ve böylece POST veri atılır) kendisine geri yönlendirme yapar, çünkü $ _POST temizlenmiş oluyor gibi görünüyor.

I have googled this to death, but none of the answers I have found have been any help. The following are NOT the problem: 1. post_max_size is set to 8M (not MB) 2. There is no CONTENT_TYPE issue

Diğer PHP uygulamalar sunucu (Wordpress vb) üzerinde iyi çalışıyor, ve ben PHP 5.2.9 kullanıyorum.

Ben tamamen bu bir stumped - HERHANGİ fikir ve yardım için çok teşekkür!

Düzenleme: Ben de ben de hiçbir başarı ile önbelleğe alma devre dışı çeşitli yöntemler denedim bahsetmeliyiz.

5 Cevap

Ben size yerel ağ ve / veya bilgisayar ile oluyor şey olabilir düşünüyorum. Ben de sayfasına giderseniz

http://www.ruby.za.net/fstest.php

Firefox ve tıklatın göndermek, görüyorum

Array
(
	[A212-M] => 1
	[A212-XXXL] => 2
	[A212-XXL] => 3
	[A212-XL] => 4
	[submit] => Confirm Order
)
Array
(
	[UNIQUE_ID] => Sx2qR0gOsRsAAFP-3GUAAAAB
	[HTTP_HOST] => www.ruby.za.net
	[HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
	[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
	[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
	[HTTP_ACCEPT_ENCODING] => gzip,deflate
	[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
	[HTTP_KEEP_ALIVE] => 300
	[HTTP_CONNECTION] => keep-alive
	[HTTP_REFERER] => http://www.ruby.za.net/fstest.php
	[HTTP_COOKIE] => PHPSESSID=1143682669e6297436eea3af99e14d4c
	[HTTP_PRAGMA] => no-cache
	[HTTP_CACHE_CONTROL] => no-cache
	[CONTENT_TYPE] => application/x-www-form-urlencoded
	[CONTENT_LENGTH] => 62
	[PATH] => /usr/local/bin:/usr/bin:/bin
	[SERVER_SIGNATURE] => <address>Apache/2 Server at www.ruby.za.net Port 80</address>

	[SERVER_SOFTWARE] => Apache/2
	[SERVER_NAME] => www.ruby.za.net
	[SERVER_ADDR] => 72.14.177.27
	[SERVER_PORT] => 80
	[REMOTE_ADDR] => 71.193.197.39
	[DOCUMENT_ROOT] => /home/ruby/domains/ruby.za.net/public_html
	[SERVER_ADMIN] => webmaster@ruby.za.net
	[SCRIPT_FILENAME] => /home/ruby/domains/ruby.za.net/public_html/mailordertest.php
	[REMOTE_PORT] => 63515
	[GATEWAY_INTERFACE] => CGI/1.1
	[SERVER_PROTOCOL] => HTTP/1.1
	[REQUEST_METHOD] => POST
	[QUERY_STRING] => 
	[REQUEST_URI] => /mailordertest.php
	[SCRIPT_NAME] => /mailordertest.php
	[PHP_SELF] => /mailordertest.php
	[REQUEST_TIME] => 1260235335
	[argv] => Array
		(
		)

	[argc] => 0
)

Ben böyle bir sorun var ne zaman, ne olacağı görmek için sayfanın bazı veri göndermek için curl kullanarak geri dönmek

$ curl -d "A212-M=1" -d "A212-XXXL=2" -d "A212-XXL=3" -d "A212-XL=4" -i http://www.ruby.za.net/mailordertest.php
HTTP/1.1 200 OK
Date: Tue, 08 Dec 2009 01:27:13 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.9
Set-Cookie: PHPSESSID=c6baea21344f3f3754064a658ede739c; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding,User-Agent
Content-Length: 1236
Content-Type: text/html

Array
(
	[A212-M] => 1
	[A212-XXXL] => 2
	[A212-XXL] => 3
	[A212-XL] => 4
)
Array
(
	[UNIQUE_ID] => Sx2rcUgOsRsAAE-8zJ8AAAAK
	[HTTP_USER_AGENT] => curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
	[HTTP_HOST] => www.ruby.za.net
	[HTTP_ACCEPT] => */*
	[CONTENT_LENGTH] => 41
	[CONTENT_TYPE] => application/x-www-form-urlencoded
	[PATH] => /usr/local/bin:/usr/bin:/bin
	[SERVER_SIGNATURE] => <address>Apache/2 Server at www.ruby.za.net Port 80</address>

	[SERVER_SOFTWARE] => Apache/2
	[SERVER_NAME] => www.ruby.za.net
	[SERVER_ADDR] => 72.14.177.27
	[SERVER_PORT] => 80
	[REMOTE_ADDR] => 71.193.197.39
	[DOCUMENT_ROOT] => /home/ruby/domains/ruby.za.net/public_html
	[SERVER_ADMIN] => webmaster@ruby.za.net
	[SCRIPT_FILENAME] => /home/ruby/domains/ruby.za.net/public_html/mailordertest.php
	[REMOTE_PORT] => 63558
	[GATEWAY_INTERFACE] => CGI/1.1
	[SERVER_PROTOCOL] => HTTP/1.1
	[REQUEST_METHOD] => POST
	[QUERY_STRING] => 
	[REQUEST_URI] => /mailordertest.php
	[SCRIPT_NAME] => /mailordertest.php
	[PHP_SELF] => /mailordertest.php
	[REQUEST_TIME] => 1260235633
	[argv] => Array
		(
		)

	[argc] => 0
)

Boş bir dizi kıvırmak isteği sonuçlar, bu ağınızda bir sorun var demektir.

Kıvırmak isteği (yukarıdaki gibi) çalışır, o zaman bir tarayıcı sorun var. Temiz bir IE / Safari / Opera üzerinden geçiş çalışıyor ve aynı sorunu görüyorsanız eğer bakın. Ayrıca, bir tarayıcı operasyon ile müdahale olup olmadığını görmek için tüm Firefox uzantıları devre dışı bırakmayı deneyin.

Çıkış this link

Uzun lafın kısası:

Yani POST veri gibi görünüyordu bana gönderirken aslında ama nedense PHP $ _POST dizisi hala boş olduğuna beni ikna etti. Uzun lafın kısası, ne orada bazı zaman birini kurtarmak ne umarım keşfetti ve Content-Type HTTP mesajında ​​tanınan boş olup olmadığını o zaman PHP $ _POST dizi boş olmasıdır.

302'leri üretmek olabilir akla gelen tek şey bir yere hattı boyunca bir. Htaccess yeniden yazma ifadedir. Herhangi bir olup olmadığını kontrol edebilir miyim?

Ayrıca, sitenizde oturum her türlü kullanıyorsunuz?

PHP uzmanı ama akla gelen bir şey değil session_start kullanılmasıdır.

Çerezleri başlığında gönderilen ve herhangi bir sayfa içeriğine önce gönderilmesi gerekir - Ben size (bir şekilde sorgu dizesi kullanıyorsanız o zaman şimdi yakalanmış olurdu eminim) sizin oturum için çerezleri kullanarak konum üstlenecek . Bu çağırmadan önce içerik render Eğer oturum tanımlama eklemek için bir fırsat gerekiyor çünkü belki sayfa yönlendiriliyor. Bu aynı zamanda senaryo "tekrar girişimler işe" ile hemfikir. Genellikle suçlu sonra birkaç beyaz boşluk nedir?> Etiketi.

Siz oturum çağrısı çıkarmadan veya yönlendirme gerçekten bir çerez ayarı olup olmadığını görmek için bir başlık denetçisini kullanarak ya bu test edebilir. Bu session_start önce aramak gerekir durumda yüzden başlıklarına yazabilirsiniz. Ben PHP sayfa döngüsü sırasında başlıkları ekleyebilirsiniz böylece içerik dağıtım ertelemektedir bir çağrı olduğuna inanıyorum, ama ben tam aramayı bilmek ve yine performans nedenleriyle buna karşı tavsiye etmiyoruz.

Bu iş akışı mi?

  • mailordertest.php form Mesajlar
  • mailordertest.php yönlendirir fstest.php
  • fstest.php kod başına Örneğin, $_POST değerini dışarı yazıyor.

If Bu iş akışı o (size not ettik) $_POST verileri doğru yayılmakta olmadığını sürpriz olmamalı olduğunu.

Yani, mailordertest.php kontrol ve herhangi bir header() aramaları için arayın. Eğer fstest.php $_POST verilere erişmek istiyorsanız session_start [(6)] {mailordertest.php üstüne çağrı ve hareket } fs_test.php {sonunda [(0)]} (ya da, daha iyisi, üst [(2)]} {include ve doğru zamanda aramak için bir fonksiyon işlevselliği sarın.