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 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
一些使用频率比较高的php函数
Oct 03 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
php中explode与split的区别介绍
Oct 03 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
Prototype Template对象 学习
2009/07/19 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python中处理时间的几种方法小结
2015/04/09 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
动物科学专业毕业生的自我评价
2013/11/29 职场文书
建筑项目策划书
2014/01/13 职场文书
二手书店创业计划书
2014/01/16 职场文书
环保建议书
2014/03/12 职场文书
贷款委托书范本
2014/04/08 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
护理专科学生自荐书
2014/07/05 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
婚宴父母致辞
2015/07/27 职场文书