Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/06/2010, 14:57
shilen79
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 6 meses
Puntos: 11
Problema con sesiones personalizadas en manternerlas

Buenas noches compañeros:
Estoy intentanto profundizar en el tema de sesiones, y llevo dia y medio atascado en lo mismo y recurro a ustedes con el fin que pueda avanzar , porque nada mas acabo de empezar.

Estoy haciendo un gestor de noticias, el index saldría el formulario de login y ya acceden al menu con las diferentes opciones.

el index.php actual para pruebas es este:
Código PHP:
<?php 
include("../configuration.php");
include(
"languages/spanish.php");
require_once(
"classes/db.class.php");
require_once(
"classes/session.class.php");
?>
<head>
<link rel="stylesheet" type="text/css" href="css/admin.css">
</head>
<?php
$option
=(isset($_REQUEST['option'])) ? $_REQUEST['option'] : NULL
switch(
$option){
    case 
'menu':    require_once('modules/mod_menu/menu.php');
                    break;
    default:        require_once(
'modules/mod_login/login.php');
                    break;
}
?>
login.php
Código PHP:
<?php
global $pathway,$sess;
$user=(isset($_POST['username']) && $_POST['username']!='') ? $_POST['username'] : false;
$pass=(isset($_POST['passwd']) && $_POST['passwd']!='') ? $_POST['passwd'] : false;
if(
$user!=false || $pass!=false){
    global 
$host,$username,$passwd,$selected_db;
    
$db=new database;
    
$link=$db->connect($host,$username,$passwd,$selected_db);
    
$query=$db->select("SELECT username,passwd FROM users WHERE username='".$_POST['username']."' AND passwd='".$_POST['passwd']."'");
    if(
$db->num_rows($query)!=0){
        
$sess=new session($_POST['username']);
        
date_default_timezone_set('Europe/Madrid');  
        
$registerDate=$db->select("UPDATE users set lastVisitDate='".date('Y-m-j H:i:s')."' where username='".$_POST['username']."' ");
        
$session_db=$db->select("    
                                INSERT INTO session 
                                    (username, lastVisitDate, session_id, guest) 
                                VALUES 
                                    ('"
.$_POST['username']."', '".date('Y-m-j H:i:s')."', '".session_id()."', 'false') 
                                "
);
        
header('Location: index.php?option=menu');
}
}else{
?>
<div id="wrapper">
<div class="title">.... SIGUE EL FORMULARIO

menu.php
Código PHP:
<?php 
global $pathway;
session_start();
echo 
session_id();
?>

La db.class no hara falta ponerla puesto que no realizo nada con ella que no se pueda entender.

session.class.php ( en construccion)

Código PHP:
<?php 
class session{
    private 
$sess_name// contendrá el nombre de la sessión
    
public $reg=array(); 
    public 
$redirect='index.php';
    public 
$pending=2;
    
     function 
__construct($session_name){
        
$this->sess_name=$session_name;
        
session_name($this->sess_name);
        
session::start_session();
    } 

    public function 
start_session(){ 
        return 
session_start(); 
    } 

    public function 
get_session_id(){
        return 
session_id();
    }
    
    public function 
set_session_value($name,$value){
        
$_SESSION[$name]=$value;    
    }
    
    public function 
unset_default_session_value($name){
        unset(
$_SESSION[$name]);    
    }
        
// FINAL DE CLASE
?>


Despues de todo esto que ya asusta , el problema que tengo es simple y no lo entiendo:

La idea es que cuando llegues a menu.php ... si tu nombre de usuario es : "pepito", donde esta el
Código PHP:
echo session_id 
me mostraria el de
Código PHP:
$_SESSION['pepito'
, pero no! al llegar a menu y con el
Código PHP:
sesion_start() 
, me crea una sesion por defecto y me muestra ese session_id.Ahora si miro las cookies , si sale mi nombre de cookie pepito con su sid, justo antes de esta creada, es decir que creada esta.

Resumen: Como puedo mantener una sesión personalizada con
Código PHP:
sesion_name() 
.

Si quito el session_start(), obviamente no muestra