sesiones manejo guardar ejemplos ejemplo datos crear aviso _cookie php cookies

manejo - php cookie no funciona en la primera lectura



manejo de sesiones en php ejemplo (3)

Soy un principiante para PHP y estudio para usar cookies para iniciar sesión. ¿Algún cuerpo podría verificar mi código para ver cuál es mi problema, o dejarme cómo solucionar este problema?

Cuando abro la página la primera vez, la cookie no funciona. Funcionará cuando repuse para abrir ese enlace. Sin embargo, todavía no pude hacer que funcione después de usar función include y encabezado Uno de los códigos es:

Un código cookie.php es:

<?php setcookie("cookiename",$_REQUEST[''name'']); if(isset($_COOKIE[''cookiename''])){ $cookieSet = '' The Cookie is '' . $_COOKIE[''cookiename'']; } else { $cookieset = '' No Cookie has been set''; } setcookie("cookiepwd",$_REQUEST[''pwd'']); print_r($_COOKIE); ?>

Cuando ejecuto este código por primera vez, no muestra nada. Puedo ver datos de cookies por segunda vez. Desde algún sitio web se dice que las cookies no se leerán en la misma página.

Así que moví print_r ($ _ COOKIE) al segundo archivo php, así como también agregué la función include () o header () al archivo anterior, pero ninguno de los dos funciona.

Cookie2.php:

<?php setcookie("cookiename",$_REQUEST[''name'']); if(isset($_COOKIE[''cookiename''])){ $cookieSet = '' The Cookie is '' . $_COOKIE[''cookiename'']; } else { $cookieset = '' No Cookie has been set''; } setcookie("cookiepwd",$_REQUEST[''pwd'']); include(‘printcookie.php’); //or header("Location: printcookie.php") ?>

printcookie.php:

<?php print_r($_COOKIE); ?>

¡Muchas gracias por responder con anticipación!

Michelle


Como solución, puede usar la ubicación () después de verificar que la cookie tenga acceso a los datos almacenados.

Pero tenga en cuenta que la ubicación () falla, si algo (incluso roturas y espacios en blanco en su secuencia de comandos) ya se envió al navegador.


Dale a zerkms la respuesta, pero solo quiero reiterar:

  1. Las cookies no son malas para almacenar fragmentos de información como las preferencias de tema del usuario o la página de inicio preferida, etc. Obtienen que su mala reputación se use para el manejo de identidad y autenticación. Hay cookies que básicamente tienen "isAdmin = 0" para controlar el acceso del usuario. Es muy fácil cambiar eso a isAdmin=1 y tener un día de campo. Como usted es nuevo en PHP, tómese el tiempo para aprender acerca de las sesiones ahora, mientras es nuevo para usted.

  2. Cuando configura una cookie utilizando setcookie , está enviando un encabezado HTTP al navegador con la información de la cookie. El navegador luego devolverá esa cookie en cualquier solicitud futura al servidor. La variable global $_COOKIE contiene la información de la cookie pasada desde el navegador al servidor.

  3. Como está utilizando $_REQUEST para obtener el nombre de la cookie, no necesita verificar la cookie (de lo contrario, no tendría los datos para configurarla correctamente). Así que considere seguir esta ruta:

    if(!isset($_COOKIE[''cookiename''])) { $name = $_POST[''name'']); setcookie("cookiename",$name); } else { $name = $_COOKIE[''cookiename'']); } echo "Welcome back $name!";

Esto también ayudará si eliminan las cookies, etc.

Pero realmente, la ruta más segura es:

session_start(); if(!isset($_SESSION[''name''])){ $_SESSION[''name''] = $_POST[''name'']); } if(!isset($_SESSION[''pwd''])){ $_SESSION[''pwd''] = $_POST[''pwd'']); } $name = $_SESSION[''name'']; $pwd = $_SESSION[''pwd''];

E incluso esto sería desaconsejable para la seguridad web seria, donde simplemente debe verificar la contraseña contra un hash almacenado y luego eliminarlo, utilizando otras variables globales para confirmar la integridad de la sesión. Pero ahora hay un StackExchange completo para eso.


setcookie solo configura el encabezado, que se está enviando al cliente. No cambia el $_COOKIE _COOKIE.

Por otro lado, $_COOKIE se llena con las cookies enviadas por el cliente

Entonces, en el primer paso: configura la cookie con setcookie y no tiene nada en $_COOKIE porque el cliente aún no la ha enviado, y solo lo hará en la próxima solicitud.

Y no hay forma de hacer lo que quiera, en lugar de modificar $_COOKIE manualmente

PD: es una mala idea poner la contraseña del usuario en la cookie