PHP Session变量,实现session服务器端存储用户信息,阻止未登录跳转主页

一、session认识:

user登入一个具有Session功能的网站时,系统会给于该user一个独有的Session ID 以便在服务器中建立新的Session,来储存user的资料,提供网站中各个网页与程序使用


二、这里呢!先给大家说几个session的概念:

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

2.session销毁的代码函数:unset() 函数用于释放指定的 session 变量,例unset($_SESSION['views']);

也可以通过调用 session_destroy() 函数彻底销毁 session,将重置 session,您将失去所有已存储的 session 数据

Session_unset () :取消所有已注册的 Session 变量

注意:

有效期限过期 :一般PHP系统中对Session的有效期限,默认值是0 ,也就是不限时间。但PHP程序人员还是可以透过修改php.ini档案中有关「session.cookie_lifetime」项目,来设定Session的有效期限。过期后,不管浏览器是否还开着,Session都会自动消灭。

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


三、这里先说说有关session的启动,设置,读取,判断是否存在。

1.启动Session是透过session_start()函数来完成,PHP核心程序将Session相关的内建环境变量,预先加载内存中。

启动Session的语法格式:

  <?php

          session_start();

  ?>

2. PHP 之中使用 Session 变量,除了必须要启动之外,还要经过注册(设置)的手续,例如:

  <?php 

      session_start();

//注册(设置)

  $_SESSION[“user_ID”] = “32145“;    
?>

3. PHP 之中 ,Session 是以 $_SESSION 结合数组变量来存取 Session 中的数据,例如:
<? php
session_start ();
$_SESSION["Name"] ="Daniel" ;
//取出
echo $_SESSION["Name"] ;
?>


接下来,给大家举个例子:

登录跳转进入主页。(功能性说明说明:用session阻止未登录跳转主页的情况 )

1.登录页表单提交数据;

2.服务器接收数据,并设置session;

3.在主页判断session是否存在,存在则通过访问。


登录页表单提交login.html

<form action="ServerLogin.php" method="post" 
                          enctype="application/x-www-form-urlencoded">
    <input id="us" type="text" name="username" class="username" 
                                               placeholder="Username">
    <input id="pw" type="password" name="password" class="password"
                                               placeholder="Password">
    <button type="submit">Sign me in</button>
    <div class="error"><span>+</span></div>
</form>

ServerLogin.php服务器接收数据并设置session。

<?php
/**
 * Created by PhpStorm.
 * User: 洋   汪
 * Date: 2016/7/19
 * Time: 11:53
 */
header("Content-type:text/html;charset=utf-8");
//引入数据存储文件
include "data.php";
//$_SERVER["REQUEST_METHOD"]获取请求的方式是什麽。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    //判断登录页填写的数据与数据文件的数据(用户名和密码)是否一致。
    if ($_POST["username"] == $info["username"] &&
                                      $_POST["password"] == $info["password"]) {
        //设置localStorage,html5js端本地存储。
        setLocalStorage($_POST);

        //设置session的数据设置
        $mySession = $_POST;
        //数组合并:array_merge(目标数组,目标数组追加的数组);
        //$_SERVER["REMOTE_ADDR"]服务请求远程ip地址
        $mySession = array_merge($mySession, array( 
                      "loginIp" => $_SERVER["REMOTE_ADDR"], "loginTime" => time()));
        //在方法中设置session
        setSession($mySession);
        //设置session后跳转主页index.php,在主页判断是否设置session
        echo "<script>window.location.href ='index.php';</script>";
    } else {
        echo "<script>alert('用户名或密码错误!!!');
                      window.location.href = 'login.html';
             </script>";
    }
} else {
    //POST请求时
    echo "<script>
        alert('请登录!!!');
        window.location.href = 'login.html';
</script>";
}

//设置session方法,array $mySession参数命名强制必须传进来的参数为数组形式
function setSession(array $mySession)
{
    //启动session
    session_start();
//  $_SESSION = $mySession;
//$_SESSION = $mySession$_SESSION值:Array ( [username] => wangyang
// [password] => 123456 [loginIp] => 127.0.0.1 [login_time] => 1468915628 )
//  print_r($_SESSION);

    //设置session
    $_SESSION["username"] = $mySession["username"];
    $_SESSION["password"] = $mySession["password"];
    $_SESSION["loginIp"] = $mySession["loginIp"];
    $_SESSION["loginTime"] = $mySession["loginTime"];
}

//设置localStorage的本地存储
function setLocalStorage(array $myLocalStorage)
{
    //JS端的localStorage:HTML5提供的本地存储方式(可以称为键值对数据库)
    //charset='utf-8'必须的设置。
 echo "<script type='text/javascript' charset='utf-8'> localStorage.setItem('username'," . "'" . $myLocalStorage["username"] . "'" . "); localStorage.setItem('pwd'," . "'" . $myLocalStorage["password"] . "'" . ");</script>";}?>

主页html被改为.php文件后,在文件头中写入session是否设置的判断。

<?php
session_start();
if (!isset($_SESSION["username"]) || !isset($_SESSION["password"])) {
//未登录就不会被设置session,就会跳回登录页。否则,继续向下执行html代码。
    echo "<script>alert('请登录!!!');
    window.location.href = 'login.html';
</script>";
//    session_destroy();
}
?>


存储用户信息的data.php文件:

<?php
/**
 * Created by PhpStorm.
 * User: 洋   汪
 * Date: 2016/7/19
 * Time: 11:52
 */
$info = array("username"=>"wangyang","password"=>"123456");
?>


补充:

此篇所写服务器中携带有js端的localStorage的设置方法,以及注意点。

过段时间,我会详细讲解js端的localStorage本地存储的调用,以及它的其他属性和概念。





  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值