Foros del Web » Programando para Internet » PHP »

Autentificacion con Sesiones

Estas en el tema de Autentificacion con Sesiones en el foro de PHP en Foros del Web. Alguien me podria explicar la funcion que cumplen las sesiones en Php?es que he creado una funcion para validar usuarios desde una Bd comprobando mediante ...
  #1 (permalink)  
Antiguo 05/04/2006, 11:20
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 11 años, 8 meses
Puntos: 2
Autentificacion con Sesiones

Alguien me podria explicar la funcion que cumplen las sesiones en Php?es que he creado una funcion para validar usuarios desde una Bd comprobando mediante un select si el usuario y contraseña se corresponde con las usuarios y contraseñas de la Bd. Al encontrar un resultado satisfactorio creo una session mediante session_start() y despues registro a esa sesion las variables autentificacion y usuario mediante la sentencia:
Código PHP:
$_SESSION['autentificado']= "SI";
$_SESSION['usuario']= $usuario;
Redirect("aplicacion.php"); 

No utilizo Header porque me salta el error de los wevos del headers_sent y utilizo una funcion llamada Redirect que me hace la redierccion a aplicacion.php, y ya en esa aplicacion hago session_start otra vez e intento mostrar la variable autentificacion asi pero no lo consigo:
Código PHP:
$aut=$_SESSION['autentificado'];
echo 
$aut
Bien que es lo que hago mal?alguien me puede decir que funcion tienen las sesiones y para que sirven?podria servir para ver si un usuario es el que dice ser y no ha entrado directamente a aplicacion.php?es decir para comprobar si se ha validado en el formulario y no ha entrado directamente.

Muchas gracias!
  #2 (permalink)  
Antiguo 05/04/2006, 15:32
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 11 años, 8 meses
Puntos: 0
Yo uso esto

<?
session_start();
$usuario = $HTTP_POST_VARS["usuario"];
$clave = $HTTP_POST_VARS["clave"];


///// aca deberias berificar contra la base de datos lo que vos quieras
///
//////
if ($usuario=="xxx" and $clave=="xxx") /// esto obviamente lo cambias
{
session_register("login");
$_SESSION["login"] = "ok";
?>
<SCRIPT LANGUAGE="javascript">
location.href = "principal.php";
</SCRIPT>
<?
}
else
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "login.php";
</SCRIPT>
<?
}
?>




Luego en cada pagina protegida por este login pongo

<?
session_start();
if ($_SESSION["login"] == "ok")
{

/// muestras aqui el codigo html de la pagina

}
else
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "login.php";
</SCRIPT>
<?
}

Para redireccionar me acostumbre a usar location.href de java script pero puede usar header o lo que te resulte mas comodo.

Espero que te haya servido
  #3 (permalink)  
Antiguo 06/04/2006, 01:49
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 11 años, 8 meses
Puntos: 2
Pos si que me ha valido muchas gracias
  #4 (permalink)  
Antiguo 06/04/2006, 04:46
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 11 años, 8 meses
Puntos: 2
Joder he conseguido leer y escribir variables de session pero lo que yo quiero es que no puedan entrar a los enlaces directamente es decir que para entrar a un enlace primero deberia tener que validarse en la pagina principal y al validarse correctamnte crearia una sesion con la variable Validacion y la de usuario registradas a esa sesion al crearlas las puedo leer desde el siguiente enlace al que me redirige y al hacerle un if comprobando que la variable de session Validacion contiene SI me lo hace tambien pero el problema es cuando hago localhost/Php/menu.php es decir cuando accedo al enlace directamente me lo valida igualmente...es decir que validacion sigue conteniendo SI. ¿Estoy haciendo algo mal?
  #5 (permalink)  
Antiguo 06/04/2006, 05:30
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 11 años, 8 meses
Puntos: 2
Vale ya se cual es el problema de porque me deja entrar a los enlaces sin validarme...el problema eran las cookies que claro se quedan guardadas y entonces siempre se validan y siempre va a entrar al if...como y cuando puedo cerrar las sesiones o cmo puedo borrar los cookies cuando termine la sesion?
  #6 (permalink)  
Antiguo 19/04/2006, 14:26
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.361
Antigüedad: 13 años
Puntos: 6
Cita:
Iniciado por tripit
Yo uso esto

<?
session_start();
$usuario = $HTTP_POST_VARS["usuario"];
$clave = $HTTP_POST_VARS["clave"];


///// aca deberias berificar contra la base de datos lo que vos quieras
///
//////
if ($usuario=="xxx" and $clave=="xxx") /// esto obviamente lo cambias
{
session_register("login");
$_SESSION["login"] = "ok";
?>
<SCRIPT LANGUAGE="javascript">
location.href = "principal.php";
</SCRIPT>
<?
}
else
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "login.php";
</SCRIPT>
<?
}
?>




Luego en cada pagina protegida por este login pongo

<?
session_start();
if ($_SESSION["login"] == "ok")
{

/// muestras aqui el codigo html de la pagina

}
else
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "login.php";
</SCRIPT>
<?
}

Para redireccionar me acostumbre a usar location.href de java script pero puede usar header o lo que te resulte mas comodo.

Espero que te haya servido
hola bue soy nuevo en esto, como seria el tema de la base de datos ? y en
if ($usuario=="xxx" and $clave=="xxx") /// esto obviamente lo cambias en vez de esas "xxx" como se pone lo ke seria un campo, un text o lo ke sea
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #7 (permalink)  
Antiguo 19/04/2006, 15:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
aldo1982

Si lo deseas .. estudia mi script "Autentificator":
http://php.cluster-web.com/autentificator

que es un sistema de usuarios basado en sesiones (almacena los usuarios en una tabla de Mysql).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 14/05/2006, 10:44
 
Fecha de Ingreso: enero-2002
Mensajes: 265
Antigüedad: 15 años, 10 meses
Puntos: 0
Buenas. pues a mi no me funciona...
he hecho que decis, incluso con un numero aleatorio como tb he leido pero cuando inicio la sesion en el archivo donde requiere login el $_SESSION['login'] me llega vacio... Lo he revisado mil veces y no sé donde falla.
a alguien le ha pasado eso? q ha hecho? gracias
  #9 (permalink)  
Antiguo 15/05/2006, 08:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por splig
Buenas. pues a mi no me funciona...
he hecho que decis, incluso con un numero aleatorio como tb he leido pero cuando inicio la sesion en el archivo donde requiere login el $_SESSION['login'] me llega vacio... Lo he revisado mil veces y no sé donde falla.
a alguien le ha pasado eso? q ha hecho? gracias
A mi en su época me sucendían problemas de ese tipo .. al final me dí cuenta que lo que hay que hacer es leer la documentación de PHP y ver que configuración uso (php.ini) en cuanto a la propagación del SID, y luego ver como en mi aplicación estoy propagando el SID.

Si no sabes de que hablo cuando menciono el "SID" más motivos tienes para leer la documentación de PHP y ver esa teoría en la cual se basa el uso de sesiones y de que estas funcionen.

Presta atención a los dos métodos de propagación del SID: URL y cookies .. y si propagas por cookies el SID .. revisa tu navegador y que nada esté bloqueando esas cookies.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 15/05/2006, 09:00
 
Fecha de Ingreso: enero-2002
Mensajes: 265
Antigüedad: 15 años, 10 meses
Puntos: 0
Yaaa lo solucioné. Gracias de todas formas por la referencia. No sé que es un SID. Soy muy novato en ese tema del php...
El problema era que la web donde tenia eso se abre desde la pagina index.php?modulo=pagina que hago un include a esa pagina. Pues bien, tenia el codigo al inicio del archivo "pagina" en vez del "index".
No sé si era exactamente ese el problema pero se me ha resuelto :D
Gracias!
  #11 (permalink)  
Antiguo 15/05/2006, 11:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por splig
Yaaa lo solucioné. Gracias de todas formas por la referencia. No sé que es un SID. Soy muy novato en ese tema del php...
El problema era que la web donde tenia eso se abre desde la pagina index.php?modulo=pagina que hago un include a esa pagina. Pues bien, tenia el codigo al inicio del archivo "pagina" en vez del "index".
No sé si era exactamente ese el problema pero se me ha resuelto :D
Gracias!
Yo tampoco sé si ese fué tu problema y más si no indicastes el código que usabas -completo- .. pero lo principal y en general es siempre "intentar" ver algún mensaje de error por parte de PHP o quien corresponda para saber que es lo que está originando ese mismo problema. A veces por configuración de PHP no se muestran los mensajes de errores o según condiciones debes verlos por otros médios.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 07/06/2006, 01:01
Avatar de tlombardini  
Fecha de Ingreso: junio-2006
Ubicación: Argentina
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Hola, les hago una pregunta :P Si yo uso sesiones SIN COOKIES, o sea.. en mi navegador deshabilito las cookies y propago el id de session por url... ¿esto es seguro? o sea... no pasa nada que se vea el nombre el ID de la sesión?
Otra pregunta... cuando yo hago session_destroy() lo que hace es borrar el valor de las variables de sesión... pero el name y el ID de la sesión sigue siendo el mismo no?? Eso está bien??

Gracias!!
:P
  #13 (permalink)  
Antiguo 07/06/2006, 03:15
 
Fecha de Ingreso: enero-2002
Mensajes: 265
Antigüedad: 15 años, 10 meses
Puntos: 0
No sé si es más seguro con cookies o de esa forma. Yo uso eso que tu dices. Me genero una IDsession con un numero aleatorio de 9 xifras y despues los links son pagina.php?sessionID=$_session['sessionID']
Al principio de la página le pongo que si $_Get['sessionID']!=$_SESSION['sessionID'] or !$_SESSION['sessioID'] me remita a una página de error.
cuando hago logout me voy a una pagina donde tengo un session_destroy. Una vez pasado por aquí, aunque vuelvan atrás en el navegador la página anterior ya no se abre.
Soy tan o más novato que tu en eso, no digo que mi código sea más seguro que las cookies (para eso esperaremos la repsuesta de Cluster :P) pero yo lo hago así y no creo que todavía nadia haya entrado en la zona "restringida"
Enga, un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:00.