Bootstrap

数据库管理系统01-PHP Cookie 使用教程

PHP Cookie 使用教程

本教程基于详细讲解 如何设置、读取、删除 Cookie,以及如何使用 isset() 检查 Cookie 是否存在。


1. 设置 Cookie

使用 setcookie() 函数可以创建一个 Cookie。例如,下面的代码 创建了一个名为 user,值为 John Doe 的 Cookie,并设置其在 30 天后过期

示例代码

<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
// 86400 = 1 天,30 天后过期
?>
<html>
<body>
<?php
echo "Cookie is set.";
?>
</body>
</html>

说明

  • setcookie("user", "John Doe", time() + (86400 * 30), "/");
    • name: "user" 是 Cookie 的名称。
    • value: "John Doe" 是 Cookie 的值。
    • expire: time() + 86400 * 30 设置 30 天后过期。
    • path: "/" 代表 Cookie 可用于整个网站。

2. 读取 Cookie

Cookie 不会立即生效,它只能在下次请求时才能获取。如果你想读取 Cookie 值,可以使用 $_COOKIE 变量。

示例代码

<html>
<body>
<?php
$cookie_name = "user";
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' does not exist!";
} else {
    echo "Cookie is named: " . $cookie_name . "<br>Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>

说明

  • isset($_COOKIE["user"]) 检查 Cookie 是否存在。
  • $_COOKIE["user"] 访问 Cookie 值。
  • 如果 Cookie 不存在,则输出 "Cookie named 'user' does not exist!"
  • 如果 Cookie 存在,则输出 "Cookie is named: user Value is: John Doe"

3. 删除 Cookie

要删除 Cookie,需要 将其值设为空将过期时间设置为过去的时间,这样浏览器就会删除该 Cookie。

示例代码

<?php
$cookie_name = "user";
unset($_COOKIE[$cookie_name]); // 从 PHP 变量中移除(但不会删除浏览器的 Cookie)

// 让 Cookie 立即过期
setcookie($cookie_name, "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>

说明

  • unset($_COOKIE["user"]); 只是从 PHP 变量中移除该 Cookie,并不会真正删除浏览器中的 Cookie。
  • setcookie("user", "", time() - 3600); 使 Cookie 过期,浏览器将在下次请求时删除它。

4. 使用 isset() 检查 Cookie

可以使用 isset($_COOKIE["cookie_name"]) 来检查 Cookie 是否存在,并在 Cookie 存在时获取其值。

示例代码

<?php
setcookie("ID", "123", time() + 3600); // 1 小时后过期

if(!isset($_COOKIE['ID'])) { 
    echo "Cookie ID not exist!"; 
    die;
} else { 
    $login_id = $_COOKIE['ID']; 
    echo "Cookie ID is: " . $login_id;
} 

// 先删除 PHP 变量
unset($_COOKIE['ID']); 

// 让 Cookie 立即过期
setcookie('ID', '', time() - 3600); 
echo "<br>Cookie 'ID' is deleted.";
?>

说明

  • isset($_COOKIE['ID']) 检查 Cookie 是否存在:
    • 如果不存在,则输出 "Cookie ID not exist!" 并终止执行。
    • 如果存在,则读取其值 $_COOKIE['ID'] 并输出 "Cookie ID is: 123"
  • unset($_COOKIE['ID']); 只是从 PHP 变量中移除 Cookie,不会真正删除浏览器中的 Cookie。
  • setcookie('ID', '', time() - 3600); 让 Cookie 过期,浏览器将在下一次请求时删除它。

总结

操作代码
设置 Cookiesetcookie("user", "John Doe", time() + 86400 * 30, "/");
读取 Cookie$_COOKIE["user"]
检查 Cookie 是否存在isset($_COOKIE["user"])
删除 Cookie(让其过期)setcookie("user", "", time() - 3600);

这是一个用于练习的完整的 PHP 项目:用户登录系统(使用 Cookie)

这个项目是一个简单的 用户登录系统,利用 Cookie 来存储用户登录状态,并实现 设置、读取、删除 Cookie 的功能。


📌 项目功能

  1. login.php:用户登录(设置 Cookie)。
  2. welcome.php:读取 Cookie,欢迎已登录用户。
  3. logout.php:用户退出(删除 Cookie)。
  4. index.php:首页,显示用户是否已登录。

📁 项目结构

/php_cookie_login_system
│── index.php       # 首页
│── login.php       # 用户登录
│── welcome.php     # 欢迎页
│── logout.php      # 退出登录

📜 代码部分

1️⃣ index.php(首页)

<?php
// 检查用户是否已登录
if (isset($_COOKIE["user"])) {
    echo "Welcome back, " . $_COOKIE["user"] . "! <br>";
    echo "<a href='logout.php'>Logout</a>";
} else {
    echo "You are not logged in. <br>";
    echo "<a href='login.php'>Login</a>";
}
?>

📌 功能

  • 检查 $_COOKIE["user"] 是否存在,判断用户是否已登录。
  • 如果已登录,显示欢迎信息和 登出链接
  • 如果未登录,显示 登录链接

2️⃣ login.php(用户登录)

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    
    // 创建一个 1 天有效的 Cookie
    setcookie("user", $username, time() + 86400, "/");
    
    // 重定向到欢迎页面
    header("Location: welcome.php");
    exit();
}
?>
<html>
<body>
    <h2>Login</h2>
    <form method="post">
        Username: <input type="text" name="username" required>
        <input type="submit" value="Login">
    </form>
</body>
</html>

📌 功能

  • 获取用户输入的用户名 $_POST["username"]
  • 使用 setcookie("user", $username, time() + 86400, "/") 创建 有效期 1 天的 Cookie
  • 登录成功后,跳转到 welcome.php

3️⃣ welcome.php(欢迎页面,读取 Cookie)

<?php
if (isset($_COOKIE["user"])) {
    echo "Welcome, " . $_COOKIE["user"] . "! <br>";
    echo "<a href='logout.php'>Logout</a>";
} else {
    echo "You are not logged in. <br>";
    echo "<a href='login.php'>Login</a>";
}
?>

📌 功能

  • 读取 $_COOKIE["user"] 并显示欢迎信息。
  • 如果用户未登录,提示登录。

4️⃣ logout.php(退出登录,删除 Cookie)

<?php
// 删除 Cookie
setcookie("user", "", time() - 3600, "/");
unset($_COOKIE["user"]);

echo "You have been logged out. <br>";
echo "<a href='login.php'>Login again</a>";
?>

📌 功能

  • 使用 setcookie("user", "", time() - 3600, "/") 让 Cookie 过期。
  • 使用 unset($_COOKIE["user"]); 移除 PHP 变量。
  • 显示登出消息,并提供 重新登录的链接

🎯 如何运行这个项目

  1. 创建 PHP 服务器

    • 运行 PHP 内置服务器(确保 PHP 已安装):
      php -S localhost:8000
      
    • 在浏览器访问 http://localhost:8000/index.php
  2. 测试步骤

    1. 访问 index.php(未登录状态)。
    2. 进入 login.php,输入用户名并提交。
    3. 进入 welcome.php,会看到欢迎信息。
    4. 点击 logout.php 退出登录,回到 index.php 显示未登录。

🎯 关键功能总结

创建 Cookiesetcookie("user", $username, time() + 86400, "/");
读取 Cookie$_COOKIE["user"]
删除 Cookiesetcookie("user", "", time() - 3600, "/");
检查 Cookie 是否存在isset($_COOKIE["user"])

;