Foros del Web » Programando para Internet » PHP »

Sesiones o Cookies

Estas en el tema de Sesiones o Cookies en el foro de PHP en Foros del Web. La verdad todo este sistema de seguridad para un foro un guestbook y una galeria de fotos me esta haciendo la vida trozos. Como veran ...
  #1 (permalink)  
Antiguo 25/01/2004, 21:54
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Sesiones o Cookies

La verdad todo este sistema de seguridad para un foro un guestbook y una galeria de fotos me esta haciendo la vida trozos.

Como veran aqui va mi problema.

Tuve problemas con Cookies por los subdirectorios y por eso ahora intento usar sesiones.

este es mi archivo autentificar.php

Código PHP:
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if( ($_POST[nick] == '') or ($_POST[pass] == '') )//comprobamos que las variables enviadas por el form de login.php tienen contenido
{
Header("Location: login.php"); //estan vacías, volvemos al index
}else{

//comprobamos en la db si existe ese nick con esa pass
$usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$_POST[pass]' ");
if(
$user_ok mysql_fetch_array($usuarios)) //si existe comenzamos con la sesion, si no, al index
{

session_register("usuario"); //registramos la variable usuario que contendrá el nick del user
session_register("idusuario"); //registramos la variable idusuario que contendrá la id del user
session_register("level"); //registramos la variable level que contendrá el level del user
//damos valores a las variables de la sesión
$_SESSION[usuario] = $user_ok["nick"]; //damos el nick a la variable usuario
$_SESSION[idusuario] = $user_ok["id"]; //damos la id del user a la variable idusuario
$_SESSION[level] = $user_ok["level"]; //damos el level del user a la variable level
Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario

}else{
echo 
'Nick y pass incorrectos';
}


?>
login.php

Código PHP:
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if(!isset($_SESSION[usuario]) ) //comprobamos que no existe la session, es decir, que no se ha logeado, y mostramos el form
{

//Creamos el form k irá a autentificar.php para comprobar los datos con la tabla users
echo '<form action="autentificar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
<input type="submit" name="submit" value="Enviar"></form>'
;

}else{

//SI se ha logeado, mostramos el nick y la opción de deslogearse
//Este sería el menú que saldría a la gente que esta logeada, se puede modificar y añadir cosas
echo 'Bienvenido '.$_SESSION[usuario]; //ej Bienvenido Juan
echo '<br>Tu level es '.$_SESSION[level]; //mostramos el level del user
if($_SESSION[level] == 2
{
//mostramos el link para ir a la pagina privada porque el user tiene level 1 (*Nota: el level por defecto es 2, por lo tanto no se le mostrará)
//*Nota2: para cambiar el level a 1, se tiene k hacer manualmente por phpmyadmin
echo '<br><a href=paginaprivada.php>Ir a pagina privada</a>'
}

echo 
'<br><a href=logout.php>Salir</a>'//link para deslogearse, iría a logout.php

}

?>

Cuando quiero accesar a paginaprivada.php manualmente me envia al index.php, en cambio dandole click al enlace me envia a esa web.

Que debo hacer para propagar el SID automaticamente o que me recomiendan
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 25/01/2004 a las 22:06
  #2 (permalink)  
Antiguo 26/01/2004, 02:34
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Sonrisa Lee este mensaje, te ayudará

Hola,

En el este mensaje viene bastante bien explicado como hacerlo, a mi me ayudo.

Código PHP:
http://www.forosdelweb.com/s/msg177501.html 
Dos cosas, se puede propagar automaticamente:

Código PHP:
header ("Location: pagina.php?".SID.""); 
y

Código PHP:
No uses session_register para las variables de sesión 
Espero que te ayude, pero lee el mensaje que te paso.

Qué se te de bien,
__________________
Lailuluelo
El error está en lo obvio
  #3 (permalink)  
Antiguo 26/01/2004, 06:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ademas de no usar session_register() .. en ningún momento debes mezclar el uso de esa función para registrar variables de sesión .. con la de los array superglobales $_SESSION ... y tu las estás mezclando en todo momento. (elimina las líneas de session_register() que tienes en tu código).

Y recuerda que $_SESSION está disponible desde PHP 4.1.0 en adelante.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 27/01/2004, 16:37
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Ok

voy a ver y les dire como me va gracias
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
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 23:22.