2012-05-03 20 views
11

Hola estoy tratando de obtener la URL de referencia, pero no funciona cuando el visitante llega al sitio de PayPalObtener URL de referencia - los visitantes procedentes de PayPal (HTTPS)

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

¿Hay un sencillo forma de obtener la URL de PayPal si el visitante aterriza en el sitio procedente de Paypal?

Editar y Aclaración: No estoy buscando tener ninguna configuración especial en el sitio de Paypal (incluyendo, pero no limitado a: IPN, establezca la dirección URL de retorno, transferencia de datos de pago o cualquier otro configuraciones especiales en el PayPal sitio) Todo lo que busco es obtener el URL referer cuando los visitantes accedan al sitio desde Paypal, en relación con el estado de una transacción (si hubo una).

Como señaló por Bob del manual

$ _SERVER es una información de la matriz que contiene tal como cabeceras, caminos, y ubicaciones de script. Las entradas> en esta matriz son creadas por el servidor web . No hay garantía de que cada servidor web> proporcione cualquiera de estos; los servidores pueden omitir algunos, o proporcionar otros que no figuran en la lista aquí.

Así que la única pregunta que queda es: ¿Hay alguna solución para esto sin establecer algo en el sitio de PayPal?

+4

¿Por qué necesita el referer? Puede establecer la URL de retorno a través de PayPal. – Devator

+2

Mmmm, eso no es lo que pregunto o lo que necesito ... – user983248

+3

Soy plenamente consciente de que eso no es lo que preguntas, pero si nos dices lo que intentas lograr, podríamos pensar en algo que no hiciste y resuelve tu problema en primer lugar. – Devator

Respuesta

27

En caso de que su sitio use HTTP (no HTTPS) y PayPal use HTTPS, no se enviará un Referrer.

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

Los clientes no deben incluir un campo de encabezado Referer en una petición HTTP (no seguro) si la página de referencia fue transferido con un protocolo seguro.

Así que la única forma de obtener el referidor es usar HTTPS en su sitio.

+0

Tal vez ser el anfitrión del propio sitio a través de HTTPS ayuda? – hakre

+0

@hakre sí, eso funcionaría – stewe

+0

Si su sitio utiliza HTTPS, ¿eso significa que puede obtener la URL de referencia de cualquier otro sitio que esté vinculado a su sitio si también usan HTTPS (incluso si la URL contiene '? U = username & pw = contraseña')? Por ejemplo: http://stackoverflow.com/questions/499591/are-https-urls-encrypted#comment37812273_17905738 – trusktr

3

Citado de PHP.net:

$ _SERVER es una matriz que contiene información tal como cabeceras, rutas y ubicaciones de scripts. Las> entradas en esta matriz son creadas por el servidor web. No hay garantía de que cada servidor web> proporcione alguno de estos; los servidores pueden omitir algunos, o proporcionar otros que no se enumeran aquí.

+0

Entonces, ¿no hay una solución? – user983248

+0

@ user983248: la solución consiste en verificar la configuración de su servidor y asegurarse de que esté configurada la variable que está buscando. Sin embargo, no es suficiente culpar al servidor si falta la referencia, porque si el navegador no lo envía, el servidor no lo tendrá (lo cual es especialmente normal ya que el navegador a menudo no envía esa información si el sitio anterior era servidor). sobre HTTPS, que es el caso de PayPal). – hakre

9

Puede examinar IPN. Envía una notificación cuando una transacción se ve afectada.
URL: https://www.paypal.com/ipn

+0

Sí, lo sé, pero aún no es lo que necesito – user983248

+1

+1 porque esta es * mucho * mejor idea que hacer * cualquier cosa * con el referer. –

2

Gracias por su enlightment (en el comentario). Como dijo Bob, no puede confiar en la información enviada por el servidor. Lo que haría, es crear una página a la que un usuario tiene que ir antes del pago, establecer una cookie (o sesión), redirigir al usuario al sitio web de PayPal. Cuando el usuario regresa a su sitio web (ya sea a través de PayPal, algunos enlaces o manualmente), usted sabe que la persona presiona el botón Pagar (mientras configura la cookie o sesión) y realiza las acciones que desea.

No es lo que pidió, pero podría ser una solución aceptable.

4

El remitente desafortunadamente es configurado POR el cliente y algunos navegadores (o complementos) le permiten al usuario editar qué referencia se envía al servidor. Nunca es una buena idea confiar en las informaciones "críticas" (en su caso, supongo) enviadas por el usuario. Sin embargo, esta es la única información que tiene con respecto a dónde viene el usuario (si decide no usar lo que puede ofrecer PayPal).

1

Puede utilizar document.referrer en javascript y enviar eso al servidor a través de ajax o algo si necesita

+1

Esta variable no estará presente si se realizó una redirección de HTTPS a no HTTPS. – Gajus

+0

¿Lo es? Gracias.. – Stranger

0

En cuanto a esto desde un persepective diferente: Si usted está tratando de salir encontrar outwhere vinieron antes de ir a PayPal , y su sitio los está enviando a PayPal (o puede hacer que redireccionen a través de su sitio web en el camino hacia PayPal), configure una cookie en su sitio web antes de redirigirlos y luego lea la cookie cuando regresen.

Lo siento si, una vez más, no es lo que necesita, pero solo comprobando que lo haya considerado (ya que tampoco creo que gane con la referencia).

Cuestiones relacionadas