PHP下对Cookie的相关操作
Posted Zeker62
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP下对Cookie的相关操作相关的知识,希望对你有一定的参考价值。
什么是Cookie?
Cookie相当于一个身份证,上面有一些信息,这些信息供浏览器识别来确认身份以减少用户的操作,增加便捷性。比如管理员就不需要多次输入账号密码就能登录到后台。从而衍生出cookie注入的相关攻击手段。
- Cookie是存在于客户端的文本/文件。
- 客户端每次访问网站都会携带cookie
Cookie性质:
- name:Cookie名称
- value:Cookie值
- Domain:Cookie适用的地址
- Path:Cookie存在路径
- Expires:租约
- 大小:Cookie大小
- httponly:仅仅通过http访问,不能通过js
- secure:https
- samesite:用于限制第三方cookie,增加安全性
- 最后访问:最后访问时间
开始和取消Cookie
在php中:
- 使用
setcookie()
函数用于设置 cookie。但是setcookie() 函数必须位于 <html> 标签之前。,语法:setcookie(name, value, expire, path, domain); - 使用 setcookie(‘name’,value,
time()-xxxx
) 以租约到期的方式来取消cookie。
取用Cookie的值:
-
使用
$_COOKIE
变量用于取回 cookie 的值。
比如我要取回name的值,就是 : $_COOKIE[‘name’] -
用
isset()
确认是否有Cookie:isset($_COOKIE["name"])
实例代码:
设置一个登录系统,并带有Cookie:
主页:
<meta charset="utf-8">
<h1>Login</h1>
<?php
if (isset($_COOKIE['name'])) {
echo "欢迎您,{$_COOKIE['name']},<a href=logout.php>注销</a>";
} else {
echo "<a href='login.php'>请登录</a>";
}
?>
这个代码的意思是,从Cookie中读取规定死的账号,如果不是那个账号,则要求重新登录。如果是那个账号,可以选择注销。
先看注销代码,即取消租约:
<?php
setcookie("name",$_COOKIE['name'],time()-3600);
?>
登录代码:
<meta charset="utf-8">
<?php
if (isset($_POST['usersubmit'])) {
if (
isset($_POST['username']) && $_POST['username'] == "s" && isset($_POST['userpass']) && $_POST["userpass"] == "1"
) {
if (setcookie("name", "s")) {
echo "登录成功,<a href='index.php'>返回首页</a>";
} else {
echo "Cookie错误";
}
} else {
echo "用户名和密码错误 ,<a href='login.php'>重新登录</a>";
}
} else {
$htm = <<<html
<form action="" method="post">
用户名: <input type="text" name="username"></br>
密码: <input type="password" name="userpass"></br>
<input type="submit" name="usersubmit" value="登录">
</form>
HTML;
echo $htm;
}
?>
这个代码的意思是:
- 在登录界面使用POST传参,
- 如果点击了提交按钮,就开始确认用户名和密码是否匹配,
- 如果匹配;
- 如果成功注入Cookie,则成功
- 如果没能成功注入Cookie,则表示失败
- 如果不匹配,则和规定的Cookie不一致,返回报错
- 如果匹配;
- 如果点击了提交按钮,就开始确认用户名和密码是否匹配,
以上是关于PHP下对Cookie的相关操作的主要内容,如果未能解决你的问题,请参考以下文章
C# 网页登录并获取cookie,并在不打开浏览器的情况下对网页进行相关操作。高分求相关代码或指导。