先在数据库当中创建以下数据:

mysql> create table user(
-> id int not null auto_increment,
-> username varchar(50) not null default '',
-> password char(32) not null default '',
-> email varchar(80) not null default '',
-> allow_1 smallint not null default 0,
-> allow_2 smallint not null default 0,
-> allow_3 smallint not null default 0,
-> primary key(id));
mysql> insert into user(username,password,email,allow_1,allow_2,allow_3) values('admin',md5('admin'),'admin@admin.com',1,1,1);
Query OK, 1 row affected (0.18 sec) mysql> insert into user(username,password,email,allow_1,allow_2,allow_3) values('shuaige',md5('shuaige'),'shuai@admin.com',0,1,1);
Query OK, 1 row affected (0.12 sec) mysql> insert into user(username,password,email,allow_1,allow_2,allow_3) values('daniu',md5('daniu'),'daniu@admin.com',0,0,1);
Query OK, 1 row affected (0.14 sec)

allow_x中的一代表用户的权限,其值中的 1代表拥有权限,0代表没有权限。看一下结构。

mysql> select * from user;
+----+----------+----------------------------------+-----------------+---------+---------+---------+
| id | username | password | email | allow_1 | allow_2 | allow_3 |
+----+----------+----------------------------------+-----------------+---------+---------+---------+
| 1 | admin | 21232f297a57a5a743894a0e4a801fc3 | admin@admin.com | 1 | 1 | 1 |
| 2 | shuaige | 37d2b9990df5a6843caf19352fee42a6 | shuai@admin.com | 0 | 1 | 1 |
| 3 | daniu | 76720c5adee75ce9c7779500893fb648 | daniu@admin.com | 0 | 0 | 1 |
+----+----------+----------------------------------+-----------------+---------+---------+---------+
3 rows in set (0.00 sec)

然后我们写几个文件夹:

  1. Index.php 首页
  2. Cookie.php Cookie页面
  3. Content.php 文章页面
  4. Exit.php  离开页面

第一个Index.php

<?php
echo "你好这是首页.<br />";
echo "<a href='login.php'>管理员页面登陆</a>";
?>

Index.php

第二个Cookie.php

<?php
header("content-type:text/html;charset=utf-8");
//判断是否存在并且判断是否已经登陆的反句。
if ((isset($_COOKIE['isLogin']) && $_COOKIE['isLogin'] == 1)) {
echo "抱歉,您还没有登陆呢.";
//不能直接使用header来跳转。
echo '<script>setTimeout(\'location="login.php"\',30000);</script>';
}
?>

Cookie.php

第三个Login.php

<?php
header("content-type:text/html;charset=utf-8");
include './cookie.php';
if (isset($_POST['dosubmit'])) {
$pdo = new pdo("mysql:host=localhost;dbname=admin","root","");
$sql = $pdo->prepare("select id,username,password,allow_1,allow_2,allow_3 from user where username =? and password=? ");
$sql->execute(array($_POST['username'],md5($_POST['password'])));
if($sql -> rowCount() > 0){//rowCount是执行sql影响的行数。
//list:把数组中的一些值赋值给变量,$sql->fetch(PDO::FETCH_NUM)是用来获取值的,然后组成 一个数组。
list($id,$username,$password,$allow_1,$allow_2,$allow_3) = $sql->fetch(PDO::FETCH_NUM);
echo "用户ID:".$id."<br />";
echo "用户账号:".$username."<br />";
echo "用户密码:".$password."<br>";
echo "用户权限:".$allow_1."<br>";
echo "用户权限:".$allow_2."<br>";
echo "用户权限:".$allow_3."<br>";
$time = time()+24*60*60;//当前时间加上一天的时间
//setcookie(name,value,time,path)
setcookie("uid",$id,$time,"/");//将$id存储在uid里面。
setcookie("username",$username,$time,"/");
setcookie("passworod",$password,$time,"/");
setcookie("allow_1",$allow_1,$time,"/");
setcookie("allow_2",$allow_2,$time,"/");
setcookie("allow_3",$allow_3,$time,"/"); header("location:content.php");
}else{
echo "<script>alert('密码错误!')</script>";
}
}
?>
<html>
<h3>用户登陆</h3>
<form action="" name='form1' method='POST'>
username:<input type="text" name="username" value='' /><br>
password:<input type="password" name="password" value='' /><br />
<input type="submit" name='dosubmit' value='登陆'><br />
</form>
</html>

Login.php

第四个Exit.php

<?php
if (isset($_COOKIE["username"])) {//问以下是否设置了username
setcookie("id","",time()-3600,"/");
setcookie("username","",time()-3600,"/");
setcookie("password","",time()-3600,"/");
setcookie("allow_1","",time()-3600,"/");
setcookie("allow_2","",time()-3600,"/");
setcookie("allow_3","",time()-3600,"/"); echo "再见,亲爱的{$_COOKIE['username']}";
}
?>
<script>
setTimeout("location='index.php'",3000);
</script>

Exit.php

跟着百度学PHP[14]-COOKIE的应用/网站登陆案例完整案例的更多相关文章

  1. 跟着百度学PHP[15]-SESSION的应用/网站登陆案例完整案例

    先把几个应该要有的页面建立好.

  2. 跟着百度学PHP[14]-PDO之Mysql的事务处理2

    前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...

  3. 跟着百度学PHP[14]-PDO之Mysql的事务处理1

    事务处理:在实际案例当中干一件事的mysql语句(好比转账,小一同学转账100,小二同学收账,在mysql当中小一就要减去转账的钱,小二就要增加100快)倘若该语句执行过程中有任何一条的sql语句出错 ...

  4. 跟着百度学PHP[14]-PDO的错误处理模式&PDO执行SQL

    我们在使用PDO去执行sql语句的时候并不会报错.如下案例所示: <?php try { //$pdo = new pdo("mysql:host=主机;port=端口;dbname= ...

  5. 跟着百度学PHP[14]-PDO-优化驱动

    使用方法设置预定义变量 PDO的方法/属性 PDO::beginTransaction — Initiates a transaction PDO::commit — Commits a transa ...

  6. 跟着百度学PHP[14]-初识PDO数据库抽象层

    目录: 00x1 php中的pdo是什么? 00x2 pdo创建一个PDO对象 00x1 php中的pdo是什么? 就是操作数据库的方法,pdo就是把操作数据库的函数封装成一个pdo类,其间做了安全验 ...

  7. 跟着百度学PHP[14]-PDO的预处理语句2

    在$sql = $pdo -> prepare("insert into users(gold,user,password) values(?,?,?)"):条语句我们不仅仅 ...

  8. 跟着百度学PHP[14]-PDO的预处理语句1

    预处理语句有以下两个特点: 1.效率高 2.安全性好 为什么说预处理语句效率高呢? 预处理语句就好比一个模板,比如下面的一串插入语句: insert into admin(id,username,pa ...

  9. 跟着百度学PHP[7]会话控制(session与cookie) 1.cookie的设置

    参考慕课网:http://www.imooc.com/learn/26 参考W3C:http://www.w3school.com.cn/php/php_cookies.asp setcookie() ...

随机推荐

  1. python中常用的推导(字典推导和列表推导)

    在python开发中经常需要书写这样的代码 result = list() for data in datas: if data not in ['a', 'b']: result.append(da ...

  2. Nginx部署前端代码实现前后端分离

    实现前后端分离,可以让前后端独立开发.独立部署.独立单测,双方通过JSON进行数据交互. 对于前端开发人员来说,不用每次调试都需要启动或配置Java/Tomcat运行环境:对于后端开发人员来说 ,也不 ...

  3. C++11常用特性的使用经验总结(转载)

    C++11已经出来很久了,网上也早有很多优秀的C++11新特性的总结文章,在编写本博客之前,博主在工作和学习中学到的关于C++11方面的知识,也得益于很多其他网友的总结.本博客文章是在学习的基础上,加 ...

  4. [Python爬虫] Selenium +phantomjs 模拟下拉滚动条

    在爬虫中,有时会遇到这种情况,数据的展示是不是一页一页的,而是通过不断的下拉滚动条来加载数据.例如一点咨询(http://www.yidianzixun.com/)和微博(在未登录的状态下:http: ...

  5. ckeditor body与P标签去除

    项目中使用到了ckeditor ,但在比编辑框的下方多出两个标签,分别是一个 body与P标签,查询代码后发现不是我们自己增加,而是组件自己就有的问题 经过查询在使用的js申请处 新增 CKEDITO ...

  6. Android fragment 切换载入数据卡顿问题

    接着上一篇项目的进度.上一篇讲了怎样利用fragment来实现下拉菜单.公用菜单,以实现切换主界面数据的功能,这时候遇到的问题是:使用了fragment的切换界面方法.但载入的数据太多.用户从一个界面 ...

  7. vue - (v-pre、v-cloak、v-once)

    1.v-pre,不和绑定的数据冲突,也就是不用它们的值 2.v-cloak,和css样式一起用,vue渲染未完成不显示 3.v-once,只渲染DOM第一次渲染的值,以后不会改变了(你不要刷新网页,然 ...

  8. iOS/iphone开发如何为苹果开发者帐号APPID续费

    原文地址:iOS/iphone开发如何为苹果开发者帐号APPID续费作者:陈双超_群雄 其实相当的简单,这篇内容是给财务看的,有的地方连我自己看了都感觉有点...但如果不详细,她又要为难我,所以我就当 ...

  9. 解决svn Authorization failed错误

    解决svn Authorization failed错误 (2010-09-22 21:37:31) 转载▼   出现该问题基本都是三个配置文件的问题,下面把这个文件列出来 svnserve.conf ...

  10. Linux管道符

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFpanVucGVuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...