php中使用cookie来保存用户登录信息的实现代码


Posted in PHP onMarch 08, 2012

使用cookie保存页面登录信息

1、数据库连接配置页面:connectvars.php

<?php 
//数据库的位置 
define('DB_HOST', 'localhost'); 
//用户名 
define('DB_USER', 'root'); 
//口令 
define('DB_PASSWORD', '19900101'); 
//数据库名 
define('DB_NAME','test') ; 
?>

2、登录页面:logIn.php
<?php 
//插入连接数据库的相关信息 
require_once 'connectvars.php'; $error_msg = ""; 
//判断用户是否已经设置cookie,如果未设置$_COOKIE['user_id']时,执行以下代码 
if(!isset($_COOKIE['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); 
//若查到的记录正好为一条,则设置COOKIE,同时进行页面重定向 
if(mysqli_num_rows($data)==1){ 
$row = mysqli_fetch_array($data); 
setcookie('user_id',$row['user_id']); 
setcookie('username',$row['username']); 
$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> 
<!--通过$_COOKIE['user_id']进行判断,如果用户未登录,则显示登录表单,让用户输入用户名和密码--> 
<?php 
if(empty($_COOKIE['user_id'])){ 
echo '<p class="error">'.$error_msg.'</p>'; 
?> 
<!-- $_SERVER['PHP_SELF']代表用户提交表单时,调用自身php文件 --> 
<form method = "post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
<fieldset style="width:250px;"> 
<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> 
<br/> 
<input type="submit" value="Log In" name="submit"/> 
</form> 
<?php 
} 
?> 
</body> 
</html>

效果图:

php中使用cookie来保存用户登录信息的实现代码

3、登入页面:loged.php
<?php 
//已登录页面,显示登录用户名 
if(isset($_COOKIE['username'])){ 
echo 'You are Logged as '.$_COOKIE['username'].'<br/>'; 
//点击“Log Out”,则转到logOut.php页面进行cookie的注销 
echo '<a href="logOut.php"> Log Out('.$_COOKIE['username'].')</a>'; 
} 
/**在已登录页面中,可以利用用户的cookie如$_COOKIE['username']、 
* $_COOKIE['user_id']对数据库进行查询,可以做好多好多事情*/ 
?>

效果图:

php中使用cookie来保存用户登录信息的实现代码

4、注销cookie页面:logOut.php(注销后重定向到lonIn.php)
<?php 
/**cookies注销页面*/ 
if(isset($_COOKIE['user_id'])){ 
//将各个cookie的到期时间设为过去的某个时间,使它们由系统删除,时间以秒为单位 
setcookie('user_id','',time()-3600); 
setcookie('username','',time()-3600); 
} 
//location首部使浏览器重定向到另一个页面 
$home_url = 'logIn.php'; 
header('Location:'.$home_url); 
?>
PHP 相关文章推荐
PHP5 的对象赋值机制介绍
Aug 02 PHP
Yii调试SQL的常用方法
Jul 09 PHP
php用ini_get获取php.ini里变量值的方法
Mar 04 PHP
PHP递归创建多级目录
Nov 05 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP生成随机数的方法总结
Mar 01 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 PHP
PHP 代码规范小结
Mar 08 #PHP
色色整理的PHP面试题集锦
Mar 08 #PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 #PHP
php打造属于自己的MVC框架
Mar 07 #PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 #PHP
php 操作符与控制结构
Mar 07 #PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 #PHP
You might like
yii框架builder、update、delete使用方法
2014/04/30 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
python 格式化输出百分号的方法
2019/01/20 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
python Scrapy框架原理解析
2021/01/04 Python
捷克时尚网上商店:OTTO
2018/03/15 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
"引用"与多态的关系
2013/02/01 面试题
CLR与IL分别是什么含义
2016/08/23 面试题
银行实习生的自我评价
2014/01/13 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
学生偷窃检讨书
2014/09/25 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
入党培养人考察意见
2015/06/08 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis