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 相关文章推荐
PHP新手上路(七)
Oct 09 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
PHP 第三节 变量介绍
Apr 28 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
Jan 06 PHP
preg_match_all使用心得分享
Jan 31 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
PHP生成加减算法方式的验证码实例
Mar 12 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
php无限极分类实现的两种解决方法
2013/04/28 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
浅谈php和.net的区别
2014/09/28 PHP
php数组使用规则分析
2015/02/27 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP中的事务使用实例
2015/05/26 PHP
JS实现self的resend
2010/07/22 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python查询sqlite数据表的方法
2015/05/08 Python
python提取字典key列表的方法
2015/07/11 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
大学生四个方面的自我评价
2013/09/19 职场文书
安全检查验收制度
2014/01/12 职场文书
差生评语大全
2014/05/04 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP