Cookies در PHP

cookie 常用于识别用户。

什么是 Cookie?

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

如何创建 cookie?

setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 标签之前。

语法

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

例子

在下面的例子中,我们将创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期:

<?php 
setcookie("user", "Alex Porter", time()+3600);
?>
<html>
<body>
</body>
</html>

注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。

如何取回 Cookie 的值?

PHP 的 $_COOKIE 变量用于取回 cookie 的值。

在下面的例子中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:

<?php
// Print a cookie
echo $_COOKIE["user"];
// A way to view all cookies
print_r($_COOKIE);
?>

在下面的例子中,我们使用 isset() 函数来确认是否已设置了 cookie:

<html>
<body>
<?php
if (isset($_COOKIE["user"]))
  echo "Welcome " . $_COOKIE["user"] . "!
"; else echo "Welcome guest!
"; ?> </body> </html>

چگونه کوکی را حذف کنیم؟

هنگام حذف کوکی، باید تاریخ انقضا را به یک نقطه زمانی گذشته تغییر دهید.

مثال‌های حذف:

<?php 
// تنظیم تاریخ انقضا به یک ساعت پیش
setcookie("user", "", time()-3600);
?>

چه باید کرد اگر مرورگر کوکی‌ها را پشتیبانی نکند؟

اگر برنامه شما شامل مرورگرهایی است که پشتیبانی از کوکی‌ها را ندارند، شما باید روش دیگری برای انتقال اطلاعات از یک صفحه به صفحه دیگر در برنامه خود استفاده کنید. یک راه این است که داده‌ها را از فرم انتقال دهید (در مورد فرم و ورودی کاربر، ما قبلاً در این آموزش به آن‌ها اشاره کرده‌ایم).

فرم زیر در هنگام کلیک کاربر بر روی دکمه ارسال، ورودی کاربر را به "welcome.php" ارسال می‌کند:

<html>
<body>
<form action="welcome.php" method="post">
نام: <input type="text" name="name" />
سن: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

مقدارها را از "welcome.php" بازیابی کنید، مانند این:

<html>
<body>
خوش آمدید <?php echo $_POST["name"]; ?>.<br />
شما <?php echo $_POST["age"]; ?> ساله هستید.
</body>
</html>