Programación con PHP 5 – 5.6 Cookies

Las cookies son framentos de información que son almacenados en un browser. Es el servidor el encargado de enviar al browser los datos que almacenará.
Específicamente es una secuencia de comandos (un script) el que envía una cabecera HTTP con el sgte formato :

Set-Cookie: NOMBRE=VALOR; [expires=fecha;] [path=ruta;] [domain=NOMBRE_DOMINIO;] [secure]

De esta forma se crea y almacena una cookie con el nombre NOMBRE y con el valor VALOR. El resto de parámetros son opcionales. El campo expires establece la fecha hasta la que será válida la cookie (si no se establece una fecha de caducidad la cookie estará permanente hasta que la eliminemos manualmente o se cierre el cliente) , no importando si se cierra el cliente e incluso se apaga la PC. path y domain se pueden utilizar de manera conjunta para especificar el o los URL para los que se utiliza la cookie. La palabra clave secure significa que la cookie no será enviada por una conexión HTTP.

Configurar cookies desde PHP
Se puede hacer con la función
setcookie ( name , value , expire , path, domain , secure )

Los parámetros se corresponden con los del encabezado Set-Cookie y una vez almacenada la cookie podemos acceder mediante :
– $_COOKIE[‘mycookie’]
– $HTTP_COOKIE_VARS[‘mycookie’]
– $mycookie (si se tiene activado register_globals)

Tambien se puede definir manualmente una cookie con la función header() con la sintaxis de setcookie.
Es necesario enviar los encabezados de cookie antes que ningún otro encabezado.

Ejemplo

<?php
ob_start();
?>
<html>
    <head><title>Login</title></head>
    <body>
<?php
if (isset($_POST['login']) && ($_POST['login'] == 'Log in') &&
        ($uid = check_auth($_POST['email'], $_POST['password']))) {
    /* User successfully logged in, setting cookie */
    setcookie('uid', $uid, time() + 14400, '/');
    header('Location: http://kossu/crap/0x-examples/index.php');
    exit();
} else {
    ?>
            <h1>Log-in</h1>
            <form method="post" action="login.php">
                <table>
                    <tr><td>E-mail address:</td>
                        <td><input type='text' name='email'/></td></tr>
                    <tr><td>Password:</td>
                        <td><input type='password' name='password'/></td></tr>
                    <tr><td colspan='2'>
                            <input type='submit' name='login' value='Log in'/></td>
                    </tr>
                </table>
            </form>
    <?php
}
?>
    </body>

Esta parte se puede manejar con la función ob_start(), que significa iniciar output buffer, que permite que se envíe cookies o cualquier otra cabecera despues que has enviado datos.
La llamada a esta función debe estar en la primera linea del script PHP, en este ejemplo esta en la línea 2.
Sin esta llamada a ob_start() la salida hacia el browser podria comenzar con la linea del script, haciendo imposible enviar otras cabeceras y resultando en el sgte error cuando se intente adicionar otra cabecera (con setcookie o header ).

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s