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设计模式 DAO(数据访问对象模式)
Jun 26 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
php获取新浪微博数据API实例
Nov 12 PHP
日常整理PHP中简单的图形处理(经典)
Oct 26 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
php插件Xajax使用方法详解
Aug 31 PHP
详解php与ethereum客户端交互
Apr 28 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 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 get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
php中curl使用指南
2015/02/05 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
详解vue 组件
2020/06/11 Javascript
python多线程编程中的join函数使用心得
2014/09/02 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
《雨点儿》教学反思
2014/04/14 职场文书
员工工作及收入证明
2014/10/28 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
月考总结与反思
2015/10/22 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP