Inicio de La Sesi n en PHP Con Session

5
Inicio de la sesión en PHP con session_start Definición de la función PHP session_start La función PHP session_start crea una sesión o reanuda la actual basada en un idenficador de sesión pasado mediante una peción GET o POST, o pasado mediante una cookie. Para usar una sesión nominada hay que ulizar la función session_name antes de llamar a session_start. Cuando session.use_trans_sid está habilidado, la función session_start registrará un gestor de salida interno para la reescritura de la URL. Si un usuario uliza 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 sesión. Cómo usar session_start en nuestro sitio web En todas las páginas de nuestro sio web donde necesitemos usar algún dato del usuario que ha iniciado sesión o mostrar alguna opción especial para el usuario deberemos añadir el siguiente código, siempre al principio del fichero (antes de cualquier equeta HTML de la página): <? session_start(); ?> Con el procedimiento "session_start()" iniciaremos la sesión, si ya está iniciada no hará nada. Registrar una variable de sesión, establecer un valor para una variable de sesión en PHP Para registrar una variable de sesión en versiones anteriores de PHP, se usaba la función session_register, aunque esta función no es aconsejada pues está obsoleta, a parr de PHP 5.3.0. Para registrar una variable de sesión y establecer un valor usaremos $_SESSION["nombre_varaable"]. En el siguiente ejemplo, registramos y establecemos el valor para las variables de sesión nombre_cliente y nombre_usuario: $sql = "SELECT u.usuario, u.contrasena, u.idcliente, c.nombre cliente " . " FROM usuario u, cliente c ". " WHERE c.id=u.idcliente and usuario='" . $txtusuario . "'"; $sqlResultado = mysql_query($sql); $row = mysql_fetch_array($sqlResultado); $contrasena = $row["contrasena"]; $idcliente = $row["idcliente"]; if ($contrasena == md5($txtcontrasena)) {//establecermos las variables de sesión

description

Aqui se detalla un `pequeno resumen de como realizar un inicio de secion en php y diferentes metodologiassdsdmf xkc kd cksjnskdjfnosdlfknksdncklxcn,mzx c,mx m,dfnskdjfnksdlcnzxm,c,xmzcnksdjfnjksefnkjibnvjkcmvxm,cvn,zxnlskDALOsjdiowejrieowhfiowefhsdknfvklsdnvklsdnvklsdnvlksdnvlsdknlfsdfdfs

Transcript of Inicio de La Sesi n en PHP Con Session

  • Inicio de la sesin en PHP con session_start

    Definicin de la funcin PHP session_startLa funcin PHP 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.

    Para usar una sesin nominada hay que utilizar la funcin 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 la 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.

    Cmo usar session_start en nuestro sitio webEn todas las pginas de nuestro sitio web donde necesitemos usar algn dato del usuario que ha iniciado sesin o mostrar alguna opcin especial para el usuario deberemos aadir el siguiente cdigo, siempre al principio del fichero (antes de cualquier etiqueta HTML de la pgina):

    Con el procedimiento "session_start()" iniciaremos la sesin, si ya est iniciada no har nada.

    Registrar una variable de sesin, establecer un valor para una variable de sesin en PHPPara registrar una variable de sesin en versiones anteriores de PHP, se usaba la funcin session_register, aunque esta funcin no es aconsejada pues est obsoleta, a partir de PHP 5.3.0.

    Para registrar una variable de sesin y establecer un valor usaremos $_SESSION["nombre_varaable"]. En el siguiente ejemplo, registramos y establecemos el valor para las variables de sesin nombre_cliente y nombre_usuario:

    $sql = "SELECT u.usuario, u.contrasena, u.idcliente, c.nombre cliente " .

    " FROM usuario u, cliente c ".

    " WHERE c.id=u.idcliente and usuario='" . $txtusuario . "'";

    $sqlResultado = mysql_query($sql);

    $row = mysql_fetch_array($sqlResultado);

    $contrasena = $row["contrasena"];

    $idcliente = $row["idcliente"];

    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).

    Aadir un enlace para que el usuario pueda cerrar la sesin en cualquier momento

    Cuando el usuario ha iniciado sesin, siempre es recomendable aadir un enlace para que ste pueda cerrar la sesin en cualquier momento de forma segura. As evitaremos accesos indebidos por otros usuarios que usen el mismo equipo que el que inici sesin. En teora, siempre que se cierre el navegador web se cerrar la sesin automticamente, pero es aconsejable aadir este enlace para que el usuario decida cundo cerrar la sesin.

    Para aadir el enlace de "Cerrar sesin", podemos insertar el siguiente cdigo PHP donde queramos que aparezca el enlace:

    if (! empty($_SESSION["nombre_usuario"]))

    {echo "Bienvenid@" .

    $_SESSION["nombre_usuario"] . " (" . $_SESSION["nombre_cliente"] . ")"; }

    Explicamos el cdigo anterior:

    Con if (! empty($_SESSION["nombre_usuario"])) comprobamos si el usuario ha iniciado sesin, si lo ha hecho la variable de sesin nombre_usuario tendr un valor, por lo que se ejecutar el cdigo del if.

    Con el cdigo que hay dentro del if, lo nico que hacemos es mostrar algo as:

    Bienveni@ ajpdsoft (Proyecto AjpdSoft)

    Donde:

    "Bienveni@" ser un enlace a la pgina "cerrarsesion.php" que describiremos ms adelante.

    "ajpdsoft": ser el nombre de usuario que haya iniciado la sesin.

    "Proyecto AjpdSoft": ser el nombre del cliente que hayamos asignado al usuario.

  • Como ya hemos comentado, este cdigo PHP lo pondremos en todas las pginas de nuestro sitio web donde queramos que aparezca el enlace a cerrar sesin. Lo colocaremos, dentro de cada pgina, en el sitio donde queramos que aparezca. Puesto que PHP permite "mezclarse" con cdigo HTML no tendremos problema, por ejemplo:

    Fichero "cerrarsesion.php" para cerrar sesin en PHP con session_destroy

    Definicin de la funcin session_destroy de PHPdestruye toda la informacin asociada con la sesin actual. No destruye ninguna de las variables globales asociadas con la sesin, ni destruye la cookie de sesin. Para volver a utilizar las variables de sesin se debellamar a session_start().

    Para destruir la sesin completamente, como desconectar al usuario, el id de sesin tambin debe ser destruido. Si se usa una cookie para propagar el id de sesin (comportamiento por defecto), entonces la cookie de sesin se debe borrar. setcookie() se puede usar para eso.

    Uso de la funcin session_destroy para cerrar la sesin en PHPCrearemos un fichero de texto plano sin formato con el siguiente contenido, guardndolo con el nombre "cerrarsesion.php" y lo subiremos a nuestro sitio FTP:

    A continuacin explicamos cada lnea del fichero:

    session_start: funcin ya explicada ms arriba, puesto que la sesin ya est iniciada, no har nada.

  • unset($_SESSION["nombre_usuario"]) y unset($_SESSION["nombre_cliente"]): liberarn las variables de sesin registradas, en el ejemplo liberamos dos variables de sesin: nombre_usuario y nombre_cliente. Este mtodo es equivalente al mtodo ya obsoleto session_unregister (en desuso a partir de la versin 5.3.0 de PHP).

    session_destroy: libera la sesin actual, elimina cualquier dato de la sesin.

    header("Location: index.php"): tras liberar la sesin con los mtodos anteriores, esta lnea vuelve a mostrarla pgina "index.php" de nuestro sitio web.

    Nota 1: si tenemos muchas variables de sesin y queremos liberarlas todas podemos usar este cdigo PHP:

    $_SESSION = array();

    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"]);

    }

    Aviso importante sobre las sesiones en PHP aqu descritas

    Conviene dejar claro que el mtodo de sesiones explicado en este artculo no es el ms profesional y seguro. Existen muchas ms funciones para el tratamiento de las sesiones en PHP como son:

    session_cache_expire: devuelve la caducidad de la cach actual.

    session_cache_limiter: bbtener y/o establecer el limitador de cach actual.

    session_commit: alias de session_write_close.

    session_decode: decodifica la informacin de sesin desde una cadena.

    session_destroy: destruye toda la informacin registrada de una sesin.

    session_encode: codifica la informacin de la sesin actual como una cadena.

    session_get_cookie_params: obtener los parmetros de la cookie de sesin.

    session_id: obtener y/o establecer el id de sesin actual.

    session_is_registered: averiguar si una variable global est registrada en una sesin.

    session_module_name: obtiene y/o establece el mdulo de sesin actual.

  • session_name: obtener y/o establecer el nombre de la sesin actual.

    session_regenerate_id: actualiza el id de sesin actual con uno generado ms reciente.

    session_register: registrar una o ms variables globales con la sesin actual.

    session_save_path: obtener y/o establecer la ruta de almacenamiento de la sesin actual.

    session_set_cookie_params: establecer los parmetros de la cookie de sesin.

    session_set_save_handler: establece funciones de almacenamiento de sesiones a nivel de usuario.

    session_start: inicializar informacin de sesin.

    session_unregister: deja de registrar una variable global de la sesin actual.

    session_unset: libera todas las variables de sesin.

    session_write_close: escribir informacin de sesin y finalizar la sesin.

    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);

    Inicio de la sesin en PHP con session_startDefinicin de la funcin PHP session_startCmo usar session_start en nuestro sitio webRegistrar una variable de sesin, establecer un valor para una variable de sesin en PHPAadir un enlace para que el usuario pueda cerrar la sesin en cualquier momento

    Fichero "cerrarsesion.php" para cerrar sesin en PHP con session_destroyDefinicin de la funcin session_destroy de PHPUso de la funcin session_destroy para cerrar la sesin en PHP

    Aviso importante sobre las sesiones en PHP aqu descritas