Foros del Web » Programando para Internet » PHP »

Problema con sesiones y con SID

Estas en el tema de Problema con sesiones y con SID en el foro de PHP en Foros del Web. Holas, estoy recien empezando con esto de las sesiones (Siempre use cookies) y ya empece teniendo problemas. Tengo los siguientes scripts: index.php (Ademas tiene un ...
  #1 (permalink)  
Antiguo 18/08/2007, 14:13
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Problema con sesiones y con SID

Holas, estoy recien empezando con esto de las sesiones (Siempre use cookies) y ya empece teniendo problemas. Tengo los siguientes scripts:

index.php (Ademas tiene un formulario pero no creo que sea necesario pornerlo aqui.
Código PHP:
<?php
set_time_limit
(0); 
require_once(
"enlace.inc.php");
require_once(
"login.inc.php");

if(
$_REQUEST['username'])
{
    
$login = new Login($_REQUEST['username'],$_REQUEST['password']);
    if(
$login->Auth())
    {
        
$login->Start();
        
header("Location: index2.php?".SID);
    }
    else
    {
        
header("Location: error.php");
    }
}    
?>
login.inc.php
Código PHP:
<?php
// Clases a crear
class Login
{
    var 
$username;
    var 
$password;
    
    
// Constructor para el nuevo login
    
function Login($username,$password)
    {
        
$this->username $username;
        
$this->password md5($password);
    }
    
    
// Metodo que verifica si el login es correcto
    
function Auth()
    {
        
// Comprobamos si los datos introducidos son correctos
        
$query mysql_query("Select password from accounts where username = '".$this->username."'");
        
$query mysql_fetch_array($query);
        if(
$query['password'] == "")
        {
            return 
1;
        }
        else
        {
            if(
$query['password'] != $this->password)
            {
                return 
0;
            }
            else
            {
                return 
1;
            }
        }
    }
    
    function 
Start()
    {
        
session_start();
        
// Iniciamos la nueva sesion
        
mysql_query("Update accounts set last = now(), ip = '".$_SERVER['REMOTE_ADDR']."'
                    where username = '"
.$this->username."'");
    }
}

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

if(
$_GET['action'] == "logout")
{
    
session_unset();
    
session_destroy();
    
header("Location: index.php");
}
?>
<a href="index2.php?action=logout&<?=SID?>">Logout</a>
Okay. Todo funciona bien, cuando me logueo me lleva a index2.php con el PHPSESSID en la URL, el problema es que el link a Logout no me muestra el session_id(), alguna ayuda? Muchas gracias.
  #2 (permalink)  
Antiguo 18/08/2007, 14:47
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Problema con sesiones y con SID

Creo que al destruir la sesion se vacian todos los datos, incluyendo el SID
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #3 (permalink)  
Antiguo 18/08/2007, 14:50
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema con sesiones y con SID

Pero el session destroy y el unset estan dentro del if, el cual no se cumple cuando logeo ya que solo me lleva a index2.php?SID y no a index2.php?action=logout&SID
  #4 (permalink)  
Antiguo 18/08/2007, 15:05
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Problema con sesiones y con SID

Te falta iniciar la sesion en el index2:

$login->Start();
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #5 (permalink)  
Antiguo 18/08/2007, 15:14
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema con sesiones y con SID

Primero que todo gracias por responder.

El metodo Start que implemente me actualiza la db poniendo la fecha de ingreso y la ip. Pero no tengo que hacerlo en todas las secciones. $login es un objeto que esta solo en index.php, no lo paso a index2.php, lo que si tiene que estar en todas las secciones es el session_start(), el cual si esta en el index2.php sse cumpla o no la condicion del Logout.
Sigo sin poder solucionarlo =(
  #6 (permalink)  
Antiguo 18/08/2007, 15:22
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Problema con sesiones y con SID

De nada por la respuesta ;) Aqui en foros del web aprendo y enseño ;) es casi un deber para mi intentar responder a algo, despues de todo lo que he aprendido.

Volviendo al tema:

Te dije lo $login->start();

por que vi que session_start(); estaba en ese metodo. Realmente solo necesitas eso, iniciar la sesion, porque si no no podras obtener el SID.

Fijate en el else:
Código PHP:
if($_REQUEST['username'])
{
    
$login = new Login($_REQUEST['username'],$_REQUEST['password']);
    if(
$login->Auth())
    {
        
$login->Start();
        
header("Location: index2.php?".SID);
    }
    else
    {
        
# AQUI FALTA session_start();
        
header("Location: error.php");
    }

__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #7 (permalink)  
Antiguo 18/08/2007, 15:29
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema con sesiones y con SID

Claro, alli me falta un session_start() pero por el momento no lo necesito, el problema esta en el logueo correcto, que me lleva al index2.php que SI tiene el session_start(), simplemente tiene que estar en todos los scripts en la primera linea y esta no es la excepcion.
  #8 (permalink)  
Antiguo 18/08/2007, 15:36
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Problema con sesiones y con SID

Umn prueba a cambiar:

<a href="index2.php?action=logout&<?=SID?>">Logout</a>

por

<a href="index2.php?action=logout&<?=session_id();?>" >Logout</a>
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #9 (permalink)  
Antiguo 18/08/2007, 15:40
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema con sesiones y con SID

Okay. Hice eso, no hay problema, me muestra bien el session_id() en la URL, pero no seria la idea tener que poner en todos los links PHPSESSID=session_id() cuando se puede poner SID.
Osea es problema de esa sentencia integramente, como podre solucionarlo?
  #10 (permalink)  
Antiguo 18/08/2007, 15:43
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Problema con sesiones y con SID

No me considero experto, mas bien tengo un nivel medio (incluso bajo si consideramos todo el mundo de PHP) asi que creo que deberias esperar otras respuestas, a ver si te solucionan el problema.

Siento no poder seguir ayudandote, pero no tengo mas respuestas.
Por mi parte seguire el tema por si puedo ayudar en algo mas o incluso aprender ;)

Un saludo.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #11 (permalink)  
Antiguo 18/08/2007, 15:50
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema con sesiones y con SID

Gracias por el esfuerzo.
No se me habia ocurrido testear la sintaxis del script y lo que supuse, me arrojo 2 errores tipicos en el index2.php

Warning: session_start(): Cannot send session cookie - headers already sent in .....\index2.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent in .....\index2.php on line 2
  #12 (permalink)  
Antiguo 18/08/2007, 15:54
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Problema con sesiones y con SID

Umn, en tal caso, lo que esta pasando ya sabes lo que es ;). Parece ser que se envian los encabezados antes de iniciar la sesion.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #13 (permalink)  
Antiguo 18/08/2007, 17:15
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema con sesiones y con SID

Cielos comienzo a cabrearme, segun estuve probando el problema es solo porque el php no me quiere. Cree un archivo php nuevo lo guarde en una carpeta vacia donde no interfiriera con nada, el script es el siguiente:

lalala.php
Código PHP:
<? session_start();?>
lalala.php
Código PHP:
<?session_start();?>
lalala.php
Código PHP:
<?php
session_start
();
?>
lalala.php
Código PHP:
<?
session_start
();
?>
No hay absolutamente nada mas en el script, el problema es que me arroja el problema del session start, cannot send headers y demas. Estoy ya me cabrea :(
  #14 (permalink)  
Antiguo 18/08/2007, 17:49
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema con sesiones y con SID

Listo problema resuelto. Ya que estaba propagando el session_id() por URL deshabilite en el php.ini la propagacion por cookie, y ademas habilite la opcion que agrega a los links relativos el SID, el unico problema es que el SID me lo agrega solito a los <a href> y no a los header("Location"), pero no importa.
Gracias shakaran por la cooperacion.
  #15 (permalink)  
Antiguo 19/08/2007, 05:59
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Problema con sesiones y con SID

Me alegra que lo hayas solucionado ;)
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
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 09:23.