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中static静态变量的使用方法详解
Jun 04 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
php ci框架验证码实例分析
Jun 26 PHP
PHP判断远程图片或文件是否存在的实现代码
Feb 20 PHP
php实现的漂亮分页方法
Apr 17 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
PHP反射学习入门示例
Jun 14 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
python实现图片素描效果
2020/09/26 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
数组越界问题
2015/10/21 面试题
证婚人经典证婚词
2014/01/09 职场文书
义诊活动总结
2015/02/04 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP