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入门学习的几个不错的实例代码
Jul 13 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
PHP实现多图片上传类实例
Jul 26 PHP
php多重接口的实现方法
Jun 20 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
php和vue配合使用技巧和方法
May 09 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
Views rows style模板重写代码
2011/05/16 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
图片onload事件触发问题解决方法
2011/07/31 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
package.json文件配置详解
2017/06/15 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
python正则表达式re之compile函数解析
2017/10/25 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
详解如何减少python内存的消耗
2019/08/09 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Pycharm调试程序技巧小结
2020/08/08 Python
Python实现自动整理文件的脚本
2020/12/17 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
今冬明春火灾防控工作方案
2014/05/29 职场文书
拆迁委托协议书
2014/09/15 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
《全神贯注》教学反思
2016/02/22 职场文书