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