Estoy aprendiendo PHP y recientemente me quedé atrapado tratando de aprender cookies. En otras palabras, hice exactamente lo mismo que el chico en el tutorial, pero de alguna manera no puedo hacer eco de las cookies en la condición if(isset()). Pero cuando hago clic en Cookies in use en Chrome, puedo ver claramente que la cookie se ha guardado.

Mi código:

<?php
$name = "Jozef";
$age = 100;
$duration = time() + (60*60*24*7);
setcookie($name, $age, $duration, '/');

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Trying cookies</title>
</head>
<body>
    <?php 
        if(!empty($_COOKIE['name'])){
            $newName = $_COOKIE['name'];
            echo $newName;
        }
        else{
            echo "<br>nope";
        }
    ?>
</body>
</html>

En la imagen a continuación, puede ver en el lado izquierdo, que la primera condición no se ejecutó, pero la segunda sí.

Picture showing that the cookie is already in use

0
Tchiggy 26 may. 2020 a las 15:26

3 respuestas

Sintaxis de cookies

setcookie(name, value, expire, path, domain, secure, httponly);

Probar este

<?php
$name = "user";
$value = "Samy_tech";
$duration = time() + (86400 * 30);
setcookie($name, $value, $duration, "/");

if(!isset($_COOKIE[$name])) {
  echo "Cookie named '" . $name . "' is not set!";
} else {
    echo "<pre>";
  echo "Cookie '" . $name . "' is set!<br>";
  echo "Value is: " . $_COOKIE[$name];
}
?>

Salida

Cookie 'user' is set!
Value is: Samy_tech

Nota: mediante este código, puede crear correctamente su cookie y leerla.

0
samy rwt 26 may. 2020 a las 12:44

Lo has implementado incorrectamente, mira el siguiente ejemplo

<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
  echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
  echo "Cookie '" . $cookie_name . "' is set!<br>";
  echo "Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>
1
Jatin Kaklotar 26 may. 2020 a las 12:31

Debe establecer el nombre de la cookie, no solo el valor:

setcookie('name', $name, $duration, '/');

En su segunda imagen tiene una cookie llamada 'Jozef'. Supongo que quería tener una cookie de 'nombre' con el valor 'Jozef'. ¿Derecha?

Solo entonces se definirá $_COOKIE['name'].

Espero que esto ayude.

Actualización:

Debe establecer el nombre y la edad por separado:

setcookie('name', $name, $duration, '/');
setcookie('age', $age, $duration, '/');
1
Romi Halasz 26 may. 2020 a las 12:33