Professional Documents
Culture Documents
Descripcin
bool session_start ([ array $options = [] ] )
session_start() crea una sesin o reanuda la actual basada en un identificador de sesin pasado
mediante una peticin GET o POST, o pasado mediante una cookie.
Cuando session_start() es llamada o cuando se autoinicia una sesin, PHP llamar a los gestores de
almacenamiento de sesiones open y read. stos sern un gestor de almacenamiento proporcionado
por omisin o por extensiones de PHP (como SQLite o Memcached); o pueden ser un gestor
personalizado como est definido en session_set_save_handler(). La llamada de retorno read
recuperar cualquier informacin se de sesin existente (almacenada en un formato serializado
especial) y ser deserializada y usada para rellenar automticamente la variable superglobal
$_SESSION cuando la llamada de retorno read devuelva la informacin de sesin guardada a la
gestin de sesiones de PHP.
Para usar una sesin nominada llame a session_name() antes de llamar a session_start().
Cuando session.use_trans_sid est habilidado, la funcin session_start() registrar un gestor de
salida interno para la reescritura de URL.
Si un usuario utiliza ob_gzhandler o similar con ob_start(), el orden de las funciones es importante
para la salida adecuada. Por ejemplo, ob_gzhandler se debe registrar antes de iniciar una sesin.
Parmetros
options
Valores devueltos
Esta funcin devuleve TRUE si una sesin fue iniciada satisfactoriamente, si no, devuelve FALSE.
Historial de cambios
Versin Descripcin
7.0.0 Se aadi el parmetro options.
5.3.0 Si una sesin falla al iniciarse, se devuelve FALSE. Anteriormente se devolva TRUE.
Versin Descripcin
A partir de PHP 4.3.3, llamar a session_start() despus de que una sesin estuviera
4.3.3 previamente iniciada resultaba en un error de nivel E_NOTICE. Tambin, el segundo
inicio de sesin se ignoraba simplemente.
Ejemplos
Un ejemplo de sesin bsico
Ejemplo #1 pagina1.php
<?php
// pagina1.php
session_start();
$_SESSION['color'] = 'verde';
$_SESSION['animal'] = 'gato';
$_SESSION['instante'] = time();
Ejemplo #2 pagina2.php
<?php
// pagina2.php
session_start();
Notas
Nota:
Para usar sesiones basadas en cookies, session_start() debe ser llamada antes de
imprimir cualquier cosa en el navegador.
Nota:
if ($contrasena == md5($txtcontrasena))
{
//establecermos las variables de sesin
$_SESSION["nombre_usuario"] = $row["usuario"];
$_SESSION["nombre_cliente"] = $row["cliente"];
...
El ejemplo anterior nos sirve tambin como mtodo para realizar el inicio de sesin (validacin) de
un usuario en nuestro sitio web, mostramos la consulta SQL que se ejecutar y la comprobacin de
si el usuario existe y si la contrasea introducida en el formulario (txtcontrasena) coincide con la
guardada en la base de datos (contrasena una vez obtenido su hash md5).
Nota: cuando el usuario se da de alta en nuestro sitio web, guardamos el hash (md5) de la
contrasea en la base de datos, usando la funcin de PHP: md5. Por ello, en el ejemplo anterior,
cuando mostramos al usuario el formulario para iniciar sesin y ste introduce su nick y su
contrasea, para comparar su contrasea con la de la base de datos, utilizamos nuevamente la
funcin de PHP md5, para comparar el hash md5 de la contrasea introducida por el usuario con el
guardado en la base de datos. Este mtodo es el idneo, as, ante cualquier acceso indebido a la
tabla de usuarios de nuestra base de datos, slo se mostrar en el campo "contrasena" el valor del
hash md5, nunca la contrasea del usuario y puesto que el hash md5 es unidireccional, de l no se
puede obtener la contrasea (en teora).
Donde:
<?
if (! empty($_SESSION["nombre_usuario"]))
{
echo "<a href="cerrarsesion.php" title="Cerrar
sesin">Bienvenid@</a>" .
$_SESSION["nombre_usuario"] . " (" .
$_SESSION["nombre_cliente"] . ")";
}
?>
Nota 2: si queremos eliminar todos los datos de las cookies guardadas podemos ejecutar este cdigo
PHP:
if (ini_get("session.use_cookies"))
{
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]);
}
Bien usadas todas estas funciones (o las necesarias) podrn dotar a nuestro sitio web de mayor
robustez y seguridad. Por supuesto, lo explicado aqu no es lo ms seguro pero s, tal vez, lo ms
sencillo de implementar.
Por ejemplo, podramos usar la funcin session_id para obtener el ID de sesin del usuario actual y
guardarlo en una tabla de una base de datos, de esta forma podramos saber cuntos usuarios han
iniciado sesin en nuestro sitio web, qu usuarios y en qu da y hora:
$session_id = session_id();
$sql = "INSERT INTO sesiones (user_id, session_id) VALUES ('" .
$userid . "', '" . $session_id . "')'";
$resultado_sql = mysql_query($sql);
http://php.net/manual/es/function.mysql-free-result.php
Uno de los elementos que se pueden utilizar es el uso de: sesiones php, mysql_fre_result
y mysql_fetch_array.
Sesiones php
Ejemplo:
<?php <?php
// pagina2.php
// pagina1.php
session_start();
session_start(); echo 'Bienvenido a la pgina #2<br />';
echo 'Bienvenido a la pgina #1';
echo $_SESSION['color']; // verde
$_SESSION['color'] = 'verde'; echo $_SESSION['animal']; // gato
echo date('Y m d H:i:s',
$_SESSION['animal'] = 'gato';
$_SESSION['instante']);
$_SESSION['instante'] = time();
echo '<br /><a
echo '<br /><a
href="pagina1.php">pgina 1</a>';
href="pagina2.php">pgina 2</a>'; ?>
?>
Figura 1. Pagina1.php Figura 2. Pagina2.php