Foros del Web » Programando para Internet » PHP »

donde estara mi error

Estas en el tema de donde estara mi error en el foro de PHP en Foros del Web. tengo hecho mi login se pueden loguear los usuarios y hay un boton para salir o destruir la sesion el problema viene cuando solo cierran ...
  #1 (permalink)  
Antiguo 26/06/2011, 20:45
 
Fecha de Ingreso: diciembre-2010
Mensajes: 40
Antigüedad: 13 años, 4 meses
Puntos: 0
donde estara mi error

tengo hecho mi login se pueden loguear los usuarios y hay un boton para salir o destruir la sesion el problema viene cuando solo cierran el navegador y no le dan al boton salir, despues quieren volver a loguearse pero ya no les deja marca que el password es incorrecto.

LOGUIN:


Código PHP:
<?php
session_start
();
?>
<?php
include("conexion.php");

$usuario=strtolower($_POST['usuario']); 
    
$password=md5($_POST['password']); 
        
 if(
$usuario==NULL|$password==NULL) {
      echo 
"<script> alert (\"Te falta llenar uno o mas campos verificalo\"); </script>";
         echo 
"<script language=Javascript> location.href=\"../index.php\"; </script>";
      
  } 
  
if(
$usuario!= "" && $password!= ""

    
$sql mysql_query("SELECT usuario, password, nivel, status FROM usuarios WHERE usuario='$usuario'"); 
    if(
$fmysql_fetch_array($sql)){ 
        if(
$f['password'] == $password)  {             
  
            
$_SESSION['usuariologueado'] = $f['usuario'];   


      
$status=$_GET['status'];
            

    
$query mysql_query("UPDATE usuarios SET status='conectado' WHERE usuario = '$usuario'");
    

if(
$f ['nivel'] == 'administrador'){ 
header('location:../paneldecontrol.php'); 
}

elseif(
$f['nivel'] == 'usuario'){ 
            
header('location:../paneldeusuario.php'); 
            
        } 
        }
        
        else{ 
            echo 
"<script> alert (\"Password incorrecto\"); </script>"
echo 
"<script language=Javascript> location.href=\"../index.php\"; </script>"
die();
    

                    } 
    }else{ 
                         echo 
"<script> alert (\"El usuario no existe\"); </script>"
echo 
"<script language=Javascript> location.href=\"../index.php\"; </script>"
die();
         
    } 
     

?>

DESTRUIR SESION:

Código PHP:
<?php
session_start
();

  include(
"conexion.php");

  
$query mysql_query("UPDATE usuarios SET status='desconectado' WHERE usuario = '".$_SESSION["usuariologueado"]."'");

session_destroy();
?>
<SCRIPT LANGUAGE="javascript">
location.href = "../index.php";
</SCRIPT>
  #2 (permalink)  
Antiguo 26/06/2011, 21:11
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: donde estara mi error

Hola que tal, te dejo este codigo, que lo modifique un poco y le añadi un poco de mejora, para
que lo cheques y me dices si se soluciono algo.

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.  
  4.     include("conexion.php");
  5.  
  6.     $usuario=strtolower($_POST['usuario']);
  7.     $password=md5($_POST['password']);
  8.            
  9.     if($usuario==NULL|$password==NULL) {
  10.         echo "<script> alert (\"Te falta llenar uno o mas campos verificalo\"); </script>";
  11.         echo "<script language=Javascript> location.href=\"../index.php\"; </script>";
  12.     }
  13.      
  14.     if($usuario!= "" && $password!= "") {
  15.         $sql = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$usuario'");
  16.        
  17.         //si el usuario existe? (si devolvio linea con ese usuario.)
  18.         if(mysql_num_rows($sql) > 0) {  
  19.             $sql = mysql_query("SELECT usuario, password, nivel, status FROM usuarios WHERE usuario='$usuario' and password='$password'");
  20.            
  21.             //si el usuario con el password coinciden? __ loggeo correcto.
  22.             if(mysql_num_rows($sql) > 0) { 
  23.                 $f= mysql_fetch_array($sql);
  24.                
  25.                 /*este if ya no seria necesaria, puesto que la comprobacion esta en el query.*/
  26.                 //  if($f['password'] == $password)
  27.                
  28.                 $_SESSION['usuariologueado'] = $f['usuario'];  
  29.                
  30.                 // esta podria ser el problema, no se como uses esta pero si el usuario cerro la ventana, nunca
  31.                 // entro a la parte donde se actualiza el STATUS a desconectado. Y es por eso que el
  32.                 // $_GET['status'] estaria en este momento de 'conectado', aunque no se para que usas esa
  33.                 // linea en realidad.
  34.                 $status=$_GET['status'];
  35.                 $query = mysql_query("UPDATE usuarios SET status='conectado' WHERE usuario = '$usuario'");
  36.  
  37.                 if($f['nivel'] == 'administrador'){
  38.                     header('location:../paneldecontrol.php');
  39.                 }elseif($f['nivel'] == 'usuario'){
  40.                     header('location:../paneldeusuario.php');
  41.                 }
  42.             }else{
  43.                     echo "<script> alert (\"Password incorrecto\"); </script>";
  44.                     echo "<script language=Javascript> location.href=\"../index.php\"; </script>";
  45.                     die();
  46.             }
  47.         }else{
  48.             echo "<script> alert (\"El usuario no existe\"); </script>";
  49.             echo "<script language=Javascript> location.href=\"../index.php\"; </script>";
  50.             die();       
  51.         }
  52.     }
  53. ?>
  #3 (permalink)  
Antiguo 27/06/2011, 08:12
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: donde estara mi error

Tu lio viene del script para mostrar usuarios online. Un script de ese tipo se vería beneficiado de un timer. Es decir, que el usuario este logueado o no dependería de si navego tu web durante los ultimos 5 minutos, digamos. No se si esto aplica a tu web, pero yo los scripts de usuarios online que conozco funcionan así.

Respecto a lo mismo, sugiero que investigues si te sirve usar cookies. Cuando un usuario cierra el navegador pierde sus variables de sesión, pero no sus cookies.

Etiquetas: Ninguno
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 08:27.