elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Sistema de registro de usuarios con rangos.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sistema de registro de usuarios con rangos.  (Leído 2,806 veces)
GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
Sistema de registro de usuarios con rangos.
« en: 2 Febrero 2013, 06:11 am »

Estoy haciendo un proyecto en el que necesito un sistema de registro de usuarios y estoy elaborando el mio...
Tengo dos cositas que me hacen dudar mucho, la primera es que al tener rangos debo comprobarlos antes de mostrar cada sitio web pero seria molesto tener que agregar en cada pagina el llamado a la base de datos, la comprobacion y la devolucion del resultado.
Siguiendo esta guia:
http://www.phperos.net/foro/index.php?topic=2129.0
Veo que el que la hizo agrego la comprobacion en el config.php, pero cuando yo lo utilizo no me funciona..
Código
  1. <?php
  2. // Config.php es la página que nos va a conectar al Servidor y luego a la Base de Datos
  3. $hostname = 'TU_HOST'; // Host (generalmente es localhost)
  4. $user = 'TU_USER'; // Usuario de la base de datos (por defecto en MySQL es root)
  5. $pass = 'PASSWORD'; // Contraseña de la base de datos (por defecto en MySQL se deja en blanco)
  6. $dbnombre = 'BASEDEDATOS'; // Nombre de la Base de Datos en la que vas a trabajar  devuelve atrás
  7. $rango = $_SESSION["nivel"];
  8.  
  9. mysql_connect($hostname, $user, $pass);
  10. mysql_select_db($dbnombre);
  11.  
  12. // Aqui comenzamos la sesión
  13. // Funciones
  14. if($rango == 2) {
  15.  
  16. $rango = 'Moderador Global';
  17. }
  18.  
  19. elseif($rango == 1) {
  20.  
  21. $rango = 'Administrador';
  22. }
  23.  
  24. elseif($rango == 3) {
  25.  
  26. $rango = 'Moderador';
  27. }
  28.  
  29. elseif($rango == 4) {
  30.  
  31. $rango = 'Usuario';
  32. }
  33.  
  34. ?>

Si lo utilizo asi me dice: Notice: Undefined index: nivel in C:\xampp\.... Es tipo que no reconoce lo que esta dentro de $_SESSION['nivel']; lo que me hace pensar que no estoy utilizando correctamente...
O si tienen alguna forma que sea mas facil agradeceria.
Se que debo comprobar en cada pagina pero quiero ahorrarme tener que poner muchas lineas de codigo..

Y otra cosa, que tipo de seguridad puedo implementar al sistema para que no lo jodan? Es decir que recomiendan ustedes.


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.706


WOS & Khan & Calero LDN


Ver Perfil WWW
Re: Sistema de registro de usuarios con rangos.
« Respuesta #1 en: 2 Febrero 2013, 06:22 am »

1. No es un error, es un mensaje de noticia, que quiere decir que la sesión aun no se ha inicializado, es como por ejemplo, printear un valor por GET y tener
Código
  1. <?php echo $_GET['token']; ?>
Pero si en la url, no se manifiesta dicha variable, pues no existe!

----

2. Para simplificar el código, usa funciones o clases :p, mejor usa un framework es más simple, CodeIgniter es mi favorito :p


« Última modificación: 2 Febrero 2013, 06:24 am por Shell Root » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
Re: Sistema de registro de usuarios con rangos.
« Respuesta #2 en: 2 Febrero 2013, 06:39 am »

Quizas si me convenga utilizar clases para algunas cosas como la verificacion del usuario asi me ahorro bastante..

Mira pero no entiendo como hacer eso de la session =/!
Mi login es:
Código
  1. <?php
  2. require_once('config.php');
  3.  
  4. $username = $_POST['username'];
  5. $password = $_POST['password'];
  6.  
  7. if(isset($_POST['ingresar'])) {
  8. $query = mysql_query("SELECT * FROM usuarios WHERE nick='".$username."' and pass='".$password."'");
  9. if(mysql_num_rows($query) > 0){
  10.     echo "Bienvenido $username";
  11.  
  12. }else{
  13.     echo "Error";
  14. }
  15. }
  16. ?>

Y quiero que una vez logueado entonces su rango se guarde en el config o de alguna otra forma para que sea mas facil verificar y comprobar su nivel..

Muchas gracias por tu ayuda =).


EDITO:

Logre hacer que la session funcionara.. Coloco session_start() al inicio de cada pagina donde la necesito y luego llamo a las sesiones..
Ahora tengo un problema, cuando quiero obtener el "rango" de mi usuario, en vez de devolverme 4 que es el que tengo (en la bd cree un int llamado nivel) me devuelve 0.. Lo hago de esta forma:
Código
  1. <?php
  2. require_once('config.php');
  3.  
  4. // Iniciamos
  5. $username = $_POST['username'];
  6. $password = $_POST['password'];
  7.  
  8. if(isset($_POST['ingresar'])) {
  9. $query = mysql_query("SELECT * FROM usuarios WHERE nick='".$username."' and pass='".$password."'");
  10. if(mysql_num_rows($query) > 0){
  11.     $rango = mysql_query("SELECT nivel FROM usuarios WHERE nick='".$username."'");
  12.     $_SESSION['usuario'] = $username;
  13.     $_SESSION['nivel'] = $rango;
  14.  
  15.  
  16. echo '<script language="javascript">window.location.href = "index.php";</script>';
  17.  
  18. }else{
  19.     echo '<script language="javascript">window.location.href = "index.php";</script>';
  20. }
  21. }
  22.  
  23. ?>

Lo raro de todo esto es que username si me devuelve mi nick (varchar) pero rango solo me devuelve 0 (en la bd nivel es un int)..

Ahora encima me di cuenta que si debajo de las asignaciones a los $_SESSION hago mostrar $rango en un echo me devuelve :
tu rango es Resource id #6 ... No entiendo que esta mal en el llamado a la base de datos..


VUELVO A EDITAR:
Segun lei era porque estaba haciendo nuevamente un llamado por un dato que ya lo tengo..
Bueno la solucion es esta:
Código
  1. $query = mysql_query("SELECT * FROM usuarios WHERE nick='".$username."' and pass='".$password."'");
  2. $datos = mysql_fetch_assoc($query);
  3. $rango = $datos['nivel'];
  4. $usuario = $datos['nick'];
  5.        $_SESSION['nivel'] = $rango;
  6.        $_SESSION['usuario'] = $usuario;
  7.  
Ahora me queda otra duda.. Esta bien esta comprobacion de que el usuario y contraseña es correcto?
Código
  1. $query = mysql_query("SELECT * FROM usuarios WHERE nick='".$username."' and pass='".$password."'");
  2.  
  3. if(mysql_num_rows($query) > 0){
  4.  
o es algo primitiva?

« Última modificación: 2 Febrero 2013, 07:54 am por GonzaFz » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
sistema de rangos « 1 2 »
Sugerencias y dudas sobre el Foro
NiCoLaS HdL 10 3,256 Último mensaje 5 Enero 2006, 18:03 pm
por JuszR
Integrar usuarios SMF con mi sistema de usuarios (y no al reves)
PHP
Alex_bro 3 3,165 Último mensaje 18 Julio 2008, 05:55 am
por nicolasc
Sistema de Login - Registro [Usando el registro de Windows]
Programación Visual Basic
ToNy_EsP 2 3,022 Último mensaje 28 Febrero 2009, 18:10 pm
por seba123neo
AYUDA Registro y sistema de verificación de usuarios
PHP
J0RG325 2 1,282 Último mensaje 11 Abril 2013, 16:55 pm
por Phantasy
Sistema de registro de usuarios
PHP
Hazama 4 1,528 Último mensaje 19 Diciembre 2013, 09:47 am
por #Aitor
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines