Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2003, 12:24
Avatar de drcyber
drcyber
 
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Pregunta Problemas con session_id()

Hola a todos...

Tengo un sistema de autentificación de usuarios que le permite escojer entre usar cookies, o simplemente usando sesiones. Las cookies en el sistema funcionan perfecto, pero las sesiones no. Este es basicamente el code, un archivo main.php donde se loguea el user, y un login.php donde se procesan los datos:

Código del formulario de logueo (visitante.php)
Código PHP:
<form method="post" action="login.php">
<
input type="text" name="user">
<
input type="password" name="password">
<
input type="checkbox" name="recordar" class="checkbox">
<
input name="submit" type="submit" class="submit" value="Ingresar">
</
form

Codigo del login.php
Código PHP:
<?php 
include('dbconn.php');

function 
qsimb($var) {
    
$var str_replace("<","&lt;",$var);
    
$var str_replace(">","&gt;",$var);
    
$var str_replace("\'","'",$var);
    
$var str_replace('\"',"&quot;",$var);
    
$var str_replace("\\\\","&#92",$var);
    return 
$var;
}

if(
trim($_POST['user']) != "" && trim($_POST['password']) != "") {

    
$userN qsimb($_POST['user']); 
    
$passN qsimb($_POST['password']); 

    
$ssql "SELECT * FROM usuarios WHERE usuario='$user'";
    
$rs mysql_query($ssql);

    if(
$row mysql_fetch_array($rs)) {
        if(
$row['password'] == $passN) {
            if(
$recordar == "on") {
                
setcookie("cookUser",$userN,time()+7776000);
                
setcookie("cookPass",$passN,time()+7776000);
            } else {
                
session_start();
                
$_SESSION['sUser'] = $userN;
                
$_SESSION['sPass'] = $passN;
            }
            
$msg "Ingreso exitoso, ahora será redirigido a la página principal...";
        } else {
            
$msg "Contraseña inválida.";
        } 
    } else {
        
$msg "Nombre de usuario no válido.";
    }
    
mysql_free_result($rs);
} else {
    
$msg "Debe especificar un nombre de usuario y contraseña."
}
mysql_close();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="06334b" text="#FFFFFF">
<center>
<?php echo $msg ?>
<meta http-equiv="refresh" content="2;url=index.php?<?echo session_id(); ?>">
</center>
</body>
</html>

Codigo del main.php, para ver si esta logueado o no
Código PHP:
<?php
include('dbconn.php');

if(isset(
$_COOKIE['cookUser']) && isset($_COOKIE['cookPass'])) {
    
$ssql "SELECT * FROM usuarios WHERE usuario='".$_COOKIE['cookUser']."' AND password='".$_COOKIE['cookPass']."'";
    
$rs mysql_query($ssql);
    if(
$row mysql_fetch_array($rs)) {
        if(
$row['permisos'] == 0) {
            include(
'blocks/usuario.php');
        } else {
            include(
'blocks/moderador.php');
        }
    } else { 
        
setcookie("cookUser","x",time()-3600);
        
setcookie("cookPass","x",time()-3600);
    }
    
mysql_free_result($rs);
} else if(isset(
$_SESSION['sUser']) && isset($_SESSION['sPass'])) {
    
$ssql "SELECT * FROM usuarios WHERE usuario='".$_SESSION['sUser']."' AND password='".$_SESSION['sPass']."'";
    
$rs mysql_query($ssql);
    if(
$row mysql_fetch_array($rs)) {
        if(
$row['permisos'] == 0) {
            include(
'blocks/usuario.php');
        } else {
            include(
'blocks/moderador.php');
        }
    } else {
        
session_destroy();
    }
    
mysql_free_result($rs);
} else {
    include(
'blocks/visitante.php');
}
?>
El asunto es que no me quiere identificar la sesión, y en lugar de mostrarme usuario.php o moderador.php me muestra el formulario de logueo visitante.php.

¿Por qué?... ¿Por qué cuando imprimo session_id() me da "0" como ID?

Saludos y gracias !
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)