2011-03-15 17 views
7

Uzak siteden POST'leri kabul eden bir sayfam var. Bu POST'ların geldiği alanı tespit etmek istiyorum. Sahte olabileceğinin farkındayım ama hiçbir şeyden daha iyi değil. HTTP_REFERER değişkenine erişmeyi denedim ancak null değerini döndürüyor.PHP HTTP Yönlendiren

Bu sayfa, PayPal (anında ödeme bildirimleri) ve diğer ödeme ağ geçitleri gibi kaynaklardan gelen POST'ları kabul eder.

Yönlendirme çağrısını nasıl alabilirim?

+0

Baskı hatası, ama görünüşe göre senin değil http://en.wikipedia.org/wiki/HTTP_referrer –

+0

http bir vatansız protokoldür, Bunu anlayın ve bir tarayıcı tarafından ayarlanmış bir şeye güvenmeyin. –

+0

Sizinle tamamen katılıyorum, kişilerin önerdiği gibi doğrulanmadıkça hiçbir IPN işlenmeyecektir. İsteğin nereden geldiğini bilmenin bir yolunu çok istiyorum, böylece hangi kimlik doğrulamanın kullanılacağını biliyorum. – aaronfarr

cevap

7

Yönlendiriciyi doğru yazdınız. Olmalıdır:

tek R ile
$_SERVER['HTTP_REFERER'] 
+0

Yönlendiren ingilizce kelimedir, ancak PHP'de Referer'dır. – AbiusX

6
$_SERVER['HTTP_REFERER'] 

, daha fazla bilgi için var_dump ($ _ SERVER) deneyin.

+0

Teşekkürler, bu bir yazım hatasıydı. Hala kodda hiçbir şey döndürmüyor. Garip! – aaronfarr

+0

Sadece boş olabilir. Tüm tarayıcılar referans gönderen yok – AbiusX

2

Yönlendiricinin taklit edilmesinin kolay olduğu konusunda haklısınız, ancak daha iyi bir çözüm var. Doğrulama mekanizmalarından söz ettikleri ipn documentation'u okuyun. Kullanıcıya asla güvenme.

+0

Teşekkürler. IPN'leri doğru şekilde uyguladınız. Ama aynı sayfayı paypal dışındaki diğer IPN'leri filtrelemek için kullanmak istiyorum. Bu yüzden referansı kullanmak mantıklı bir yol gibi görünüyordu. Bunun nasıl yapılabileceği hakkında herhangi bir öneriniz var mı? – aaronfarr

2

Bu oldukça iyi benim için çalışıyor:

https://stackoverflow.com/a/17958676/2635701

<form action="http://www.yourdomain.com/subscribe" 
    method="POST" 
    onsubmit= 
     "document.getElementById('www.yourdomain.com.referrer').value=window.location;" > 
    <!-- hidden input for field starts with a domain registered by you 
    just so that it's unlikely to clash with anything else on the page --> 
    <input type="hidden" id="www.yourdomain.com.referrer" name="referrer"/> 
    your email: <input name="email" type="text"/> 
    ... rest of form ... 
    <input type="submit" value="Subscribe"/> 
</form> 
+0

Javascript devre dışıysa ne olur? – codingpuss