sesiones manejo guardar eliminar ejemplos destruir datos cookie _cookie php session

manejo - ¿Cómo deshabilitar la cookie de sesión de PHP?



manejo de sesiones en php (6)

También puede poner esa configuración en .htaccess para que se aplique a todas las secuencias de comandos, de lo contrario, debe asegurarse de que se invoque el código en cada solicitud.

P.ej.

php_value session.use_cookies 0

Estoy escribiendo un código PHP en el que quiero pasar el ID de la sesión usando POST. No quiero una cookie para almacenar la sesión, ya que se perderá cuando el usuario salga del ciclo POST.

PHP establece automáticamente la cookie donde esté disponible. Aprendí que es posible cambiar este comportamiento estableciendo session.use_cookies en 0 en php.ini . Lamentablemente, no tengo acceso a ese archivo y tampoco me gustaría romper el comportamiento de otros scripts que se ejecutan en el mismo servidor.

¿Hay alguna manera de desactivar o anular la cookie de sesión dentro del script PHP?

EDITAR: Como las soluciones propuestas no funcionan para mí, utilicé $ _SESSION = array () en las posiciones en el código donde encontré que la sesión debe ser invalidada.


err es posible anular la configuración predeterminada de su host creando su propio archivo .htaccess y aquí hay un gran tutorial si aún no lo ha tocado http://www.askapache.com/htaccess/apache-htaccess.html

o si eres demasiado flojo para aprender, solo crea un archivo ".htaccess" (sí, ese es el nombre del archivo) en el directorio de tu sitio y coloca el siguiente código

SetEnv session.use_cookies=''0'';


La forma de hacerlo es configurar sesiones usted mismo.

En el archivo de inclusión central que incluyen todos sus otros archivos (usted tiene uno de esos, ¿no?), Necesita hacer algunas cosas tan pronto como sea posible.

if( !array_key_exists(''sessionid'', $_POST) ) { // recreate the sessionid $sessionid = md5(rand().'' ''.microtime()); // Or something } else { $sessionid = $_POST[''sessionid'']; session_id($sessionid); session_start();

Ahora debe recordar que tan pronto como inicie el formulario, debe incluir:

<input type=''hidden'' name=''sessionid''><?= session_id() ?></input>


Estaba teniendo problemas con el enfoque documentado de PHP para destruir una sesión con cookies.

// If it''s desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '''', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); }

Esto resultó en que vi la cookie establecer dos veces:

Set-Cookie: SESSION_NAME=deleted; expires=Sat, 08-Jan-2011 14:09:10 GMT; path=/; secure Set-Cookie: SESSION_NAME=1_4f09a3871d483; path=/

Tal como se documenta en los comentarios de PHP, establecer el valor de la cookie en algo que no sea vacío ('''') elimina el valor "eliminado", pero el segundo conjunto de cookies permanece.

Para deshacerme de eso, tuve que agregar el código sugerido arriba:

ini_set(''session.use_cookies'', ''0'');

No he buscado la fuente para el manejo de sesiones, pero mi suposición es que setcookie (...) está pasando por alto el módulo de sesiones, por lo que las sesiones no saben que lo llamé. Por lo tanto, es establecer una cookie predeterminada después de configurar una cookie eliminada.

Estaba probando en un Mac: PHP 5.3.6 con Suhosin-Patch (cli) (construido el 8 de septiembre de 2011 a las 19:34:00)


Si solo necesita poder desconectar una sesión en un momento dado, use session_destroy (). Si desea finalizar completamente la sesión, aquí hay una copia de fragmento / pegado directamente de la documentación:

// Initialize the session. // If you are using session_name("something"), don''t forget it now! session_start(); // Unset all of the session variables. $_SESSION = array(); // If it''s desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '''', time()-42000, ''/''); } // Finally, destroy the session. session_destroy();


Use ini_set () :

ini_set(''session.use_cookies'', ''0'');

O en su archivo php.ini:

session.use_cookies = 0