
在本指南中,我們將探索使用 cookie 存儲(chǔ)用戶數(shù)據(jù)的 PHP 表單處理。 Cookie 是一種在用戶瀏覽器上保存少量數(shù)據(jù)的方法,可以在不同會(huì)話中記住用戶偏好或信息。
我們的項(xiàng)目涉及創(chuàng)建一個(gè)表單,用戶可以在其中輸入信息,將提交的數(shù)據(jù)存儲(chǔ)在 cookie 中,然后查看或刪除 cookie 數(shù)據(jù)。在本教程結(jié)束時(shí),您將了解如何在 PHP 中設(shè)置、檢索和刪除 cookie。
什么是 Cookie?
Cookie 是存儲(chǔ)在用戶瀏覽器上的小文件。它們?cè)试S網(wǎng)絡(luò)服務(wù)器存儲(chǔ)特定于用戶的數(shù)據(jù)并在后續(xù)訪問時(shí)檢索它。在 PHP 中,您可以使用 setcookie() 函數(shù)來創(chuàng)建或更新 cookie,并使用 $_COOKIE 超全局變量來讀取它們。
項(xiàng)目:帶有 Cookie 處理的 PHP 表單
我們將創(chuàng)建一個(gè)簡單的應(yīng)用程序:
- 允許用戶通過表單提交信息。
- 將提交的數(shù)據(jù)存儲(chǔ)在cookie中。
- 顯示存儲(chǔ)的cookie數(shù)據(jù)。
- 提供刪除 cookie 的選項(xiàng)。
文件結(jié)構(gòu)
我們的項(xiàng)目包含以下文件:
project-folder/
│
├── index.php # Form page
├── submit.php # Form handling and cookie storage
├── view_cookie.php # Viewing cookie data
├── delete_cookie.php # Deleting cookie data
第 1 步:創(chuàng)建表單 (index.php)
index.php 文件包含用于用戶輸入的 HTML 表單,以及用于查看或刪除 cookie 數(shù)據(jù)的按鈕。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP Form with Cookie Handling</title>
</head>
<body>
<h1>Submit Your Information</h1>
<!-- Form Section for User Input -->
<form method="get" action="submit.php">
<label for="name">Name:</label><br>
<input type="text">
<hr>
<h3>
Step 2: Handling Form Submission (submit.php)
</h3>
<p>The submit.php file processes the form data, validates and sanitizes it, and then stores it in cookies.<br>
</p>
<pre class="brush:php;toolbar:false"><?php
// Initialize error messages and data variables
$error_name = "";
$error_age = "";
$error_email = "";
$error_website = "";
$name = $age = $email = $website = $gender = $comments = $hobbies = "";
// Sanitize and validate the form data
if ($_SERVER["REQUEST_METHOD"] == "GET") {
// Sanitize inputs
$name = htmlspecialchars(trim($_GET['name']));
$age = htmlspecialchars(trim($_GET['age']));
$email = htmlspecialchars(trim($_GET['email']));
$website = htmlspecialchars(trim($_GET['website']));
$gender = isset($_GET['gender']) ? $_GET['gender'] : '';
$hobbies = isset($_GET['hobbies']) ? $_GET['hobbies'] : [];
$comments = htmlspecialchars(trim($_GET['comments']));
// Validation checks
if (empty($name)) {
$error_name = "Name is required.";
}
if (empty($age) || !filter_var($age, FILTER_VALIDATE_INT) || $age <= 0) {
$error_age = "Valid age is required.";
}
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error_email = "Valid email is required.";
}
if (empty($website) || !filter_var($website, FILTER_VALIDATE_URL)) {
$error_website = "Valid website URL is required.";
}
// If no errors, set cookies
if (empty($error_name) && empty($error_age) && empty($error_email) && empty($error_website)) {
// Set cookies for the form data
setcookie("name", $name, time() + (86400 * 30), "/");
setcookie("age", $age, time() + (86400 * 30), "/");
setcookie("email", $email, time() + (86400 * 30), "/");
setcookie("website", $website, time() + (86400 * 30), "/");
setcookie("gender", $gender, time() + (86400 * 30), "/");
setcookie("hobbies", implode(", ", $hobbies), time() + (86400 * 30), "/");
setcookie("comments", $comments, time() + (86400 * 30), "/");
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form Submission Result</title>
</head>
<body>
<h1>Form Submission Result</h1>
<!-- Show Errors if any -->
<?php
if ($error_name) {
echo "<p>
<hr>
<h3>
Step 3: Viewing Cookie Data (view_cookie.php)
</h3>
<p>This file displays the cookie data stored on the user's browser.<br>
</p>
<pre class="brush:php;toolbar:false"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>View Cookie Data</title>
</head>
<body>
<h1>View Stored Cookie Data</h1>
<?php
if (isset($_COOKIE['name'])) {
echo "<p><strong>Name:</strong> " . $_COOKIE['name'] . "</p>";
echo "<p><strong>Age:</strong> " . $_COOKIE['age'] . "</p>";
echo "<p><strong>Email:</strong> " . $_COOKIE['email'] . "</p>";
echo "<p><strong>Website:</strong> <a href='" . $_COOKIE['website'] . "' target='_blank'>" . $_COOKIE['website'] . "</a></p>";
echo "<p><strong>Gender:</strong> " . $_COOKIE['gender'] . "</p>";
echo "<p><strong>Hobbies:</strong> " . $_COOKIE['hobbies'] . "</p>";
echo "<p><strong>Comments:</strong> " . $_COOKIE['comments'] . "</p>";
} else {
echo "<p>No cookie data found!</p>";
}
?>
<br><br>
<a href="index.php">Go Back</a>
</body>
</html>
步驟 4:刪除 Cookie 數(shù)據(jù) (delete_cookie.php)
此文件通過將 Cookie 的過期時(shí)間設(shè)置為過去來刪除 Cookie。
<?php
// Deleting cookies by setting their expiration time to past
setcookie("name", "", time() - 3600, "/");
setcookie("age", "", time() - 3600, "/");
setcookie("email", "", time() - 3600, "/");
setcookie("website", "", time() - 3600, "/");
setcookie("gender", "", time() - 3600, "/");
setcookie("hobbies", "", time() - 3600, "/");
setcookie("comments", "", time() - 3600, "/");
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cookie Deleted</title>
</head>
<body>
<h1>Cookies Deleted</h1>
<p>All cookies have been deleted successfully.</p>
<br><br>
<a href="index.php">Go Back</a>
</body>
</html>
結(jié)論
該項(xiàng)目演示了如何在 PHP 中使用 cookie 進(jìn)行表單處理。通過實(shí)施 cookie,您可以保留用戶數(shù)據(jù)并改進(jìn) Web 應(yīng)用程序的功能。嘗試此項(xiàng)目并探索 PHP 中 cookie 的更高級(jí)用例。
編碼愉快! ?
以上是使用 Cookie 處理 PHP 表單的初學(xué)者指南的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!