PHP 8.5.0 Released!

Cookies

PHP unterstützt HTTP-Cookies. Hierbei handelt es sich um einen Mechanismus, um Informationen beim Client zu speichern und somit wiederkehrende Besucher zu identifizieren oder ihren Weg innerhalb des Angebotes nachzuvollziehen. Cookies können durch die Funktionen setcookie() und setrawcookie() gesetzt werden. Sie sind Bestandteil des HTTP-Headers, was bedeutet, dass die Funktion setcookie() aufgerufen werden muss, bevor irgendeine Ausgabe an den Browser erfolgt. Dies ist die gleiche Einschränkung, der auch die Funktion header() unterliegt. Sie können die Funktionen zur Ausgabesteuerung verwenden, um die Ausgaben des Skriptes zu verzögern, bis entschieden ist, ob Cookies gesetzt bzw. Header gesendet werden sollen oder nicht.

Vom Client gesendete Cookies werden automatisch im auto-globalen Array $_COOKIE abgelegt, wenn die variables_order-Konfigurationsvariable den Kennbuchstaben "C" enthält. Sollen einem Cookie mehrere Werte zugewiesen werden, so muss dem Cookienamen lediglich [] angefügt werden.

Weitere Informationen sowie Anmerkungen zu Browser-Bugs finden Sie in den Abschnitten setcookie() und setrawcookie().

add a note

User Contributed Notes 2 notes

up
1
twitchpaulo44 at gmail dot com
2 days ago
<?php
$pseudo = '';
$password = '';
if (!empty($_COOKIE['pseudo'])) {
    $pseudo = $_COOKIE['pseudo'];
}
if (!empty($_COOKIE['password'])) {
    $password = $_COOKIE['password'];
}
?>
<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Formulaire persistant</title>
</head>
<body>
  <form action="authentificate.php" method="post">
    <div>
      <label for="pseudo">Nom</label><br>
      <input type="text" id="pseudo" name="pseudo" value="<?php echo htmlentities($pseudo); ?>" required>
    </div>
    <div>
      <label for="password">Mot de passe</label><br>
      <input type="password" id="password" name="password" value="<?php echo htmlentities($password); ?>" required>
      <?php if (!empty($_GET['retry'])): ?>
        <p style="color: red;">Nom ou mot de passe incorrect</p>
      <?php endif; ?>
    </div>
    <div>
      <button type="submit">Se connecter</button>
    </div>
  </form>
</body>
</html>

<?php

$pseudo   = $_POST['pseudo']   ?? '';
$password = $_POST['password'] ?? '';

$users = array(
    "jojo" => array("password" => "pass1",    "status" => "administrator"),
    "raoul" => array("password" => "pass2", "status" => "visitor"),
    "roméo" => array("password" => "pass3", "status" => "customer"),
);

function authenticate(string $pseudo, string $password, array $users): bool {
    if ($pseudo === '' || $password === '') {
        return false;
    }
    if (!isset($users[$pseudo])) {
        return false;
    }
    return $users[$pseudo]['password'] === $password;
}

if (!authenticate($pseudo, $password, $users)) {
    header('Location: persistent_form.php?retry=1');
    exit();
}

setcookie(name: "pseudo", value: $pseudo);
setcookie(name: "password", value: $password);

session_start();
$_SESSION['pseudo'] = $pseudo;
$_SESSION['status'] = $users[$pseudo]['status'];
header('Location: site.php');
?>

<?php
session_start();
$pseudo = $_SESSION['pseudo'] ?? 'Guest';
$status = $_SESSION['status'] ?? 'unknown';
if ($status === 'customer') {
    echo htmlentities($pseudo);
    echo "<br>";
    echo "<br>";
    echo "consulter, acheter";
} else if ($status === 'administrator') {
    echo htmlentities($pseudo);
    echo "<br>";
    echo "<br>";
    echo "consulter, acheter, administrer";
} else if ($status === 'visitor') {
    echo htmlentities($pseudo);
    echo "<br>";
    echo "<br>";
    echo "consulter";
} else {
    echo "acces refuse";
}
?>

<pre>
<?php
$keys = array_keys($_POST);  
foreach ($keys as $key) {
    echo $key . ' : ' . $_POST[$key];
    echo '<br>';
    echo '<br>';
}
?>
</pre>
up
-1
twitchpaulo44 at gmail dot com
2 days ago
<?php
$pseudo = '';
$password = '';
if (!empty($_COOKIE['pseudo'])) {
    $pseudo = $_COOKIE['pseudo'];
}
if (!empty($_COOKIE['password'])) {
    $password = $_COOKIE['password'];
}
?>
<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Formulaire persistant</title>
</head>
<body>
  <form action="authentificate.php" method="post">
    <div>
      <label for="pseudo">Nom</label><br>
      <input type="text" id="pseudo" name="pseudo" value="<?php echo htmlentities($pseudo); ?>" required>
    </div>
    <div>
      <label for="password">Mot de passe</label><br>
      <input type="password" id="password" name="password" value="<?php echo htmlentities($password); ?>" required>
      <?php if (!empty($_GET['retry'])): ?>
        <p style="color: red;">Nom ou mot de passe incorrect</p>
      <?php endif; ?>
    </div>
    <div>
      <button type="submit">Se connecter</button>
    </div>
  </form>
</body>
</html>

<?php

$pseudo   = $_POST['pseudo']   ?? '';
$password = $_POST['password'] ?? '';

$users = array(
    "jojo" => array("password" => "pass1",    "status" => "administrator"),
    "raoul" => array("password" => "pass2", "status" => "visitor"),
    "roméo" => array("password" => "pass3", "status" => "customer"),
);

function authenticate(string $pseudo, string $password, array $users): bool {
    if ($pseudo === '' || $password === '') {
        return false;
    }
    if (!isset($users[$pseudo])) {
        return false;
    }
    return $users[$pseudo]['password'] === $password;
}

if (!authenticate($pseudo, $password, $users)) {
    header('Location: persistent_form.php?retry=1');
    exit();
}

setcookie(name: "pseudo", value: $pseudo);
setcookie(name: "password", value: $password);

session_start();
$_SESSION['pseudo'] = $pseudo;
$_SESSION['status'] = $users[$pseudo]['status'];
header('Location: site.php');
?>

<?php
session_start();
$pseudo = $_SESSION['pseudo'] ?? 'Guest';
$status = $_SESSION['status'] ?? 'unknown';
if ($status === 'customer') {
    echo htmlentities($pseudo);
    echo "<br>";
    echo "<br>";
    echo "consulter, acheter";
} else if ($status === 'administrator') {
    echo htmlentities($pseudo);
    echo "<br>";
    echo "<br>";
    echo "consulter, acheter, administrer";
} else if ($status === 'visitor') {
    echo htmlentities($pseudo);
    echo "<br>";
    echo "<br>";
    echo "consulter";
} else {
    echo "acces refuse";
}
?>

<pre>
<?php
$keys = array_keys($_POST);  
foreach ($keys as $key) {
    echo $key . ' : ' . $_POST[$key];
    echo '<br>';
    echo '<br>';
}
?>
</pre>
To Top