至尊技术网 - cookie
https://www.zzwws.cn/tag/cookie/
-
PHP cookie加密登录与验证
https://www.zzwws.cn/archives/6366/
2022-10-19T22:15:00+08:00
想要简单一点的可以用session,但session是创建会话,也会创建文件,这样文件会越来越多,会有些影响,所以用cookie会更好一点!<?php
/**
* cookie加密登录与验证
* @param array $userInfo 用户信息
* @param bool $validate 是否为验证或者填入token值验证,默认为false
* @param int $expiresTime 过期时间,默认为1天
* @param string $tag token标签,默认为zz_token
* @return bool|string
*/
function zz_login($userInfo, $validate = false, $expiresTime = 1, $tag = 'zz_token')
{
$salt = zz_salt();
$host = $_SERVER['HTTP_HOST'];
if (!$salt) {
return false;
}
if (!$validate) {
try {
$expiresTime = time() + 3600 * 24 * $expiresTime;
$token = base64_encode(json_encode(['userInfo' => $userInfo, 'domain' => $host, 'expiresTime' => $expiresTime, 'code' => md5(json_encode($userInfo) . $host . $expiresTime . $salt)]));
setcookie($tag, $token, $expiresTime, '/');
return $token;
} catch (Exception $e) {
return false;
}
} else {
if($validate === true){
if (empty($_COOKIE[$tag])) {
return false;
}
$arr = json_decode(base64_decode($_COOKIE[$tag]), true);
}else{
$arr = json_decode(base64_decode($validate), true);
}
if (empty($arr['userInfo']) || empty($arr['domain']) || $arr['domain'] != $host || empty($arr['code']) || empty($arr['expiresTime']) || $arr['expiresTime'] <= time()) {
return false;
}
return $arr['code'] === md5(json_encode($arr['userInfo']) . $host . $arr['expiresTime'] . $salt);
}
return true;
}
/**
* 生成安全码
* @return string
*/
function zz_salt()
{
$root = $_SERVER['DOCUMENT_ROOT'];
$file = $root.'/salt.php';
if(is_file($file)){
include($file);
if(empty($salt) || empty($saltRoot) || $saltRoot != $root){
$salt = rand_str(20,true);
file_put_contents($file,"<?php \r\n\$salt = '{$salt}';\r\n\$saltRoot = '{$root}';");
}
}else{
$salt = rand_str(20,true);
file_put_contents($file,"<?php \r\n\$salt = '{$salt}';\r\n\$saltRoot = '{$root}';");
}
return $salt;
}
/**
* 生成随机字符串
* @param int $num 字符串位数,默认为6
* @param bool $special 使用特殊字符,默认为false
* @return string
*/
function rand_str($num = 6,$special = false)
{
$str = 'abcedfghjkmnpqrstuvwxyzABCEDFGHJKMNPQRSTUVWXYZ0123456789';
if($special){
$str .= '!@#$%^&*';
}
return substr(str_shuffle($str), 0, $num);
}
// 登录
$userInfo = ['id' => 1,'username' => 'admin'];
zz_login($userInfo);
// 验证
if(zz_login('',true)){
echo '登录';
}else{
echo '未登录';
}
// 获取用户信息
$arr = json_decode(base64_decode($_COOKIE['zz_token']),true);
print_r($arr['userInfo']);
-
cookie与session的比较
https://www.zzwws.cn/archives/4975/
2020-12-17T10:33:00+08:00
特点cookiesession存储地址客户端服务器端存储类型字符串,数字字符串,数字,数组,对象创建方式setcookie直接操作$_SESSION读取$_COOKIE$_SESSION销毁setcookie(key,'',0)unset(),session_destroy()
-
PHP Cookie介绍和用法
https://www.zzwws.cn/archives/4960/
2020-11-26T16:05:00+08:00
Cookie 是什么?cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。如何创建 Cookie?setcookie() 函数用于设置 cookie。语法setcookie(name, value, expire, path, domain);
实例在下面的例子中,我们将创建名为 "user" 的 cookie,并为它赋值 "runoob"。我们也规定了此 cookie 在一小时后过期:<?php
setcookie("user", "runoob", time()+3600);
?>
如何取回 Cookie 的值?PHP 的 $_COOKIE 变量用于取回 cookie 的值<?php
// 输出 cookie 值
echo $_COOKIE["user"];
// 查看所有 cookie
print_r($_COOKIE);
?>
我们使用 isset() 函数来确认是否已设置了 cookie<?php
if (isset($_COOKIE["user"]))
echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
echo "普通访客!<br>";
?>
如何删除 Cookie?当删除 cookie 时,您应当使过期日期变更为过去的时间点。<?php
// 1、设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
// 2、把 Cookie 的生存时间默认设置为空,或者把失效时间设置为0,也可以直接删除 Cookie
setcookie("baiduSite");
?>
-
js首次打开页面提示弹窗
https://www.zzwws.cn/archives/4947/
2020-11-14T10:38:27+08:00
function get_cookie(Name) {
var search = Name + "=";
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1) {
// if cookie exists
offset += search.length;
// set index of beginning of value
end = document.cookie.indexOf(";", offset);
// set index of end of cookie value
if (end == -1)
end = document.cookie.length;
returnvalue=decodeURI(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
setTimeout(function(){
if (get_cookie("popped")==""){
document.cookie="popped=yes";
alert('这里是弹窗!');
}
},1000);
-
jquery.cookie 介绍 和 用法
https://www.zzwws.cn/archives/2580/
2020-01-03T11:37:00+08:00
1、依赖jQuery库2、下载官方github:https://github.com/carhartl/jquery-cookie蓝奏云下载地址:https://www.lanzouy.com/i8fbxhe3、使用创建一个整站cookie$.cookie('name', 'value');
创建一个整站cookie ,cookie 的有效期为 7 天$.cookie('name', 'value', { expires: 7 });
创建一个仅对 path 路径页面有效的 cookie ,cookie 的有效期为 7 天$.cookie('name', 'value', { expires: 7, path: '/' });
读取 cookie$.cookie('name'); // 如果cookie存在 则获取到cookie值 => 'value'
$.cookie('nothing'); // 如果cookie不存在 则返回 => undefined
获取所有可见的 cookie$.cookie(); // 数据格式 => { name: 'value' }
删除 cookie$.removeCookie('name'); // => true
$.removeCookie('nothing'); // => false
删除带属性的cookie$.cookie('name', 'value', { path: '/' });
// 错误
$.removeCookie('name'); // => false
// 正确
$.removeCookie('name', { path: '/' }); // => true
4、属性domain创建cookie所在网页所拥有的域名$.cookie('name', 'value', { domain: 'weber.pub' });
secure默认是false,如果为true,cookie的传输协议需为https;$.cookie('name', 'value', { secure: true });
$.cookie('name'); // => 'value'
$.removeCookie('name', { secure: true });
raw默认为false,读取和写入时候自动进行编码和解码(使用encodeURIComponent编码,使用decodeURIComponent解码),关闭这个功能,请设置为true。$.cookie.raw = true;
json$.cookie.json = true;
-
js的cookie操作
https://www.zzwws.cn/archives/2442/
2019-12-26T13:41:00+08:00
设置 cookie 的函数//设置cookie函数
function setCookie(cname, cvalue, exdays = 1) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
上面这个函数的的参数是:cookie 的名字(cname),cookie 的值(cvalue),以及知道 cookie 过期的天数(exdays)。通过把 cookie 名称、cookie 值和过期字符串相加,该函数就设置了 cookie。获取 cookie 的函数//获取cookie函数
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
把 cookie 作为参数(cname)。创建变量(name)与要搜索的文本(CNAME”=”)。解码 cookie 字符串,处理带有特殊字符的 cookie,例如 “$”。用分号把 document.cookie 拆分到名为 ca(decodedCookie.split(';'))的数组中。遍历 ca 数组(i = 0; i < ca.length; i++),然后读出每个值 c = ca[i]。如果找到 cookie(c.indexOf(name) == 0),则返回该 cookie 的值(c.substring(name.length, c.length)。如果未找到 cookie,则返回 ""。检测 cookie 的函数创建检查 cookie 是否设置的函数。如果已设置 cookie,将显示一个问候。如果未设置 cookie,会显示一个提示框,询问用户的名字,并存储用户名 cookie 365 天,通过调用 setCookie 函数:function checkCookie() {
var username = getCookie("username");
if (username != "") {
alert("Welcome again " + username);
} else {
username = prompt("Please enter your name:", "");
if (username != "" && username != null) {
setCookie("username", username, 365);
}
}
}
删除cookiedocument.cookie = "cname=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";