一周内自动登录php,利用php实现一周之内自动登录存储机制(cookie、session、localStorage)...

cookie、session、localStorage这三个应该是最让程序员头疼的了,我利用简单的登录界面的username和password来说明一下吧.

1.cookie用来存储用户相关数据,存储的位置在用户本地:

首先是登录界面定义:

Sign me in

+

上面的代码大家都懂吧,就是一个表单.然后就是action的server.php服务器处理,

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2016-7-19

* Time: 11:50

*/

include "data.php";

header("Content-type:text/html;charset=utf-8");

//echo "ddd";

if ($_SERVER["REQUEST_METHOD"] == "POST") {//第一步

// echo "ddd1";

if ($_POST["username"] == $info["username"] && $_POST["password"] == $info["password"]) {//第二步

$myArr = $_POST;

$myArr = array_merge($myArr, array("loginIP" => $_SERVER["REMOTE_ADDR"], "loginTime" => time()));

se($myArr);

setcookies($_POST["username"], $_POST["password"]);

setStroage($_POST["username"], $_POST["password"]);

echo "

window.location.href='index.php';

";

}

} else {

echo "

alert('请登录');

window.location.href='login.html';

";

}

//通过session保存到服务器

function se(array $arr)

{

session_start();

$_SESSION["username"] = $arr["username"];

$_SESSION["password"] = $arr["password"];

$_SESSION["loginIP"] = $arr["loginIP"];

$_SESSION["loginTime"] = $arr["loginTime"];

}

//通过cookie保存到本地

function setCookies($username, $password)

{

setcookie("username", $username, time() + 120);

setcookie("password", $password, time() + 120);

}

//echo "

//

// localStorage.setItem('username','$username');

//localStorage.setItem('password'," . "'" . $password . "'" .

上面加载了一个data.php其实里面就是一条数据,

$info=array("username"=>"admin","password"=>"admin");

这个数据主要是核对输入的用户名和密码是否正确.

首先在server里面对不也是判断是不是post请求,如果不是就提示重新登录,返回登录界面,确定是post之后,再进行判断信息是不是输入正确,如果正确就setcookie一下.下面的代码我一一解释

$myArr = $_POST;//把post传过来的数据放在myarr;里面

$myArr = array_merge($myArr, array("loginIP" => $_SERVER["REMOTE_ADDR"], "loginTime" => time()));//这是穿的另http://www.cppcns.com外两个参数,一个是用户登录地址,另一个是cookie存活时间(会在寻获时间以为消失)

se($myArr);

setcookies($_POST["username"], $_POST["password"]);//这个是设置cookie,把传过来的两个值设置成cookie,会有一个getCookie进行接收

setStroage($_POST["username"], $_POST["password"]);

echo "

window.location.href='index.php';

其实这时候cookie已经按我们设置的那个时间存储下来了,然后我们要做的就是免登陆功能,的后台服务器的处理,就像我们登陆其他软件,会提示一周之内免登陆密码,

就是下面的代码:

function intialLoadInfo(){

$("input:text").val(getCoolieByKey("username"));//这两个就是吧下面获取的之前输入过的用户名和密码进行自动填写(实现目的)

$("input:password").val(getCoolieByKey("password"));

}

//通过key值获取cookie

function getCoolieByKey(key){

var cookie=document.cookie.split(";");//这行代码是吧cookie的值进行分离(split),以便于下面遍历(分离后就是一个数组一样)

for(var i=0;i

var value=cookie[i].trim();//去掉空格

if (value.indexOf(key)==0){//判断是不是第一个值

val=value.split("=");

console.log(val[0]);

return val[1];

}

}

}

上面第一个方法执行getCookieByKey(key);

这个带参数的函数接收的参数就是我们上面封装好的myArr数据了;

然后详细解释就在代码了,大家可以参考了.

2.session:session是用来在服务器端存储用户信息,当浏览器关闭的时候,会自动销毁;

session_start();

超级数组$_SESSION可以实现session的设置与读取;

代码如下:

function se(array $arr)

{

session_start();

$_SESSION["username"] = $arr["username"];

$_SESSION["password"] = $arr["password"];

$_SESSION["loginIP"] = $arr["loginIP"];

$_SESSION["loginTime"] = $arr["loginTime"];

}

首先就会上面的代码,一样是获取四个属性,放到我们的$_SESSION里面;存储下来:

然后就是上面那个代码,带啊可以看到有一个se

$myArr = array_merge($myArr, array("loginIP" => $_SERVER["REMOTE_ADDR"], "loginTime" => time()));//这是穿的另外两个参数,一个是用户登录地址,另一个是cookie存活时间(会在寻获时间以为消失)

se($myArr);

这里就是为了session写的;

他主要是存储四个属性,username.password.IP.time

上面代码中也注释;其实现在我们就可以在session里面查到我们这个自己创建的session了

3.js端的localStorage:HTML5提供的本地存储方式(可以称为“键值对”数据库);

设置数据:localStorage.setItem("key","value");

读取数据:localStorage.getItem("key");读取的结果是一个字符串;

删除数据:localStorage.removeItem("key");

详细代码如下:

在html下面写的js文件就是  然后就是实现:

$(function (){

if (localStorage.getItem("username")!=""&&localStorage.getItem("password")!=""){

document.getElementById("user编程客栈);

document.getElementById("password").value=localStorage.getItem("password");

}

});

这个函数主要就是创建用php创建的

function setStroage($username, $password){

echo "

localStorage.setItem('username'," . "'" . $username . "'" . ");

localStorage.setItem('password'," . "'" . $password . "'" . ");

";

}

其实这个东西需要自己慢慢写,我虽然能写出来,编程客栈但是每次用的时候还是要参考一下这个例子,所以希望我用了好长时间的万能例子对大家有用,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文标题: 利用php实现一周之内自动登录存储机制(cookie、session、localStorage)

本文地址: http://www.cppcns.com/wangluo/php/168346.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP知识普及系列:HTTP返回状态码

状态码1XX 信息性状态码 接受的请求正在处理  2XX 成功状态码 请求正常处理完毕  3XX 重定向状态码 需要进行附加操作以完成请求  4XX 客户端错误状态码 服务器无法处理请求  5XX 服务器端错误状态码 服务器处理请求出错2XX 相应结果表明请求被正常处理了200 OK 表示从…

来电语音播报软件下载apk_消息语音播报app下载-消息语音播报安卓版 v1.0.1 - 安下载...

消息语音播报app是一款语音播报工具,它可以将微信、QQ、短信等消息进行语音播报,让你能够第一时间知晓消息内容,无需进入界面也能知晓发来的消息;它支持多个场就下使用,开启语音播报后无需你手动打开手机查看消息&…

linux创建特殊文件rules,RHEL5 Oracle Linux 5上生成正确的udev rule 规则文件

RHEL5 Oracle Linux 5上生成正确的udev rule 规则文件1.确认在所有RAC节点上已经安装了必要的UDEV包[rootrh2 ~]# rpm -qa|grep udevudev-095-14.21.el52.通过scsi_id获取设备的块设备的唯一标识名,假设系统上已有LUN sdc-sdifor i in c d e f g h i;doecho "s…

HTTP知识普及系列:HTTP首部

HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语&…

maya材质sheen_maya怎样做耐磨金属质感?

maya做出金属质感的方法:基本属里就调颜色跟漫反,colour任意Diffuse调低,滑杆三分之一到四分之一左右Specular Shading高光属Ecceicity、Specular Roll Off以及Specular Color控制高光点强度。面积颜色属一般金属的话第一个打到左边四分之一到…

swift 2.2 语法 (上)

前言&#xff1a; 1.此文中的语法会根据Swift的升级变动而更新。 2.如果需要请移步 -> swift2.2 语法&#xff08;中&#xff09;、swift 2.2语法&#xff08;下&#xff09; Swift与OC中常见的区别 导入框架 OC: #import <UIKit>#import "AFNetWorking.h"…

linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...

用户组管理包括对用户组创建&#xff0c;删除&#xff0c;修改及查看组操作命令&#xff0c;下面我们一起来看看希望本文章对各位同学会有所帮助哦&#xff0c;1&#xff0c;创建组groupadd test增加一个test组2&#xff0c;修改组groupmod -n test2 test将test组的名子改成tes…

android 半透明色值_Android 色值转换成透明度色值

在日常的android开发过程中&#xff0c;UI设计师一般都会或多或少的做一些不同透明度的背景&#xff0c;从而提高交互效果。 一般这个时候设计师们都会丢给我们一个色值&#xff0c;然后告诉我们&#xff0c;透明度30%&#xff0c;40% ......。 如果我们这个时候是给一个view添…

HTML中id、name、class 区别

HTML 中 id与name 区别 一个name可以同时对应多个控件&#xff0c;比如checkbox和radio 而id必须是全文档中唯一的 id的用途 1&#xff09; id是HTML元素的Identity&#xff0c;主要是在客户端脚本里用。 2&#xff09; label与form控件的关联&#xff0c;如 <label for&quo…

Linux系统查看系统硬件,linux怎么查看系统硬件信息

有时候想查看电脑中的系统硬件信息不知道怎么办下面是学习啦小编带来的关于linux怎么查看系统硬件信息的内容&#xff0c;欢迎阅读!linux怎么查看系统硬件信息?查看cpu&#xff1a;lscpu命令&#xff0c;查看的是cpu的统计信息.blueblue-pc:~$ lscpuArchitecture: i686 #cpu架…

manchi翻译中文 mi_求这一段意大利文歌词中文翻译(Mi Manchi)

机器翻译的实在太强大了^_^&#xff01;?你给的歌词不太准确啊&#xff0c;我帮你简单的翻译了一下。由于我是意语水平有限&#xff0c;可能会有小错误&#xff0c;还请高手多指教啊。你要的歌是Fausto Leali在1988年的流行曲&#xff0c;我是在找anna oxa的1988年Quando nasc…

图片的部分拉伸

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight: (NSInteger)topCapHeight 这个函数是UIImage的一个实例函数&#xff0c;它的功能是创建一个内容可拉伸&#xff0c;而边角不拉伸的图片&#xff0c;需要两个参数&#xff0c;第一个是左边…

linux写一个ls命令,linux 下 如何自己写 ls 命令

有过linux 基础 都知道 ls 命令的作用下面给出实现代码#include #include #include #include #include #include #include #include #include #include int fun1(char *dir,char *filename){struct stat buf;char out[100];if(stat(dir,&buf)<0){perror("stat"…

java开发 时间类型的转换

1.String转date SimpleDateFormat format new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time"2016-05-16 12:45:55"; Date date; try {   date format.parse(time);   System.out.print("Format To times:"date); } catch (Parse…

designer pyqt5 界面切换_PyQt5快速上手基础篇3-设置窗口标题和图标

前言本节我们为QT Designer生成的UI界面添加图标和窗口标题。一、实例运行1. QT Designer设计UI打开designer.exe,使用默认的Main Window创建&#xff0c;直接点击Create按钮即可设计UI图如下&#xff0c;并保存为test.ui2 将test.ui转换为ui_test.py进入ui_test.py目录&#x…

linux系统gpu test,轻量级显卡测试软件GpuTest 0.4.0版下载,支持windows Linux MAC-站长资讯中心...

说到显卡测试&#xff0c;我们一定会想到3D Mark&#xff0c;可是看着3D Mark那几百兆的大小和小水管的网速&#xff0c;有没有轻量级的测试软件呢&#xff1f;GpuTest就是一款十分小巧的软件&#xff0c;这是一款基于OpenGL的显卡压力测试软件&#xff0c;GpuTest还是一款跨平…

celery 可视化_Django中Celery的实现介绍(一)

Django中Celery的实现Celery介绍Celery是基于Python开发的一个分布式任务队列框架&#xff0c;支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。上图展示的是Celery的架构&#xff0c;它采用典型的生产者-消费者模式&#xff0c;主要由三部分组成&#xff1a;bro…

MySQL Router 测试使用 转

MySQL Router 测试使用1. 特性 MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解, 特性包括: 对连接请求进行路由;和 Fabric 配套使用, 方便管理; 插件特性, 需要的功能以插件形式提供;2. 配置 MySQL…

linux脚本获取usb设备,Linux基于USB端口执行脚本

您应该弄清楚您的外部端口与哪个USB总线连接。在我的电脑上所有外部USB端口都连接到Bus 01要做这个检查lsusb -t的输出&#xff0c;然后附上一个usb设备并再次检查输出lsusb -t。那么你知道什么是 不会忽略 你的三个外部USB端口在你的设备内部USB结构树&#xff1a;内部USB端口…

pandas 合并所有列_Python学习:Pandas库

pandas包含数据结构和数据处理工具的设计使得在Python中进行数据清洗和分析非常快捷。pandas经常是和NumPy,Scipy以及数据可视化工具matplotlib一起使用的。pandas支持大部分NumPy语言风格的数组计算&#xff0c;但最大的不同在于pandas是用于处理表格型或异质型数据的。而NumP…