php中setcookie函数

在PHP中,setcookie函数是一种常用的用来设置和发送HTTP Cookie的函数。每个HTTP cookie都是一小段数据,当我们向浏览器发送HTTP响应时,可以通过设置cookie来通知浏览器在浏览器中存储这些数据。本文将详细介绍setcookie函数的使用方式,包括语法、参数和常见应用场景。

## 语法

setcookie函数的基本语法如下:

```

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = FALSE [, bool $httponly = FALSE ]]]]]] )

```

其中,参数说明如下:

- name:必需,表示cookie的名称,用于标识cookie。

- value:可选,表示cookie的值,可以是任意数据类型。

- expire:可选,表示cookie的过期时间,用整数表示距离当前时间的秒数。如果为0,则表示当浏览器关闭时cookie会过期。

- path:可选,表示cookie在服务器上可用的路径。默认情况下,cookie在服务器的根目录上可用(/)。

- domain:可选,表示cookie所在的域名。浏览器只会发送该域名的cookie。

- secure:可选,表示该cookie只有在通过SSL或HTTPS的加密连接时才会发送。

- httponly:可选,表示该cookie只能通过HTTP或HTTPS协议发送,禁止js读取cookie。

需要注意的是,setcookie函数必须在发送任何其他的内容之前调用,因为它会在HTTP头中发送cookie信息。否则,可能会导致错误。

## 简单应用

假设我们要创建一个cookie以便记录用户的姓名和年龄,可以使用如下代码:

```

setcookie("username", "Mike");

setcookie("age", 20, time()+3600*24*365);

```

在上述代码中,我们首先创建了一个名称为username的cookie,并将其值设置为Mike(注意,这里只设置了cookie的名字和值,其他参数均采用默认值)。然后,我们创建了一个名称为age的cookie,并将其值设置为20。同时,我们还将expire参数设置为一年后,这意味着该cookie将在一年后过期。

可以使用$_COOKIE变量来访问从浏览器传递回来的cookie。例如:

```

echo $_COOKIE["username"]; // 输出Mike

echo $_COOKIE["age"]; // 输出20

```

在上述代码中,我们通过$_COOKIE变量来访问cookie,并将其输出到屏幕上。

## 实现记住密码

setcookie函数还可以用来实现“记住密码”的功能。在用户首次登录时,我们可以将其用户名和密码存储到cookie中,并设置过期时间。下次用户登录时,我们可以先检查cookie中是否存在用户名和密码。如果存在,直接将其填写到登录表单中,免除用户再次输入的麻烦。

具体实现方式如下(假设登录表单中的用户名为username,密码为password):

```

if (isset($_POST["submit"])) {

// 用户点击了提交按钮

$username = $_POST["username"];

$password = $_POST["password"];

if (login($username, $password)) {

// 登录成功

if (!empty($_POST["remember"])) {

// 记住密码,将用户名和密码保存到cookie中

setcookie("username", $username, time()+3600*24*30);

setcookie("password", md5($password), time()+3600*24*30);

}

else {

// 不记住密码,删除之前保存的cookie

setcookie("username", "", time()-3600);

setcookie("password", "", time()-3600);

}

// 跳转到首页

header("Location: index.php");

exit();

}

else {

// 登录失败

echo "用户名或密码错误";

}

}

else if (isset($_COOKIE["username"]) && isset($_COOKIE["password"])) {

// 如果存在用户名和密码的cookie,自动填写到表单中

$username = $_COOKIE["username"];

$password = $_COOKIE["password"];

echo <<



记住密码

EOF;

}

else {

// 首次访问,显示登录表单

echo <<



记住密码

EOF;

}

```

在上面的代码中,我们首先判断用户是否点击了登录表单中的提交按钮。如果点击了,我们取得输入的用户名和密码,并调用login函数进行认证。如果认证成功,就根据用户是否勾选了“记住密码”选项,来保存或删除用户名和密码的cookie。同时,我们将用户自动跳转到首页。如果认证失败,就显示一个错误信息。

如果用户首次访问该页面,或之前没有保存用户名和密码的cookie,我们就显示登录表单。如果之前保存了用户名和密码的cookie,我们就自动填写到表单中。

## 类函数使用外部函数调用

类函数通常是封装了一些代码逻辑的函数,并且它们经常在整个项目中被多次使用。在一个单独的PHP文件中定义一个类,然后在需要使用该类的页面中include或require该文件即可。

例如,我们可以创建一个名为“Calculator”的类,用于实现四则运算的功能。类定义如下:

```

class Calculator {

public function add($x, $y) {

return $x + $y;

}

public function sub($x, $y) {

return $x - $y;

}

public function mul($x, $y) {

return $x * $y;

}

public function div($x, $y) {

if ($y != 0) {

return $x / $y;

}

else {

throw new Exception("除数不能为零");

}

}

}

```

在上述代码中,我们定义了一个名为“Calculator”的类,其中定义了四个方法:add、sub、mul和div。这些方法分别实现加、减、乘、除运算。在div方法中,我们加入了一些错误处理,当除数为0时,会抛出一个异常。

现在,我们在index.php文件中需要使用Calculator类,可以这样做:

```

require_once("Calculator.php"); // 加载类所在的PHP文件

$calc = new Calculator(); // 创建一个Calculator对象

$a = 3;

$b = 5;

echo "{$a} + {$b} = {$calc->add($a, $b)}
"; // 输出3 + 5 = 8

echo "{$a} - {$b} = {$calc->sub($a, $b)}
"; // 输出3 - 5 = -2

echo "{$a} * {$b} = {$calc->mul($a, $b)}
"; // 输出3 * 5 = 15

try {

echo "{$a} / {$b} = {$calc->div($a, $b)}
"; // 输出3 / 5 = 0.6

}

catch (Exception $e) {

echo "发生错误:" . $e->getMessage();

}

```

在上述代码中,我们首先使用require_once函数将Calculator类所在的PHP文件加载进来。然后,我们创建了一个Calculator对象,并调用其中的add、sub、mul和div方法进行四则运算。在div方法中,我们使用了try-catch结构,当出现除以0的情况时,会捕获异常并输出相应的错误信息。

到此为止,我们已经详细介绍了setcookie函数和类函数的使用方式,希望本文对您有所帮助。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(83) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部