Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/03/2012, 06:22
Fierox
 
Fecha de Ingreso: febrero-2012
Ubicación: En mi propio mundo
Mensajes: 73
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Sesiones en php para login

Lo primero que veo es que usas $_REQUEST en vez de usar $_POST para recoger tus variables.¿Pq?

Otra cosa ¿Pq mezclas php con javascript?

en vez de ...
Código PHP:
echo"<script language='javascript'> alert('Bienvenido');location.href='root.php';</script>"
Código PHP:
echo"<script language='javascript'> alert('Bienvenido');location.href='invitado.php';</script>"
no crees que sería mejor un...
Código PHP:
header(‘Location:root.php’); 
Código PHP:
header(‘Location:invitado.php’); 
Otra cosa, veo que en la consulta no usas para nada la contraseña, solo buscar por usuario. Si buscaras por usuario y contraseña te ahorras 2 if.

También veo innecesario el while($row=mysql_fetch_array($resultado)){. Pues en teoría los usuarios deben de ser únicos, por lo que la consulta solo te debe devolver una o ninguna fila dependiendo si encuentra el usuario o no en la tabla.

Veo que haces
Código PHP:
$row["usuario"]==root 
Código PHP:
$row["usuario"]==invitado 
que es root? que es invitado? una variable un string o ke?
$row["usuario"] guarda el nombre del usuario ¿no?, si es asi, segun tu código solo puede haber 2 usuarios en tu web uno llamado invitado y otro llamado root. El problema de esto es que los nuevos usuarios que se registren con nombres distintos a root o invitado no podrán acceder a ninguna de las secciones, pues solo estás diciendo que puedan entrar a la pagina invitado.php a los que se llamen invitado y a la pagina root.php a los que se llamen root.
Si lo que pretendes es que unos usuarios sean invitados y otros sean root, se me ocurren dos opciones.
1) Crearte un nuevo campo en la tabla de usuarios que indicaran el tipo de usuario que es.
2) La otra solución sería que el administrador y solo el usuario administrador se llamase root por lo que tu codigo

Código PHP:
if($row["usuario"]==invitado){
echo
"<script language='javascript'> alert('Bienvenido');location.href='invitado.php';</script>";
}
if(
$row["usuario"]==root){
echo
"<script language='javascript'> alert('Bienvenido');location.href='root.php';</script>";

sería mejor sustituirlo por
Código PHP:
if($row["usuario"]=='root')
{
    
header(‘Location:root.php’)
}else
{
   
header(‘Location:invitado.php’)

Por último que tal si en invitado.php y en root.php pones

Código PHP:
<?php

if (verificar_usuario())
{
   
//aqui debe venir todo el contenido necesario que solo el usuario validado puede acceder
   
print “Desconectarse <a href=’salir.php’/>aqui</a>;
} else 
{
   
header(‘Location:index.php’);
}
?>
Donde la funcion verificar_usuario() es una función que nos indica si el usuario está autenticado o no
De esta forma si verificar_usuario == true significa que el usuario se ha logueado por lo que mostraremos la página sino nos carga el index.php.