2012-05-03 7 views
11

Ciao Sto cercando di ottenere l'url referrer ma non funziona quando il visitatore arriva al sito da PaypalPrendi URL referrer - visitatori provenienti da Paypal (HTTPS)

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

v'è una semplice modo di ottenere l'url paypal se il visitatore atterra sul sito proveniente da Paypal?

Modifica e Precisazione: Non sto cercando di avere impostazioni particolari sul sito di Paypal (inclusi ma non limitati a: IPN, impostare l'URL di ritorno, trasferimento dei dati del pagamento o altre impostazioni speciali sul Paypal sito) Tutto quello che sto cercando è di ottenere il riferimento URL quando i visitatori arrivano al sito da Paypal, riguardo lo stato di una transazione (se ce n'era una).

Come sottolineato da Bob dal manuale

$ _SERVER è una matrice contenente informazioni quali le intestazioni, i percorsi, e luoghi di script. Le voci> di questo array sono create dal server Web . Non c'è alcuna garanzia che ogni web> server fornisca uno qualsiasi di questi; i server possono omettere alcuni o fornire altri non elencati qui.

Quindi l'unica domanda rimasta è - C'è qualche soluzione a questo senza impostare qualcosa sul sito paypal?

+4

Perché hai bisogno del referente? È possibile impostare l'URL di ritorno tramite PayPal. – Devator

+2

Mmmm, non è quello che chiedo o quello che mi serve ... – user983248

+3

Sono pienamente consapevole che non è quello che chiedi, ma se ci dici cosa stai cercando di ottenere, potremmo pensare a qualcosa che non hai e risolvi il tuo problema in primo luogo. – Devator

risposta

27

Se il sito utilizza HTTP (non HTTPS) e PayPal utilizza HTTPS, non viene inviato alcun referrer!

HTTP RFC - 15.1.3 Encoding Sensitive Information in URI's stati:

Clienti NON DOVREBBE includere un campo di intestazione Referer in un (non custodito) richiesta HTTP se la pagina di riferimento è stato trasferito con un protocollo sicuro.

Quindi l'unico modo per ottenere il referrer è quello di utilizzare HTTPS sul tuo sito.

+0

Forse l'hosting del proprio sito tramite HTTPS aiuta? – hakre

+0

@hakre sì, funzionerebbe – stewe

+0

Se il tuo sito utilizza HTTPS, significa che puoi ottenere l'URL di riferimento di qualsiasi altro sito collegato al tuo sito se utilizzano anche HTTPS (anche se l'URL contiene '? U = username & pw = password')? Ad esempio: http://stackoverflow.com/questions/499591/are-https-urls-encrypted#comment37812273_17905738 – trusktr

3

Citato da PHP.net:

$ _SERVER è un array contenente informazioni quali le intestazioni, i percorsi ei luoghi di script. Le voci> in questo array sono create dal server web. Non vi è alcuna garanzia che ogni server web> fornirà uno di questi; i server possono omettere alcuni o fornire altri non elencati qui.

+0

Quindi, non c'è una soluzione alternativa? – user983248

+0

@ user983248: la soluzione è controllare la configurazione del server e assicurarsi che la variabile che stai cercando sia impostata. Tuttavia, non è sufficiente dare la colpa al server se manca il referrer, perché se il browser non lo invia, il server non ce l'ha (il che è particolarmente normale dato che il browser spesso non invia tali informazioni se il sito precedente era server su HTTPS, come nel caso di paypal). – hakre

9

È possibile esaminare IPN. Invia una notifica quando una transazione è interessata.
URL: https://www.paypal.com/ipn

+0

Sì, lo so, ma ancora non è quello che mi serve – user983248

+1

+1 perché questa è un'idea * molto * migliore di fare * qualsiasi * con il referente. –

2

Grazie per l'illuminazione (nel commento). Come affermato da Bob, non è possibile fare affidamento sulle informazioni inviate dal server. Quello che vorrei fare è creare una pagina che un utente deve visitare prima del pagamento, impostare un cookie (o una sessione), reindirizzare l'utente al sito web di PayPal. Quando l'utente torna al tuo sito web (tramite PayPal, alcuni link o manualmente), conosci la persona che preme il pulsante Paga (mentre imposti il ​​cookie o la sessione) ed esegui le azioni che desideri.

Non è quello che hai chiesto, ma potrebbe essere una soluzione accettabile.

4

Il riferimento è sfortunatamente impostato dal client e alcuni browser (o plug-in) consentono all'utente di modificare quale referente viene inviato al server. Non è mai una buona idea fidarsi delle informazioni "critiche" (nel tuo caso credo) inviate dall'utente. Tuttavia questa è l'unica informazione che hai riguardo a dove proviene l'utente (se decidi di non usare ciò che può offrire paypal).

1

È possibile utilizzare document.referrer in javascript e inviare che al server tramite ajax o qualcosa se avete bisogno di

+1

Questa variabile non sarà presente se è stato effettuato il reindirizzamento HTTPS a non HTTPS. – Gajus

+0

E 'vero? Grazie.. – Stranger

0

Guardando questo da un persepective diversa: se si sta provando a trovare outwhere sono venuti prima di andare a PayPal e il tuo sito li sta inviando a PayPal (oppure puoi reindirizzare tramite il tuo sito web sulla strada per PayPal), impostare un cookie sul tuo sito Web prima di reindirli e quindi leggere il cookie quando ritornano.

Scusate se non di nuovo ciò di cui avete bisogno, ma controllate di averlo preso in considerazione (dato che non penso che vincerete con il referrer).