2012-05-03 13 views
11

हाय मैं संदर्भ URL प्राप्त करने के लिए कोशिश कर रहा हूँ, लेकिन यह काम नहीं करता है जब आगंतुक Paypalजाओ संदर्भ URL - आगंतुकों Paypal से आ रही (HTTPS)

$ref = $_SERVER['HTTP_REFERER']; 
echo $ref; 

से साइट की बात आती है तो इसे आसानी से है यदि पेपैल से आने वाली साइट पर आगंतुक भूमि पर पेपैल यूआरएल प्राप्त करने का तरीका है?

संपादित करें और स्पष्टीकरण: मैं किसी विशेष (सहित, लेकिन तक सीमित नहीं Paypal साइट पर सेटिंग्स के लिए नहीं देख रहा हूँ: IPN, वापसी यूआरएल, भुगतान डाटा ट्रांसफर या Paypal पर किसी भी अन्य विशेष सेटिंग सेट साइट) जो कुछ मैं देख रहा हूं वह यूआरएल रेफरर प्राप्त करना है जब आगंतुक लेन-देन की स्थिति के संबंध में पेपैल से साइट पर आते हैं (यदि कोई था तो)।

मैनुअल

$ _SERVER से बॉब द्वारा बताया के रूप में इस तरह के हेडर, पथ, और स्क्रिप्ट स्थानों के रूप में एक सरणी युक्त जानकारी है। > इस सरणी में प्रविष्टियां वेब सर्वर द्वारा बनाई गई हैं। इस बात की कोई गारंटी नहीं है कि प्रत्येक वेब> सर्वर इनमें से कोई भी प्रदान करेगा; सर्वर कुछ छोड़ सकते हैं, या दूसरों को सूचीबद्ध नहीं कर सकते हैं।

तो एकमात्र सवाल बाकी है - क्या पेपैल साइट पर कुछ सेट किए बिना इसका कोई कामकाज है?

+4

आपको रेफरर की आवश्यकता क्यों है? आप पेपैल के माध्यम से रिटर्न यूआरएल सेट कर सकते हैं। – Devator

+2

एमएमएमएम, जो मैं पूछता हूं या मुझे क्या चाहिए ... – user983248

+3

मुझे पूरी तरह से पता है कि आप जो नहीं पूछते हैं, लेकिन यदि आप हमें बताते हैं कि आप क्या हासिल करने की कोशिश कर रहे हैं, तो हम उस चीज़ के बारे में सोच सकते हैं जो आपने नहीं किया और अपनी समस्या को पहले स्थान पर हल करें। – Devator

उत्तर

27

यदि आपकी साइट HTTP (HTTPS नहीं) का उपयोग करती है और पेपैल HTTPS का उपयोग करता है, तो कोई रेफरर नहीं भेजा जा रहा है!

HTTP RFC - 15.1.3 Encoding Sensitive Information in URI's कहता है:

ग्राहक एक (गैर-सुरक्षित) HTTP अनुरोध में एक Referer हेडर क्षेत्र शामिल नहीं होना चाहिए अगर जिक्र पेज एक सुरक्षित प्रोटोकॉल के साथ स्थानांतरित किया गया था।

तो रेफरर प्राप्त करने का एकमात्र तरीका आपकी साइट पर HTTPS का उपयोग करना है।

+0

शायद HTTPS के माध्यम से अपनी साइट को होस्ट करने में मदद करता है? – hakre

+0

@ hakre yes, यह – stewe

+0

काम करेगा यदि आपकी साइट HTTPS का उपयोग करती है, तो इसका मतलब यह है कि यदि आप HTTPS का उपयोग भी करते हैं तो भी आपकी साइट से लिंक की गई किसी भी अन्य साइट का रेफ़रलर यूआरएल प्राप्त हो सकता है (भले ही यूआरएल में 'यू = यूजरनेम और पीडब्ल्यू = password')? उदाहरण के लिए: http://stackoverflow.com/questions/499591/are-https-urls-encrypted#comment37812273_17905738 – trusktr

3

PHP.net से उद्धरित:

$ _SERVER इस तरह के हेडर, पथ, और स्क्रिप्ट स्थानों के रूप में जानकारी युक्त एक सरणी है। > इस सरणी में प्रविष्टियां वेब सर्वर द्वारा बनाई गई हैं। इस बात की कोई गारंटी नहीं है कि हर वेब> सर्वर इनमें से कोई भी प्रदान करेगा; सर्वर कुछ छोड़ सकते हैं, या दूसरों को यहां सूचीबद्ध नहीं कर सकते हैं।

+0

तो, कोई कामकाज नहीं है? – user983248

+0

@ user983248: वर्कअराउंड आपके सर्वर कॉन्फ़िगरेशन की जांच करना और यह सुनिश्चित करना है कि जिस चर को आप ढूंढ रहे हैं वह सेट है। हालांकि, अगर रेफरर गुम हो रहा है, तो सर्वर को दोष देने के लिए पर्याप्त नहीं है, क्योंकि यदि ब्राउज़र इसे नहीं भेजता है, तो सर्वर के पास यह नहीं होगा (जो विशेष रूप से सामान्य है क्योंकि ब्राउजर अक्सर उस जानकारी को नहीं भेजता है जब पिछली साइट सर्वर थी एचटीटीपीएस पर जो पेपैल का मामला है)। – hakre

9

आप आईपीएन की जांच कर सकते हैं। लेनदेन प्रभावित होने पर यह अधिसूचना भेजता है।
यूआरएल: https://www.paypal.com/ipn

+0

हाँ, मुझे पता है, लेकिन अभी भी मुझे – user983248

+1

+1 की आवश्यकता नहीं है क्योंकि यह रेफरर के साथ * कुछ * करने से * अधिक * बेहतर विचार है। –

2

आपकी प्रबुद्धता (टिप्पणी में) के लिए धन्यवाद। जैसा कि बॉब ने कहा था, आप सर्वर द्वारा भेजी गई जानकारी पर भरोसा नहीं कर सकते हैं। मैं क्या करूँगा, एक पृष्ठ बनाना है जिसे उपयोगकर्ता को भुगतान से पहले जाना है, कुकी (या सत्र) सेट करना है, उपयोगकर्ता को पेपैल वेबसाइट पर रीडायरेक्ट करना है। जब उपयोगकर्ता आपकी वेबसाइट पर लौटता है (या तो पेपैल, कुछ लिंक, या मैन्युअल रूप से) आप जानते हैं कि व्यक्ति ने पे बटन दबाया है (जैसे आप कुकी या सत्र सेट करते हैं) और जो क्रियाएं आप चाहते हैं उन्हें निष्पादित करते हैं।

यह आपने नहीं पूछा है, लेकिन यह एक स्वीकार्य कामकाज हो सकता है।

4

रेफरर दुर्भाग्य से क्लाइंट द्वारा सेट किया गया है और कुछ ब्राउज़र (या प्लगइन्स) उपयोगकर्ता को यह समझने की अनुमति देते हैं कि सर्वर पर कौन सी रेफरर भेजा जाता है। उपयोगकर्ता द्वारा भेजी गई "महत्वपूर्ण" (आपके मामले में मुझे लगता है) पर भरोसा करना कभी भी अच्छा विचार नहीं है। हालांकि यह एकमात्र जानकारी है जिसके बारे में आपके पास उपयोगकर्ता कहां से आता है (यदि आप पेपैल की पेशकश करने का निर्णय नहीं लेते हैं)।

1

आप जावास्क्रिप्ट में document.referrer का उपयोग करें और ajax या कुछ और अगर आप

+1

यह चर मौजूद नहीं होगा यदि गैर-HTTPS रीडायरेक्ट के लिए HTTPS बनाया गया था। – Gajus

+0

क्या यह है? धन्यवाद.. – Stranger

0

एक अलग persepective से इस को देखते हुए जरूरत के माध्यम से सर्वर के लिए भेज सकते हैं कि: यदि आप बाहर outwhere को खोजने की कोशिश कर रहे हैं, तो वे इससे पहले कि वे पेपैल के पास गया से आया , और आप साइट पेपैल को भेज रहे हैं (या आप उन्हें पेपैल के रास्ते पर अपनी वेबसाइट के माध्यम से रीडायरेक्ट करने के लिए प्राप्त कर सकते हैं), अपनी वेबसाइट पर एक कुकी सेट करने से पहले उन्हें सेट करें, और फिर जब वे वापस आएं तो कुकी पढ़ें।

क्षमा करें यदि आपको फिर से आवश्यकता नहीं है, लेकिन सिर्फ यह जांचकर कि आपने इसे माना है (जैसा कि मुझे नहीं लगता कि आप रेफरर के साथ जीतने जा रहे हैं)।

संबंधित मुद्दे