¿Cómo mantener una sesión en PHP?

Iniciado por Kaxperday, 20 Marzo 2016, 04:18 AM

0 Miembros y 1 Visitante están viendo este tema.

Kaxperday

Buenas noches caballeros, resulta que tengo un servidor PHP y quiero tener usuarios que sean capaces de registrarse e iniciar sesión, para mantener la sesión de cada uno.

El problema es que no se como funciona lo de las cookies para mantener sesión, lo que quiero es iniciar sesión con un cliente y que pasado un rato caduque la cookie restringiendo de nuevo el acceso.
Y que nadie sea capaz de acceder a ese contenido más que el cliente que tenga esas cookies.

¿que debería de hacer en PHP para hacer esto posible?.

Código, ¿cómo sería?, y ¿qué es lo más recomendable?.

Como adicional, dejo caer cual es la mejor manera de guardar los logins de los usuarios registrados Y saber si hay formas de detectar archivos en una página que tiene index vacío, me refiero a que si por ejemplo tengo un index.html vacio y en ese directorio tengo un archivo llamado 1091y30r9u9efum92uf901u90r1un3r.nada si ese archivo podría ser detectado por alguna técnica por un atacante o el atacante para encontrarlo tendría que ir metiendo random urls hasta encontrarlo.

Un saludo y mcuhas gracias socios.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

engel lex

sobre la sesion y cookie

la sesion de php se mantiene con una cookie bajo un valor (modificable, el default, creo que es phssid) cuando se inicia sesión se guarda un sha2 al azar allí y se crea una entrada en la ram del servidor asociando esto... el peligro reside en que si un atacante roba este numero, habrá secuestrado la sesion... sin embargo esto es un metodo que al sol de hoy se ha estudiado y defendido bien... es cosa que busques tecnicas (brwoser fingerprint, ip, jscript local storage, etc)

sobre el tiempo de vida de las cookies, puedes asegurarlo por 2 caminos, el del cliente (le dices a su navegador que la cookie solo vive hasta x hora o hasta cerrar el navegador, pero este metodo es saltable) o el del servidor, donde uno de los valores que almacenas es el ultimo acceso, si entre el ultimo acceso y ahorita ha pasado mucho tiempo, al intentar entrar simplemente la sesion se destruye

estos en general son ejemplos basicos de php, te recomiendo leerte un tutorial y en los primeros capitulos ya verás sobre sesiones

sobre tu segunda pregunta...
para lo que hablas existen las bases de datos, simplemente anotas allí todos los nuevos accesos y listo... sobre hacer un archivo de texto (a lo bruto, porque es incluso más complicado) y almacenas allí todo, puedes crear una exclusion en el htaccess para que cualquier archivo que quieras bi oueda ser accedido desde afuera... esto es más complejo e innecesario... pero si te lees un tutorial medianamente avanzado, lo conseguirás


mi recomendacion... has un tutorial... hay uno bastante simple aunque viejito que debería aportarte todo lo que buscas

saludos!
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gAb1

Para conseguir lo que quieres tendrás que crear una función y ejecutarla al principio en el index.php, en lugar de simplemente llamar session_start().

Lo primero que tienes que hacer es obtener los parametros de la cookie de la sesión actual y guardarlos en una variable, para crear la cookie con tus parametros. Para esto puedes buscar en el manual php "session_get_cookie_params" y "session_set_cookie_params".

Segundo le das el nombre que quieras y la empiezas.

Ahora vienen las comprobaciones, aqui es donde eliges cada cuanto renovar la sesión y el tiempo de inactividad máximo, lo recomendado es renovarla cada 30 minutos y expirarla a los 5 minutos de inactividad. Así cuando se recargue la página (o se siga un link) se cierre sesión, y por lo tanto habrá que identificarse de nuevo (se redirige al login, al ser una página solo para usuarios registrados).

Me gustaría que le dieras una oportunidad y intentaras crear tu mismo la función. Leete el manual de php para saber como hacer lo que quieres o cualquier otra guia que encuentres. Muestranos lo que has podido crear y si tienes dificultad te paso la función que uso yo en mi framework (el proceso es muy sencillo, una vez leido  ;D).