Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/05/2003, 20:06
Avatar de drcyber
drcyber
 
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
El session_start() esta en login.php.

El asunto es que leí que debo pasar por URL el SID para que el sistema pueda saber la sesión con la que se está trabajando. De tal forma, que main.php pueda ejecutar el chequeo de sesiones que tiene en el code.

Algo estoy haciendo mal, pero NO SE QUE ES. Estoy basandome en lo que dice un libro de PHP, pero no sale.

Te cuento... con más detalle.

El usuario se loguea en el main.php, ahi se encuentra el formulario y puede seleccionar: USAR COOKIES, O NO.

Cuando se loguea usando cookies, el sistema (login.php) crea las cookies nuevas y reemplaza (main.php) el FORMULARIO por LOS DATOS DEL USUARIO (O MODERADOR) usando lo siguiente:

Código 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);
        include(
'blocks/formulario.php');
    }
    
mysql_free_result($rs);

Eso funciona perfectamente... pero con las sesiones no. Cuando el usuario se loguea usando las sesiones, el formulario se dirige a login.php donde se define la sesión de esta forma:

Código PHP:
if($recordar == "on") {
                
setcookie("cookUser",$userN,time()+7776000);
                
setcookie("cookPass",$passN,time()+7776000);
            } else {
                
session_start();
                
$_SESSION['sUser'] = $userN;
                
$_SESSION['sPass'] = $passN;
            } 
Luego, hace un REFRESH hacia: main.php?<?php echo SID ?> pasando el ID por URL.

main.php debería detectar que la sesión existe de esta forma:

Código PHP:
} 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();
        include(
'blocks/formulario.php');
    }
    
mysql_free_result($rs);

Pero no lo hace, se salta ese IF ya que "SUPUESTAMENTE" las variables $_SESSION['sUser'] y $_SESSION['sPass'] no están definidas...

¿Qué hago mal?

Espero haberme explicado, cualquier cosa... pegas un grito !
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)