Web Proxy (PHP & curl), AJAX ve çok boyutlu ilişkisel $ _POST Array veya $ _SERVER ['QUERY_STRING']?

1 Cevap php

Benim sunucuda bir PHP Web Proxy için AJAX (jQuery Form Plugin) üzerinden gönderen bir html formu var. Web proxy üçüncü bir script POST Kıvrılmaları kullanır.

Benim html formu p [fname], p [lname], c [ad], p [loc], p [loc] [email], p [loc] [e] [detay] gibi isimlerle girişi vardır. Adları üçüncü parti uygulama tarafından belirlenir.

Ben web proxy formu göndermek için GET kullandığınızda, ben sadece bir kıvrım isteği içindeki üçüncü parti komut başarıyla form verilerini iletmek için aşağıdakileri yapabilirsiniz:

$postvars = $_SERVER['QUERY_STRING'];
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);

Soru # 1: bir şey benim web proxy form verilerini göndermek için GET kullanarak 'yanlış' var mı? Ben de belirtildiği gibi, iyi çalışıyor ve daha az kodlama gerektirir. $ _SERVER ['QUERY_STRING'] ben tam olarak doğru biçimde, POST yoluyla üçüncü şahıslara geçmesine gerek tam veri vardır.

Soru # 2: benim web proxy göndermek için POST kullanmak için zorlayıcı bir neden varsa, ne sabit kod herhangi bir anahtar değerleri kalmadan, $ _POST içinde çok boyutlu ilişkisel dizi döngü en iyi yolu dinamik $ postvars inşa etmek için var ?

Not: html form kritik değildir ve onun tarafından sunulan verileri üçüncü parti hizmetinde bir onay işaret gider. Bu üretim verileri doğrudan takılı değil.

1 Cevap

As the names already say, GET should be used if you only want to get data without changing data on the server side.
Same way, POST should be used if the request changes data on the server side.

Yani sizin talebiniz ne bağlı yöntemini seçmelisiniz. Ayrıca, örneğin koyamazsınız böylece URL'ler sınırlı uzunlukta olduğuna dikkat GET parametresine metin rasgele bir miktarı.

And after reading your question completely (:-D) it seems that your request changes (in this case adds) data which means using POST is the more correct way. But as you only send it via GET to your proxy and then via POST to the other app, as long as it works, it is fine.
It only depends on what type of data you send.