Ver Mensaje Individual
  #10 (permalink)  
Antiguo 22/09/2008, 09:08
Avatar de Carlojas
Carlojas
 
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ayuda con las Sesiones en PHP

Que tal akkaslla, como ya te indicaron el problema radica en que antes del session_start() no puedes mandar ninguna salida al navegador, ahora tienes algunos errores de conceptos en los scripts que publicas

1. En el archivo config.php no es necesario que apliques el session_start() , no cierres la conexión deja la función como tal puede ser así:
Código PHP:
<?php  
function Conectarse()  
{ if (!(
$link=mysql_connect("localhost","root","atesa")))  
   { echo 
"Error conectando a la base de datos.";  
      exit(); }  
   if (!
mysql_select_db("okok9687",$link))  
   { echo 
"Error seleccionando la base de datos.";  
      exit();  }  
   return 
$link;  
?>
2. El archivo autentificar.php modifícalo de esta forma, no es necesario que utilizes el session_register()
Código PHP:
<?php include('config.php');  
$link=Conectarse(); 
//comprobamos en la db si existe ese nick con esa pass 
   
$usuarios mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$_POST[pass]' ",$link) or die("Error en query:" .mysql_error() ); 
$user_ok mysql_fetch_array($usuarios);
   if(
mysql_num_rows($usuarios) != 0)//si existe comenzamos con la sesion, si no, al index 
   

         
session_start();
        
//damos valores a las variables de la sesión 
        
$_SESSION['usuario'] = $user_ok["nick"]; //damos el nick a la variable usuario 
        
$_SESSION['level'] = $user_ok["level"]; //damos el level del user a la variable level 
        
$_SESSION['cliente'] = $user_ok["cliente"]; 
        
$_SESSION['id'] = $user_ok["id"]; 
       
header("Location:login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario 
    
}  
    else 
    { 
      echo 
'Nick y pass incorrectos';  
     }  
?>
3. Lo mismo en login.php agregas el session_start() utiliza las variables de session de esta forma $_SESSION['variable'] utilizando las comillas para que le ahorres trabajo al PHP
Código PHP:
<?php include("config.php");  
  
$link=Conectarse();
session_start();  
if(!isset(
$_SESSION['usuario']) ) //comprobamos que no existe la session, es decir, que no se ha logeado, y mostramos el form 

?>
4. Y por ultimo el logout.php , la forma correcta de destruir la sesion es así, ademas no es necesario que incluyas el archivo de conexión a la BD, ademas si deseas destruir las variables asociadas a la sesion puedes utilizar session_unset(), o $_SESSION = array() puedes ver la referencia en el manual de PHP, session_destroy()
Código PHP:
<?php session_start(); 
$_SESSION = array(); // Destruye todas las variables de la sesión
session_destroy(); //destruimos la sesion
header("Location:login.php"); //volvemos al login.php 
?>

Saludos.

Última edición por Carlojas; 22/09/2008 a las 09:15