• 初中生专区
  • 高中生专区
  • 大学生专区
  • 待业在职专区
  • 专业咨询
  • 学费咨询
  • 就业咨询
  • 加入收藏|常见问题|网站地图
  • 首页
  • 学校介绍
  • 学校新闻
  • 专业课程
  • 师资力量
  • 就业保障
  • 明星学员
  • 招生问答
  • 在线课堂
  • 在线报名
  • 单招测试
  • 高中生学历教育
  • 【在线咨询】
  • 职业技术培训
  • 【在线咨询】
  • 学习方案规划
  • 【在线咨询】
学校
学校简介
学校特色
学校环境
学校文化
师资力量
来校路线
课程
软件开发课程
提前单招
学士后Java
学士后.NET
就业
就业流程
就业明星
职前培训
招聘信息
咨询
招生问答
在线测试
在线留言
在线报名
学校 课程 就业 咨询 新闻
网站公告
  • 祝贺 蒋会红 成功报读桂林北大青鸟T21班”ACCP软件开发”专业!
  • 祝贺 陈国荣 成功报读桂林北大青鸟T21班”ACCP软件开发”专业!
  • 祝贺 李昌琦 成功报读桂林北大青鸟T21班”ACCP软件开发”专业!
  • 祝贺 毛燕 成功报读桂林北大青鸟T21班”ACCP软件开发”专业!
  • 祝贺 李军灵 成功报读桂林北大青鸟T21班”ACCP软件开发”专业!
  • 祝贺 吴迪 成功报读桂林北大青鸟T21班”ACCP软件开发”专业!
  • 桂林北大青鸟冬季特惠——“先就业、后付款”活动,全面解决学费问题,让学生后顾无忧!
  • “学技术、拿高薪”!桂林北大青鸟互联网精英就业班火热招生中!仅剩10个名额啦!
新闻导航
  • 学校新闻
  • 就业新闻
  • 高考新闻
  • 开班信息
  • 专业设置
  • 媒体报道
  • 招聘信息
  • 体验课
  • 转业、退伍军人新闻
  • 技术园地
  • SEO
    PHP
    .Net
    Android
    Java
 职业技能培训开班信息
专业课程状态
高考自主招生热招中
初中生2+3连读热招中
2017就业示范班热招中
大学生就业实训班热招中
2017定向委培班热招中
办公软件短期班热招中
本月热点
校区位置
当前位置:北大青鸟桂林志成中心 → 新闻中心 → PHP → 新闻正文
PHP5中Cookie与 Session使用详解
作者:桂林北大青鸟 | 来源:PHPChina | 【大 中 小】
本篇文章是对在php中同时使用session和cookie来保存用户登录信息的实现代码进行了详细的分析介绍,需要的朋友参考下
-
同时使用session和cookie来保存用户登录信息
1、数据库连接配置页面:connectvars.php
复制代码 代码如下:
<?php
//数据库的位置
define('DB_HOST', '127.0.0.1');
//用户名
define('DB_USER', 'root');
//口令
define('DB_PASSWORD', '19900101');
//数据库名
define('DB_NAME','test') ;
?>

2、登录页面:logIn.php
复制代码 代码如下:
<?php
//插入连接数据库的相关信息
require_once 'connectvars.php';
//开启一个会话
session_start();
$error_msg = "";
//如果用户未登录,即未设置$_SESSION['user_id']时,执行以下代码
if(!isset($_SESSION['user_id'])){
    if(isset($_POST['submit'])){//用户提交登录表单时执行如下代码
        $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
        $user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
        $user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));
        if(!empty($user_username)&&!empty($user_password)){
            //MySql中的SHA()函数用于对字符串进行单向加密
            $query = "SELECT user_id, username FROM mismatch_user WHERE username = '$user_username' AND "."password = SHA('$user_password')";
            $data = mysqli_query($dbc,$query);
            //用用户名和密码进行查询,若查到的记录正好为一条,则设置SESSION和COOKIE,同时进行页面重定向
            if(mysqli_num_rows($data)==1){
                $row = mysqli_fetch_array($data);
                $_SESSION['user_id']=$row['user_id'];
                $_SESSION['username']=$row['username'];
                setcookie('user_id',$row['user_id'],time()+(60*60*24*30));
                setcookie('username',$row['username'],time()+(60*60*24*30));
                $home_url = 'loged.php';
                header('Location: '.$home_url);
            }else{//若查到的记录不对,则设置错误信息
                $error_msg = 'Sorry, you must enter a valid username and password to log in.';
            }
        }else{
            $error_msg = 'Sorry, you must enter a valid username and password to log in.';
        }
    }
}else{//如果用户已经登录,则直接跳转到已经登录页面
    $home_url = 'loged.php';
    header('Location: '.$home_url);
}
?>
<html>
    <head>
        <title>Mismatch - Log In</title>
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <h3>Msimatch - Log In</h3>
        <!--通过$_SESSION['user_id']进行判断,如果用户未登录,则显示登录表单,让用户输入用户名和密码-->
        <?php
        if(!isset($_SESSION['user_id'])){
            echo '<p class="error">'.$error_msg.'</p>';
        ?>
        <!-- $_SERVER['PHP_SELF']代表用户提交表单时,调用自身php文件 -->
        <form method = "post" action="<?php echo $_SERVER['PHP_SELF'];?>">
            <fieldset>
                <legend>Log In</legend>
                <label for="username">Username:</label>
                <input type="text" id="username" name="username"
                value="<?php if(!empty($user_username)) echo $user_username; ?>" />
                <br/>
                <label for="password">Password:</label>
                <input type="password" id="password" name="password"/>
            </fieldset>
            <input type="submit" value="Log In" name="submit"/>
        </form>
        <?php
        }
        ?>
    </body>
</html>

效果图:


3、登入页面:loged.php

 

复制代码 代码如下:
<?php
//使用会话内存储的变量值之前必须先开启会话
session_start();
//如果会话没有被设置,查看是否设置了cookie
if(!isset($_SESSION['user_id'])){
    if(isset($_COOKIE['user_id'])&&isset($_COOKIE['username'])){
        //用cookie给session赋值
        $_SESSION['user_id']=$_COOKIE['user_id'];
        $_SESSION['username']=$_COOKIE['username'];
    }
}
//使用一个会话变量检查登录状态
if(isset($_SESSION['username'])){
    echo 'You are Logged as '.$_SESSION['username'].'<br/>';
    echo '<a href="logOut.php"> Log Out('.$_SESSION['username'].')</a>';
}
/**在已登录页面中,可以利用用户的session如$_SESSION['username']、
 * $_SESSION['user_id']对数据库进行查询,可以做好多好多事情*/
?>

效果图:

4、注销session与cookie页面:logOut.php(注销后重定向到lonIn.php)
复制代码 代码如下:
<?php
/**同时注销session和cookie的页面*/
//即使是注销时,也必须首先开始会话才能访问会话变量
session_start();
//使用一个会话变量检查登录状态
if(isset($_SESSION['user_id'])){
    //要清除会话变量,将$_SESSION超级全局变量设置为一个空数组
    $_SESSION = array();
    //如果存在一个会话cookie,通过将到期时间设置为之前1个小时从而将其删除
    if(isset($_COOKIE[session_name()])){
        setcookie(session_name(),'',time()-3600);
    }
    //使用内置session_destroy()函数调用撤销会话
    session_destroy();
}
//同时将各个cookie的到期时间设为过去的某个时间,使它们由系统删除,时间以秒为单位
setcookie('user_id','',time()-3600);
setcookie('username','',time()-3600);
//location首部使浏览器重定向到另一个页面
$home_url = 'logIn.php';
header('Location:'.$home_url);
?>
顶一下
TAGS:PHP5 使用详解
上篇新闻:PHP基础教程:第八讲:php启发和小结
下篇新闻:php5.5中类级别的常量使用介绍
高考与报名入口
课程推荐
  • 软件开发应用课程
  • 高中生学历教育
  • 网络营销课程
  • 学士后java培训课程
相关新闻
  • php5.5中类级别的常量使用介绍
  • PHP5中Cookie与 Session使用详解
推荐阅读
  • 桂林市极创电子科技有限公司Java程序招聘信
  • 桂林北大青鸟“高中生特招班”!十万年薪,你
  • 盘点2014年最热门的行业,高中生选择专业需睁
  • CCTV2经济半小时专题报道,北大青鸟关注就业
  • 高考新政:奥赛等加分缩水 加大见义勇为分
合作伙伴
友情链接
    • 北大青鸟总部
    • 桂林山水职业学院
    • 广州北大青鸟
    • 合肥北大青鸟
    • 考研
    • 中小学课外辅导
    • 昆明家教
    • 丽江公务员考试网
    • 易考吧培训
    • 人大留学预科班
    • ios培训
    • 江苏财经网
    • 郑州室内设计培训
    • 珠海北大青鸟
    • 武汉北大青鸟
    • JOBG游戏招聘
    • 北京北大青鸟
    • 桂林软件学院
    • 宁波培训
    • 深圳舞蹈学校
    • 北大青鸟学校
    • 桂林分类信息
    • 北京北大青鸟培训学校怎样
    • 桂林猎聘网
关于我们| 媒体报道| 青鸟荣誉| 大事记| 技术园地| 新闻中心| 在线报名| 在线咨询| 来校路线| 加入我们
    • 免费电话:400-078-8286
    • 客服热线:0773-2820777
    • 咨询时间:周一至周日 8:30-17:30
    • 传真:0773-2824777
    • 邮箱:gl.jb-aptech@qq.com
    • 投诉:0773-2820777
    • 校区地址:广西区桂林市秀峰区八桂大厦八层
    • 公交路线:乘坐10路、99路、100路公交车至十字街站
    • 邮政编码:541001
Copyright © 2008 - 2017 桂林志成信息技术有限责任公司  版权所有  桂ICP备17012984号