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

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

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

首先是登录界面定义:

<form action="server.php" method="post">
        <input type="text" name="username" class="username" placeholder="Username">
        <input type="password" name="password" class="password" placeholder="Password">
        <button type="submit">Sign me in</button>
        <div class="error"><span>+</span></div>
      </form>

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

<?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 "<script>
   window.location.href='index.php';
  </script>";
  }
} else {
  echo "<script>
alert('请登录');
window.location.href='login.html';
</script>";
}
//通过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 "<script>
//
//  localStorage.setItem('username','$username');
//localStorage.setItem('password'," . "'" . $password . "'" . ");
//</script>";
function setStroage($username, $password){
  echo "<script>
  localStorage.setItem('username'," . "'" . $username . "'" . ");
  localStorage.setItem('password'," . "'" . $password . "'" . ");
  </script>";
}

上面加载了一个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()));//这是穿的另外两个参数,一个是用户登录地址,另一个是cookie存活时间(会在寻获时间以为消失)
    se($myArr);
    setcookies($_POST["username"], $_POST["password"]);//这个是设置cookie,把传过来的两个值设置成cookie,会有一个getCookie进行接收
    setStroage($_POST["username"], $_POST["password"]);
    echo "<script>
  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<cookie.length;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("username").value=localStorage.getItem("username");
      document.getElementById("password").value=localStorage.getItem("password"); 

    }
  }); 

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

function setStroage($username, $password){
  echo "<script>
  localStorage.setItem('username'," . "'" . $username . "'" . ");
  localStorage.setItem('password'," . "'" . $password . "'" . ");
  </script>";
} 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, 自动登录
, php自动登录代码
php自动登录机制
cookie localstorage、localstorage和cookie、cookie与localstorage、session localstorage、nshttpcookiestorage,以便于您获取更多的相关知识。

时间: 2024-08-02 01:51:57

利用php实现一周之内自动登录存储机制(cookie、session、localStorage)_php实例的相关文章

php版微信自动登录并获取昵称的方法_php实例

本文实例讲述了php版微信自动登录并获取昵称的方法.分享给大家供大家参考,具体如下: 微信自动登录并获取昵称是可以通过api接口来获取的也是通过微信开放的接口来实现了,下面我们一起来看一个例子 仅记录:微信获取昵称自动登录 经过反复几次验证,发现我这个方法有缺陷: 微信内 未关注进入网站,无法获得昵称. 关注后用我这个方法可以获得昵称. 是否是因为第一次生成openid 所以还未生成昵称?待测试. /** * 获取当前页面完整URL地址 */ function get_url() { $sys_

PHP autoload与spl_autoload自动加载机制的深入理解_php实例

PHP autoload机制详解(1) autoload机制概述在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利.这 也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可.下面是一个实际的例 子: 复制代码 代码如下: /* Person.class.php */<?phpclass Person {var $name, $age;f

spring mvc-springmvc怎么实现自动登录啊使用cookie还是本身有别的方法

问题描述 springmvc怎么实现自动登录啊使用cookie还是本身有别的方法 求大神给些代码! 我是个刚培训出来的.现在我只能简单的做个晓得登录. 解决方案 SpringMVC记住密码功能http://blog.csdn.net/liupeng_family/article/details/38420963?utm_source=tuicool&utm_medium=referral 解决方案二: 前端h5就可以完成了,用本地存储记住帐号密码,然后在页面加载忘后执行js登录函数即可. 解决方

ThinkPHP3.2.2实现持久登录(记住我)功能的方法_php实例

本文实例讲述了ThinkPHP3.2.2实现持久登录功能的方法.分享给大家供大家参考,具体如下: 实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录状态). 首先,持久登陆使用 cookie 实现,但是 cookie 中不能保存用户密码这样重要的信息,即使加密过.解决方案是在用户登录表中新建3个字段identifier:第二身份标识,token:永久登录标识

php注册和登录界面的实现案例(推荐)_php实例

当初我觉得一个网站上注册和登录这两个功能很神奇,后来自己研究一下发现其实道理很简单,接下来看一下怎么实现的吧.... 我在我的电脑上建了几个文件: login.html (登录页面) register.html(注册页面) success.html(登录成功跳转页面) return.html(注册成功页面) login.php register.php 登录界面和注册界面以及success.html并没有 什么都是些html标记如下: <html> <head> <meta

Discuz!插件:自动隐藏帖子第1/2页_php实例

前言 应一位网友要求开卷工作室制作了这个自动隐藏帖子的插件,主要用途是无需手动添加 [hide] 代码,则自动隐藏所有发布的帖子内容,会员需要回复后才可以浏览该帖.这想法相当不错,要实现这一功能也不很难,所以就帮忙做了一个出来.插件提供两种自动隐藏的模式,一种是只隐藏一楼的帖子,另一种是隐藏包括回复在内的所有帖子.因为秉承开卷工作室绿色插件的作风,能够不改动数据库的就不改,所以本插件不增加后台开关功能,而只提供 config.inc.php 的开关设置. 本插件适用于 Discuz! 所有版本的

php使用curl模拟登录后采集页面的例子_php实例

今天接到的功课是从一个网站获取商品库存,但是这个网站需要登录,我用fsockopen传递了整个header头都没用,只能求助于curl了.附带说一下curl模块的开启办法:(1)从php目录下拷贝:libeay32.dll,ssleay32.dll 到windows目录下.(2)打开php.ini,查找"extension_dir = xxxxx",确认后面的文件目录内有php_curl.dll文件.(3)同样是php.ini,查找"extension=php_curl.dl

CI框架开发新浪微博登录接口源码完整版_php实例

首先来看下流程:流程原理:     1.通过code获得access_token通过授权,并获取用户的信息(包括用户u_id)(这个u_id在后面的第三方登录表里面叫sina_id,那个表是需要自己建的)     2.查询第三方登录表,如果不存在用户sina_id,分2种情况,一:用户在平台已经有帐号,这时需要把平台(比如:平台的用户表是:user_reg)用户id绑定到第三方登录表(比如是:third_login表),然后就让客户登录;                             

ThinkPHP自动填充实现无限级分类的方法_php实例

本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP常用功能之一,非常具有实用价值.现将完整实例分享给大家,供大家参考.具体实现步骤如下: 表aoli_cate如下图所示: 一.action部分: aoli/Home/Lib/Action/CataAction.class.php文件如下: <?php class CateAction extends Action{ function index(){ $cate=M('cate'); $list=$cate->fie