Foros del Web » Programando para Internet » PHP »

Ayuda con inicio de sesión.

Estas en el tema de Ayuda con inicio de sesión. en el foro de PHP en Foros del Web. Buenas. Necesito un pequeño detalle para mi inicio de sesión. Muestro un desplegable con los nombres de usuario y un campo para meter la contraseña. ...
  #1 (permalink)  
Antiguo 12/03/2009, 11:06
Avatar de aliza  
Fecha de Ingreso: diciembre-2008
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 6
Ayuda con inicio de sesión.

Buenas. Necesito un pequeño detalle para mi inicio de sesión.
Muestro un desplegable con los nombres de usuario y un campo para meter la contraseña. Ahora necesito dar privilegios de acceso a la siguiente página. Se me ocurre hacerlo metiendo en un $_SESSION el 'nivel' de acceso, igual que hago con el nombre de usuario, pero no se como hacerlo. Pondría el campo 'nivel' en la tabla 'recambista'. Aportad ideas por favor!!
<?php
########################################
function comprobar($nomrec,$clave){
//conecto con la base de datos
$conn = mysql_connect("192.168.1.214","usuario","usuario") ;
//selecciono la BBDD
mysql_select_db("recambios",$conn);

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM recambista WHERE nomrec='$nomrec' and clave='$clave'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("usuario");
$autentificado = "SI";
header("Location: recambios.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
}
########################################
function desplegable($nomrec){
// Declaramos las variables
$host='192.168.1.214';
$usr='usuario';
$pass='usuario';
$db='recambios';

//Conectamos a mysql. Si falla muestra mensaje
if (!($id_conex = mysql_connect($host, $usr, $pass))){
echo "Error, fallo al intentar conectarse, por favor, contacta con el departamento de Informatica.";
exit();
}
//Seleccionamos la base de datos. Si falla muestra mensaje
if (!(mysql_select_db($db, $id_conex))){
echo "Error, fallo al seleccionar la base de datos, por favor, contacta con el departamento de Informatica.";
exit();
}
if (mysql_select_db($db, $id_conex)){
@mysql_query("SET NAMES 'utf-8'");
$sql="SELECT nomrec FROM recambista";
//Ejecuta la sentencia sql de consulta
$res = mysql_query($sql, $id_conex);

echo "<div><select name='nomrec' value='$nomrec'>\n";
echo "<option selected='selected'></option>\n";
while ($datos=mysql_fetch_array($res)){
echo "<option>".$datos['nomrec']."</option>\n";
}
echo "</select></div>\n";

// Liberar el resultado de la consulta y cierra la conexion
mysql_free_result($res);
}
mysql_close($id_conex);
}
########################################
...
$_SESSION['usuario']=$nomrec;
...
<html>
...
</html>
?>
  #2 (permalink)  
Antiguo 12/03/2009, 11:30
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Ayuda con inicio de sesión.

Si cada usuario tiene un nivel establecido, lo guardas en la tabla de usuarios y lo consultas cuando verificas el pass. Todos estos datos los guardas en variables de sesión para que puedas accesarlos luego.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 12/03/2009, 11:40
Avatar de aliza  
Fecha de Ingreso: diciembre-2008
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Ayuda con inicio de sesión.

No termino de controlar las sesiones, acabo de darme cuenta porque no puedo pasar un valor.
A ver si puedes ayudarme.
Tengo un index.php donde tengo el código anterior, ok? Entonces, si hago el $_SESSION['usuario¡]=$nomrec; que hago antes del <html>, se supone que tengo metida en la variable de sesión el valor $nomrec. Ahora, como lo puedo recuperar en la siguiente página que es recambios.php????? Esque lo que quiero hacer es permitir ver unas cosas u otras en recambios.php dependiendo del usuario.
Gracias!!!!
  #4 (permalink)  
Antiguo 12/03/2009, 11:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con inicio de sesión.

El error esta desde que haces el login:

Código php:
Ver original
  1. // Siempre debes iniciar una sesion, no importa si el login es valido o no
  2. session_start(); // Esta linea debe ser la primera en tu script
  3.  
  4. session_register("usuario"); // Esta linea realmente no es util
  5.  
  6. if(mysql_num_rows($rs)!=0) {
  7.     // Crea tu variable de sesion:
  8.     $_SESSION['usuario'] = $nomrec;
  9.     // Aqui rediriges a la pagina correcta
  10. } else {
  11.     // Asegurate de borrar todo en la session
  12.     // Redirigies al formulario de login
  13. }

En todas las demas paginas donde necesites usar la sesion:
Código php:
Ver original
  1. // Si no inicias la sesion no tendras acceso a lo que guardaste en ella
  2.  
  3. // Verifica que existe la sesion:
  4. if(!isset($_SESSION['usuario']))
  5.     die('Acceso no permitido');
  6.  
  7. $usuario = $_SESSION['usuario'];
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 12/03/2009 a las 11:53 Razón: Agregar verificacion
  #5 (permalink)  
Antiguo 12/03/2009, 11:51
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Ayuda con inicio de sesión.

Simple...

Código php:
Ver original
  1. <?php echo $_SESSION["usuario"]; ?>

Saludos
  #6 (permalink)  
Antiguo 12/03/2009, 11:56
Avatar de aliza  
Fecha de Ingreso: diciembre-2008
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 6
Muchísimas gracias Triby. Eres un jefe, ya me lo has aclarado todo!!!

Muchas gracias lisandro Arg, ahora con la aclaración de Triby ya se hacerlo correctamente. Llamaba a la variable como tu me dices, pero como en el index.php no la asignaba bien, por eso no la recogía. Gracias de todos modos.
__________________
Dando cabezados se aprende...
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 01:48.