2011-12-08 21 views
5

Estoy construyendo una aplicación básica y estoy tratando de averiguar cómo puedo pasar la información del usuario de login.php a index.php. Esto es lo que obtuve hasta ahora: tengo una página de inicio de sesión que envía y autentica al usuario a través de la base de datos a través de una clase de usuario. Después de eso, las propiedades del usuario se establecen en los valores que se devuelven desde la base de datos. A partir de ahí, la identificación se almacena en una sesión. ¿Cómo voy a acceder a la información del usuario de una página a otra? ¿Debo simplemente construir un método de construcción para consultar la base de datos con la identificación de la sesión? ¿Es ese un enfoque seguro o válido? Un ejemplo sería el desbordamiento de la pila. La forma en que puede ver su nombre de usuario en la parte superior de cada página.¿Cómo puedo acceder a la información del usuario después de iniciar sesión?

+0

¿Por qué no almacenar la información del usuario en la sesión? –

Respuesta

6

Parece que tienes la idea general de la sesión de manejo hacia abajo. Entonces solo pregunta qué método es seguro u optimizado o lo que sea.

Es común almacenar tan poca información en la sesión o cookie como sea posible para que no abras a tus usuarios a simples piratas de pesca. Así que, idealmente, eso significa que tiene una tabla de sesión en la base de datos con la que puede hacer una referencia cruzada con la identificación de la sesión.

Sí, ejecutaría una consulta en cada carga de página, pero eso no es realmente una sobrecarga en un sitio estándar. Y no es inseguro siempre y cuando desinfecte adecuadamente su entrada. De esta forma, no será derribado si el usuario manipula su información de sesión.

Alternativamente, si solo está utilizando la identificación de usuario y un nombre de usuario, puede almacenarlos de forma segura en la sesión y evitar una consulta en cada carga de página.Simplemente no se vuelvan locos llenando la sesión o los datos de las cookies con arreglos extremadamente largos llenos de información poco común.

+0

+1; Buen punto sobre la seguridad de los datos de la sesión –

+0

@Kai respondió mi pregunta a un T, gracias. – Scott

4

En su página de inicio de sesión, almacenar la información de base de datos en una sesión de usuario, en las otras páginas, puede llamar directamente a

<?php 
session_start(); 
$_SESSION['user'] = $username; 

y en el otro sitio

<?php 
session_start(); 
$_SESSION['user']; 
+0

volviendo al ejemplo de stackoverflow, cuando vas a tu página de perfil, hay una gran cantidad de datos allí: preguntas que has respondido, preguntas que has hecho, etc. Tu obviamente no vas a almacenar todo eso en una sesión , entonces, ¿cómo recuperaría todos esos datos de la base de datos con $ _SESSSION ['USER'] y ID? – Scott

+0

Supongo que tiene una identificación principal para su usuario en su estructura sql, solo identificador de tienda en $ _SESSION ['id'] y cierta información básica que se utilizará en cada sitio (como nombre de usuario y nombre), si luego desea busca algunas consultas difíciles y específicas, solo obtén ID desde $ _SESSION ['id'] y úsala en tu consulta SQL –

1

I Estoy construyendo una aplicación básica y estoy tratando de averiguar cómo puedo pasar la información del usuario de login.php a index.php

Una forma es la de almacenar los datos compartidos como los datos de sesión de PHP: http://www.tizag.com/phpT/phpsessions.php

<?php 
session_start(); // start the session 

$_SESSION['views'] = 1; // store session data 
echo "Pageviews = ". $_SESSION['views']; //retrieve data 

almacenar los datos de usuario que necesita para todas las páginas. Puede dejar datos extendidos en el DB, por lo que no tiene que consultar una tonelada de datos por adelantado (como las estadísticas exhaustivas que vería en la página de perfil en SO).

Entonces no tendrá que volver a consultar los datos del usuario en cada página. Solo recupérelo de los datos de la sesión.

¿Debo simplemente construir un método de construcción para consultar la base de datos con la identificación de la sesión? ¿Es ese un enfoque seguro o válido?

Si está utilizando la misma cuenta de base de datos para todo, no hay nada intrínsecamente menos seguro en consultar la tabla de usuarios. No se expondrá a más riesgos que cualquier otra consulta que ya esté haciendo.

Si le preocupa la seguridad al acceder a la base de datos, le sugiero que aprenda acerca de un problema concreto: prevenir SQL injection attacks.

Ver: How can I prevent SQL injection in PHP?

Cuestiones relacionadas