Foros del Web » Programando para Internet » PHP »

Sesiones con perfiles en PHP

Estas en el tema de Sesiones con perfiles en PHP en el foro de PHP en Foros del Web. Buenas noches amigos, espero esten bien.. Soy nuevo en este foro y espero me puedan ayudar... Estoy realizando un sistema en php y por los ...
  #1 (permalink)  
Antiguo 23/02/2011, 21:50
 
Fecha de Ingreso: noviembre-2009
Mensajes: 89
Antigüedad: 14 años, 6 meses
Puntos: 1
Exclamación Sesiones con perfiles en PHP

Buenas noches amigos, espero esten bien..

Soy nuevo en este foro y espero me puedan ayudar...

Estoy realizando un sistema en php y por los momentos estoy en la parte del inicio de sesion de los usuarios.

Lo que necesito es:

Como hacer para que cuando un usuario se loguee me muestre unicamente los datos de el por ejemplo: Dinero Disponible, Dinero perdido, reportes de las jugadas que a realizado.. son datos unicos de cada usuario..

Espero me entiendan lo que quiero y me puedan ayudar con algun codigo que me haga falta.. Les dejo Los codigos..

El SESSION_START() es incluido en config.php


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
?>
<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] == 1)
{
//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

}

?>
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';
}

}
?>
Que esten bien espero una pronta respuesta.. Muchas gracias.
  #2 (permalink)  
Antiguo 24/02/2011, 02:46
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Respuesta: Sesiones con perfiles en PHP

Mmh.. varias cosas.

1. Los indices asociativos de un arreglo deben ir entre comillas. $_POST['user'], $_SESSION'loquesea']
2. Estas dejando eso vulnerable a inyección sql. Dale un ojo a funciones como mysql_real_escape_string
3. En versiones mas nuevas de PHP, el uso de session_register esta deprecado. Con que pongas $_SESSION['llave'] = $valor es suficiente.
4. Usa isset y empty para comprobar que haya valores enviados y que no esten vacios. Si te fijas en tu script estas comparando con dos espacios en blanco.

Saludos :)
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 24/02/2011, 08:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 89
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Sesiones con perfiles en PHP

Muchas gracias por tu pronta respuesta Oso96_2000 tomare en cuanta tus consejos..

En cuanto a la pregunta que les realice sobre el perfil de usuario que me recomiendan?

Espero su ayuda por favor..

Saludos..
  #4 (permalink)  
Antiguo 24/02/2011, 12:26
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Respuesta: Sesiones con perfiles en PHP

No eran solo consejos :( si los aplicas debería funcionar lo que estas buscando hacer. Asegurate de crear bien las sesiones y revisa la condición que tienes donde te digo que estas comparando con espacios en blanco, asi como el modo en que haces tu consulta para revisar el usuario y contraseña.
__________________
Sin Ideas
  #5 (permalink)  
Antiguo 24/02/2011, 14:30
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 8 meses
Puntos: 44
Respuesta: Sesiones con perfiles en PHP

yo te apoyo oso96_2000 las comparaciones con espacios en blanco hacen que tu codigo haga cosas que no esperas, xq realmente funciona (comparando con espacios en blanco) así que revisa bien el código
por ejemplo:

$_POST[nick] esto esta mal definido
$_POST['nick'] esto está bien definido

revisa eso

Última edición por p414; 24/02/2011 a las 14:31 Razón: agregar comentario

Etiquetas: perfiles, sesiones
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 16:32.