2012-02-29 29 views
6

Tengo un proyecto PHP es esencialmente un sitio web de procesamiento de pedidos para una empresa. Cada usuario de la empresa tiene acceso a este sitio web y recibe ciertas credenciales para la aplicación que controla el acceso a las páginas y a la funcionalidad en todo momento.PHP Guest El acceso al sitio web

Ahora tengo una solicitud para permitir el acceso de un invitado a una sola página. La complejidad de esta solicitud es que el invitado será diferente cada vez y la página será diferente. Básicamente es un portal que permite a los clientes, que no tienen cuentas dentro del sistema ya que no hay pedidos en vivo en este sitio, poder acceder y verificar la información de envío y pedido.

Mi idea para lograr esto es tener una tabla de base de datos configurada como una tabla de relaciones con invitados que se utilizará para almacenar UID, MD5 Hash Keys y la página de destino a la que hace referencia el registro. También se incluiría un contador de visitas y fecha de vencimiento. Cuando el usuario recibe un correo electrónico, debe tener un enlace en el correo electrónico en algún lugar como http://website.com/verify/?HASH-KEY.

Al hacer clic en este enlace, espero que la página verificar index.php tome HASH, lo verifique en la base de datos y muestre la referencia de página en la base de datos dentro de esta ubicación en lugar de redireccionar a la aplicación. Esto permitiría el acceso de invitados a la página única sin la necesidad de exponer la estructura del sitio web o una revisión de la autorización del usuario ya configurada.

  1. ¿Me estoy acercando a esta solución de la manera adecuada?
  2. ¿Cómo capturo el contenido de una página y la visualizo en otra?
+1

Permítame aclarar esto, quiere algún tipo de sistema de entrada, para permitir que un huésped muy específico, a una página muy específica, y que invitado solo a la página solo, ¿correcto? –

+0

Su resumen suena correcto. – Jeff

+0

La referencia de página, ¿qué es exactamente? Diría que su enfoque es bueno por lo que puedo decir. – Anton

Respuesta

7

1. ¿Me estoy acercando a esta solución de la manera adecuada?

Sí, más o menos.

Algunos indicadores:

  • asegurarse de que siembras generación de hash al azar. Por ejemplo, NO simplemente MD5 una ID de cliente u otro número pequeño/secuencial, ya que eso haría que sea fácil para un uso malicioso buscar otras páginas.
  • Vencimiento de los enlaces hash después de un tiempo de espera establecido.

2. ¿Cómo tomo el contenido de una página y la visualizo en otra?

Si desea que las personas "accedan y verifiquen el pedido y la información de envío" probablemente debería crear una página específica para él, en lugar de intentar pasar páginas normalmente seguras a huéspedes inseguros. Es decir, una 'página de confirmación de envío' que rellena los detalles según los datos introducidos por el hash proporcionado.

+0

Eso tiene sentido ... así que, en lugar de pasarlos a la página real, tienen una página que puede representar múltiples tipos de datos y el registro en la base de datos almacena el tipo de información o la vista de representación. Usted habla lógica mi amigo. – Jeff

+0

Mejor respuesta que la mía. Bien hecho. –

+0

Además de esto, requiere 'HTTPS', y permita que un usuario caduque manualmente un enlace hash en caso de que llegue inadvertidamente a la naturaleza. –

0

Si te entiendo correctamente (y creo que lo hago), entonces creo que te estás acercando a esto correctamente.

Para incluir los contenidos de otra página, generalmente utiliza el include.

include "/path/to/page.php"; 
+0

Esa es una solución sucia y penosa también ... Lo pensaré con la respuesta de Hamish. Respondiste la pregunta, pero Hamish me proporcionó una vista alternativa que podría adaptarse mejor a mis necesidades. – Jeff

2

Estoy tratando de seguir esto lo mejor que puedo.

Parece ser que debes usar tu método hash, y solo tienes una página independiente que generará el contenido que deseas, totalmente separado del resto del sistema. Simplemente coloque suficientes datos en su URL hash para determinar qué se necesita.

Algo más que hacer es usar una marca de tiempo en su URL de cadena hash y tener esa marca de tiempo de los bits aleatorios en los que genera su hash. Esto le permitirá hacer que una URL esencialmente "caduque" después de cierto punto.

Ejemplo: url.com/in/123456789865/hash-here~~V~~singular~~3rd

Puede comparar "123456789865" en este ejemplo a la hora del servidor actual y determinar si su espirado. Por supuesto, necesita hacer que "123456789865" sea parte de su encriptación hash para validar aún

Cuestiones relacionadas