Foros del Web » Programando para Internet » PHP »

inicio de sección por niveles de usuario

Estas en el tema de inicio de sección por niveles de usuario en el foro de PHP en Foros del Web. buenas. mi pregunta es la siguiente tengo una BD llamada bd_ateneo del cual tiene una tabla con los campos: nombre contrasena nivel (el cual nivel ...
  #1 (permalink)  
Antiguo 03/11/2012, 10:51
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta inicio de sección por niveles de usuario

buenas. mi pregunta es la siguiente tengo una BD llamada bd_ateneo del cual tiene una tabla con los campos:

nombre
contrasena
nivel
(el cual nivel son: estudiante, supervisor,administrador)

como puedo hacer para iniciar sección dependiendo del nivel, es decir que dependiendo del nivel de usuario me envié a una pagina distinta.

este es lo q tengo por ahora, este es el primer codigo de inicio de sección.:

Código PHP:
<form method='POST' action='php/index2.php'>
  &
nbspUsuario:<input type=text name="nombre" class="cir3" size="16"
  
Contraseña: <input type=password name="contrasena" class="cir3" size="16" >
  <
input type="submit" value="Iniciar seción" name="Entrar"  />
  </
form
este seria el segundo codigo el index2.php el cual me incluye el codigo de funciones.php que es donde hago la consulta para comparar los valores de la BD con los del enviado por formulario.use 3 tipos de funciones de conexiones1,2y3 por que anteriormente tenia 3 tablas por separada una para cada tipo de usuario. pero ahora los incluí en una sola que es la que tiene los niveles

Código PHP:

<?php

include ('funciones.php');
//usuario y clave pasados por el formulario
$nombre $_POST['nombre'];
$contrasena $_POST['contrasena'];


//usa la funcion conexiones() que se ubica dentro de funciones.php
if (conexiones($nombre$contrasena)){
    
//si es valido accedemos a ingreso.php
    
header('Location:../administrador.html');

else if (
conexiones2($nombre$contrasena)){
    
//si es valido accedemos a ingreso.php
    
header('Location:../ingreso3.php');
}
else if (
conexiones3($nombre$contrasena)){
    
//si es valido accedemos a ingreso.php
    
header('Location:../ingreso2.php');
}

 else {
    
    
//si no es valido volvemos al formulario inicial
    
header('Location: ../inicio.html');
}
?>

este es el 3 codigo php el de las funciones que probablemente aqui es donde tenga que hacer las consultas de nivel y las condiciones (if)el problema es que no se como. ayuda :(:

Código PHP:
<?php
//funcion para conectar a la base de datos y verificar la existencia del usuario
function conexiones($nombre$contrasena) {
    
//conexion con el servidor de base de datos MySQL
    
$conectar mysql_connect('localhost','root','');
    
//seleccionar la base de datos para trabajar
    
mysql_select_db('bd_ateneo',$conectar);
    
    
    
//sentencia sql para consultar el nombre del usuario
    
$sql "SELECT * FROM `bd_ateneo`.`usuarios` WHERE `nombre`='$nombre' AND `contrasena`='$contrasena' AND `nivel`='$resultado'";
    
//ejecucion de la sentencia anterior
    
$ejecutar_sql=mysql_query($sql,$conectar);
    
    
    
    
//si existe inicia una sesion y guarda el nombre del usuario
    
if (mysql_num_rows($ejecutar_sql)!=0){
        
//inicio de sesion
        
session_start();
        
//configurar un elemento usuario dentro del arreglo global $_SESSION
        
$_SESSION['nombre']=$nombre;
        
//retornar verdadero
        
return true;
    } else {
        
//retornar falso
        
return false;
    }
}
//funcion para verificar que dentro del arreglo global $_SESSION existe el nombre del usuario
function verificar_usuario(){
    
//continuar una sesion iniciada
    
session_start();
    
//comprobar la existencia del usuario
    
if ($_SESSION['nombre']){
        return 
true;
    }
}

tengo otro codigo pero es el de salir, que no tiene mucho que ver por eso no lo agregue. me pueden ayudar muchas gracias de antemano . el problema creo q radica en hacer condiciones en el index2.php o funciones.php no c díganme ustedes
  #2 (permalink)  
Antiguo 03/11/2012, 19:13
 
Fecha de Ingreso: noviembre-2010
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: inicio de sección por niveles de usuario

tenes errores en la sentencia sql, la manera correcta seria:

Código PHP:
$sql"SELECT * FROM usuarios WHERE nombre='".$nombre."' AND contrasena='".$contrasena."' AND nivel='".$resultado."'"
  #3 (permalink)  
Antiguo 03/11/2012, 20:10
 
Fecha de Ingreso: noviembre-2010
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: inicio de sección por niveles de usuario

Te modifico la funcion conexiones, quedaria asi:

Código PHP:
//funcion para conectar a la base de datos y verificar la existencia del usuario 
function conexiones($nombre$contrasena) { 
//conexion con el servidor de base de datos MySQL 
$conectar=mysql_connect('localhost','root',''); 
//seleccionar la base de datos para trabajar 
mysql_select_db('bd_ateneo',$conectar); 

//sentencia sql para consultar el nombre del usuario 
$sql="SELECT * FROM usuarios WHERE nombre='".$nombre."' AND contrasena='".$contrasena."'";
//ejecucion de la sentencia anterior 
$ejecutar_sql=mysql_query($sql,$conectar); 


//si existe inicia una sesion y guarda el nombre del usuario 
if (mysql_num_rows($ejecutar_sql)!=0){ 
//inicio de sesion 
session_start(); 
//configurar un elemento usuario dentro del arreglo global $_SESSION 
$_SESSION['nombre']=$nombre

if (
$ejecutar_sql["nivel"]=="administrador"){
             
$location="'Location:..\administrador.html'";
             return 
$location;
        } elseif (
$ejecutar_sql["nivel"]=="supervisor"){
             
$location="'Location:..\ingreso3.php'";
             return 
$location;
        } elseif (
$ejecutar_sql["nivel"]=="estudiante"){
             
$location="'Location:..\ingreso2.php'";
             return 
$location;
        }
} else { 
 
$location"'Location:..\inicio.html'";
 return  
$location;


Luego la funcion la utilizas asi en index2.php

Código PHP:
header (conexiones($nombre$contrasena)); 

Última edición por grassofabian; 03/11/2012 a las 20:29
  #4 (permalink)  
Antiguo 04/11/2012, 17:19
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

muchas gracias grassofabian voy a probar que tal, con la modificación que me dices. luego comento como me fue..
  #5 (permalink)  
Antiguo 07/11/2012, 05:29
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

hola q tal. probé el codigo de funciones.php como me dices. ,. y el idex2. lo colque asi

[PHP]
<?php


//usuario y clave pasados por el formulario
$nombre = $_POST['nombre'];
$contrasena = $_POST['contrasena'];


header (conexiones($nombre, $contrasena));
?>[PHP]

y con el header solo... pero me sale el siguiente error :

Fatal error : Call to Conexiones function undefined () en G: \ Archivos de programa \ xampp \ htdocs \ ateneo1 \ php \ index2.php on line 9
  #6 (permalink)  
Antiguo 07/11/2012, 06:03
 
Fecha de Ingreso: noviembre-2010
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: inicio de sección por niveles de usuario

agregastes en index2.php la linea "include ('funciones.php');"

Porque el mensaje de error dice que esa funcion no esta definida.
  #7 (permalink)  
Antiguo 07/11/2012, 08:13
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: inicio de sección por niveles de usuario

las funciones conexiones2 y conexiones3 no existe solo conexiones en tu file de funciones

Código PHP:
if (conexiones($nombre$contrasena)){ 

else if (
conexiones2($nombre$contrasena)){
 
else if (
conexiones3($nombre$contrasena)){ 
  #8 (permalink)  
Antiguo 07/11/2012, 10:17
 
Fecha de Ingreso: mayo-2012
Mensajes: 49
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: inicio de sección por niveles de usuario

Pues simplemente aplica lógica de programación a tu aplicación, envías el formulario y recoges los datos del usuario creando las sesiones, si el campo 'nivel' es estudiante haces una cosa, si es administrador otra y así sucesivamente, eso lo puedes hacer con un switch o con un if, hay muchas formas.
  #9 (permalink)  
Antiguo 07/11/2012, 17:09
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

Cita:
Iniciado por grassofabian Ver Mensaje
agregastes en index2.php la linea "include ('funciones.php');"

Porque el mensaje de error dice que esa funcion no esta definida.
lo hice pero aun se queda en idex2.php no ejecuta el siguiente codigo. si quieres puedes probarlo . disculpa la molestia
  #10 (permalink)  
Antiguo 07/11/2012, 17:12
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

Cita:
Iniciado por rolygc Ver Mensaje
las funciones conexiones2 y conexiones3 no existe solo conexiones en tu file de funciones

Código PHP:
if (conexiones($nombre$contrasena)){ 

else if (
conexiones2($nombre$contrasena)){
 
else if (
conexiones3($nombre$contrasena)){ 
si lo se , pero yo ya elimine conexiones2 y conexiones3. lo habia hecho por que tenia 3 funciones distintas para cada nivel de usuario. por que los datos de cada usuario se encontraban en tablas diferentes. pero ahora que uni las tablas, en solo una. (nombre, contrasena, nivel), no c como hacer para que dependiendo del nivel vaya a una pagina distinta
  #11 (permalink)  
Antiguo 07/11/2012, 17:21
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

Cita:
Iniciado por israel965 Ver Mensaje
Pues simplemente aplica lógica de programación a tu aplicación, envías el formulario y recoges los datos del usuario creando las sesiones, si el campo 'nivel' es estudiante haces una cosa, si es administrador otra y así sucesivamente, eso lo puedes hacer con un switch o con un if, hay muchas formas.
hola muchas gracias por tu respuesta... bueno yo trate de aplicar lo que me dices, pero el problema es que soy algo nuevo en esto de php. y no c como implementarlo bien... de hecho habia hecho lo q me dices, q dependiendo del nivel , fuera a un lugar, pero no supe el lugar correcto donde colocarlo...a
  #12 (permalink)  
Antiguo 07/11/2012, 20:43
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

este es el index2.php
Código PHP:
Ver original
  1. <?php
  2. include ('funciones.php');
  3. //usuario y clave pasados por el formulario
  4. $nombre = $_POST['nombre'];
  5. $contrasena = $_POST['contrasena'];
  6. //usa la funcion conexiones() que se ubica dentro de funciones.php
  7.  
  8.          
  9.         if($nombre!="" && $contrasena!=""){
  10.            
  11.             conexiones($nombre, $contrasena);
  12.             }  
  13.      else
  14.          
  15.     //si no es valido volvemos al formulario inicial
  16.     header('Location: inicio.html');
  17.      
  18.  
  19. ?>
y esta es la funciones.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. //funcion para conectar a la base de datos y verificar la existencia del usuario
  4. function conexiones($nombre, $contrasena) {
  5.     //conexion con el servidor de base de datos MySQL
  6.     $conectar = mysql_connect('localhost','root','');
  7.     //seleccionar la base de datos para trabajar
  8.     mysql_select_db('bd_ateneo',$conectar);
  9.     //sentencia sql para consultar el nombre del usuario
  10.     $sql = "SELECT * FROM `bd_ateneo`.`usuarios` WHERE `nombre`='$nombre' AND `contrasena`='$contrasena'";
  11.     //ejecucion de la sentencia anterior
  12.     $ejecutar_sql=mysql_query($sql,$conectar);
  13. if(mysql_num_rows($ejecutar_sql)>0){
  14.         $fila=mysql_fetch_array($ejecutar_sql);    
  15.     }
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.          
  23.  
  24.     //si existe inicia una sesion y guarda el nombre del usuario
  25.     if (mysql_num_rows($ejecutar_sql)!=0){
  26.         //inicio de sesion
  27.         session_start();
  28.         //configurar un elemento usuario dentro del arreglo global $_SESSION
  29.         $_SESSION['nombre']=$nombre;
  30.         //retornar verdadero
  31.        
  32.        
  33.  
  34.  
  35.  
  36.        
  37.     if ($fila["nivel"]=="administrador"){
  38.              $location="'Location:..\administrador.html'";
  39.              return $location;
  40.         } elseif ($fila["nivel"]=="supervisor"){
  41.              $location="'Location:..\ingreso3.php'";
  42.              return $location;
  43.         } elseif ($fila["nivel"]=="estudiante"){
  44.              $location="'Location:..\ingreso2.php'";
  45.              return $location;
  46.         }
  47. } else {
  48.  $location= "'Location:..\inicio.html'";
  49.  return  $location;
  50. }
  51. }  
  52. //funcion para verificar que dentro del arreglo global $_SESSION existe el nombre del usuario
  53. function verificar_usuario(){
  54.     //continuar una sesion iniciada
  55.     session_start();
  56.     //comprobar la existencia del usuario
  57.     if ($_SESSION['nombre']){
  58.         return true;
  59.     }
  60. }
  61. ?>
pero ahora trato de iniciar sección y solo me muestra la dirección index2.php no muestra nada en el navegador
  #13 (permalink)  
Antiguo 07/11/2012, 20:59
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

ya lo solucione,,, muchas gracias a todos por su ayuda... este es el index2.php
Código PHP:
Ver original
  1. <?php
  2. include ('funciones.php');
  3. //usuario y clave pasados por el formulario
  4. $nombre = $_POST['nombre'];
  5. $contrasena = $_POST['contrasena'];
  6. //usa la funcion conexiones() que se ubica dentro de funciones.php
  7.  
  8.          
  9.         if($nombre!="" && $contrasena!=""){
  10.            
  11.             conexiones($nombre, $contrasena);
  12.             }  
  13.      else
  14.          
  15.     //si no es valido volvemos al formulario inicial
  16.     header('Location:../inicio.html');
  17.      
  18.  
  19. ?>


y este es el de funciones.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. //funcion para conectar a la base de datos y verificar la existencia del usuario
  4. function conexiones($nombre, $contrasena) {
  5.     //conexion con el servidor de base de datos MySQL
  6.     $conectar = mysql_connect('localhost','root','');
  7.     //seleccionar la base de datos para trabajar
  8.     mysql_select_db('bd_ateneo',$conectar);
  9.     //sentencia sql para consultar el nombre del usuario
  10.     $sql = "SELECT * FROM `bd_ateneo`.`usuarios` WHERE `nombre`='$nombre' AND `contrasena`='$contrasena'";
  11.     //ejecucion de la sentencia anterior
  12.     $ejecutar_sql=mysql_query($sql,$conectar);
  13. if(mysql_num_rows($ejecutar_sql)>0){
  14.         $fila=mysql_fetch_array($ejecutar_sql);    
  15.     }
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.          
  23.  
  24.     //si existe inicia una sesion y guarda el nombre del usuario
  25.     if (mysql_num_rows($ejecutar_sql)!=0){
  26.         //inicio de sesion
  27.         session_start();
  28.         //configurar un elemento usuario dentro del arreglo global $_SESSION
  29.         $_SESSION['nombre']=$nombre;
  30.         //retornar verdadero
  31.        
  32.        
  33.  
  34.  
  35.  
  36.        
  37.     if ($fila["nivel"]=="Administrador"){
  38.              header('Location:../Administrador.html');
  39.         } else if ($fila["nivel"]=="supervisor"){
  40.            header('Location:../supervisor.html');
  41.         } else if ($fila["nivel"]=="estudiante"){
  42.              header('Location:../estudiante.html');
  43.         }
  44. } else {
  45. header('Location:../inicio.html');
  46. }
  47. }  
  48. //funcion para verificar que dentro del arreglo global $_SESSION existe el nombre del usuario
  49. function verificar_usuario(){
  50.     //continuar una sesion iniciada
  51.     session_start();
  52.     //comprobar la existencia del usuario
  53.     if ($_SESSION['nombre']){
  54.         return true;
  55.     }
  56. }
  57. ?>
muchas gracias grassofabian
  #14 (permalink)  
Antiguo 14/11/2012, 05:51
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: inicio de sección por niveles de usuario

hola a todos . muchas gracias por su ayuda, , disculpen la molestia ahora resulta q tengo otro problemita. miren
Código HTML:
Ver original
  1. http://www.forosdelweb.com/f18/negar-conceder-acceso-pagina-dependiendo-del-nivel-usuario-1022897/
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 22:21.