php cookie使用方法学习笔记分享
PHP中的Cookie应用与操作指南
Cookie在PHP中的使用与其他编程语言并无太大差异,其主要的用途是存储客户端的信息。在Web应用中,Cookie常被用于安全性要求不高的场景,如用户登录后记住密码等。对于热衷于SEO优化的朋友们,了解PHP中的Cookie操作是非常必要的。
PHP中的setcookie()函数用于向客户端发送HTTP cookie。这些cookie是服务器发送到浏览器的小文本文件,当计算机通过浏览器请求页面时,这些cookie就会被发送出去。
在使用setcookie()函数时,必须在任何输出发送前对cookie进行赋值。函数成功执行会返回true,否则返回false。关于setcookie()的参数,有:
name:cookie的名称;
value:cookie的值;
expire:cookie的过期时间;
path:cookie的服务器路径;
domain:cookie的域名;
secure:是否通过安全的HTTPS连接来传输cookie。
例如,设置和获取cookie的代码如下:
```php
setcookie('mycookie','value');
echo $_COOKIE['mycookie']; // 访问名为 'mycookie' 的 cookie 的值
```
删除Cookie的方法有几种,推荐的一种是使用setcookie()函数,设置其过期时间为当前时间或当前时间减去一定的时间,如:
```php
setcookie('mycookie','',time()-3600); // 使mycookie失效
```
PHP中还有一个非常有用的函数mktime(),它可以按照给定的时间参数返回自1970年1月1日以来的总秒数。这在设置cookie的过期时间时非常有用。
要获取Cookie的过期时间,可以如下操作:
```php
$expire = time() + 86; // 设置24小时的有效期
setcookie ("var_name", "var_value", $expire); // 设置一个名为var_name的cookie
setcookie ("var_name_expire", $expire, $expire); // 将过期时间设置进另一个cookie以便获取var_name的过期时间
```
需要注意的是,在发送和接收cookie时,其值会自动进行URL编码和解码。如果你不希望这样,可以使用setrawcookie()函数代替。
数据库与Cookie:登录信息的守护者
一、数据库连接配置的小秘密
在小小的`connectvars.php`文件中,藏着数据库的秘密配方。数据库的位置、用户名、密码和名称都被精心定义:
```php
// 数据库的位置
define('DB_HOST', 'localhost');
// 用户名
define('DB_USER', 'root');
// 口令
define('DB_PASSWORD', '19900101');
// 数据库名
define('DB_NAME', 'test');
```
二、登录页面的魔法
`logIn.php`页面是登录的魔法舞台。它连接数据库,读取用户输入的用户名和密码,然后进行验证。如果一切顺利,用户将被设置cookie并重定向到已登录页面。否则,会显示错误信息。这个过程是这样的:
```php
// 引入数据库连接信息
require_once 'connectvars.php';
$error_msg = ""; // 初始化错误信息
// 判断用户是否已经设置cookie中的user_id,如果没有,则进行登录验证
if (!isset($_COOKIE['user_id'])) {
if (isset($_POST['submit'])) { // 用户提交登录表单
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // 连接数据库
$user_username = mysqli_real_escape_string($dbc, trim($_POST['username'])); // 获取并处理用户名
$user_password = mysqli_real_escape_string($dbc, trim($_POST['password'])); // 获取并处理密码
if (!empty($user_username) && !empty($user_password)) { // 判断用户名和密码是否填写完整
$query = "SELECT user_id, username FROM mismatch_user WHERE username = '$user_username' AND password = SHA('$user_password')"; // 查询数据库中的用户信息
$data = mysqli_query($dbc, $query); // 执行查询语句
if (mysqli_num_rows($data) == 1) { // 如果查询结果正好一条记录,说明验证成功
$row = mysqli_fetch_array($data); // 获取用户信息
setcookie('user_id', $row['user_id']); // 设置cookie中的user_id为用户ID
setcookie('username', $row['username']); // 设置cookie中的username为用户名并重定向到已登录页面。这里假设已登录页面为loged.php。注意:实际应用中,密码不应明文存储或传输。应使用安全的哈希算法存储密码的哈希值。代码中的SHA函数仅用于示例。实际应用中应考虑使用更强的加密算法和安全的哈希函数。重定向到已登录页面的代码示例如下:header('Location: loged.php'); } else { // 如果查询结果不是一条记录,说明验证失败设置错误信息 $error_msg = 'Sorry, you must enter a valid username and password to log in.'; } } else { $error_msg = 'Sorry, you must enter a valid username and password to log in.'; } } else { // 如果用户已经登录过,则直接跳转到已登录页面 header('Location: loged.php'); } } ?> ``` 接下来是HTML部分,它会显示登录表单和错误信息: ```html
Mismatch - Log In
' . $error_msg . ''; } ?> ``` 三、已登录页面loged.php 已登录页面可以显示用户的登录信息并进行各种操作。利用用户的cookie如$_COOKIE['username']和$_COOKIE['user_id']对数据库进行查询等。四、注销cookie页面网络推广网站
- php cookie使用方法学习笔记分享
- JS实现把一个页面层数据传递到另一个页面的两种
- vue底部加载更多的实例代码
- tp5框架使用cookie加密算法实现登录功能示例
- 史上最全的PHP正则表达式(手机号需要加上177-
- ajax 缓存 问题 requestheader
- 基于jQuery实现顶部导航栏功能
- node使用Koa2搭建web项目的方法
- Node.js+Express+MySql实现用户登录注册功能
- Zend的MVC机制使用分析(一)
- JavaScript随机生成信用卡卡号的方法
- ASP.NET中的Menu控件的应用及XmlDataSource的了解
- JSP生成jpeg图片用于投票
- Bootstrap基本样式学习笔记之按钮(4)
- Vue路由钩子之afterEach beforeEach的区别详解
- AngularJS 仿微信图片手势缩放的实例