`
kefeng
  • 浏览: 15552 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

php之cookie会话控制

 
阅读更多

通过cookie将用户资料记录在客户端而不需要每次都从服务器调用,这样能提高网页效率,降低服务器的压力

下面的例子模拟一个登录界面的操作,使用cookie的调用

界面显示(未进行美化)



根目录下创建需要的文件


index.php中,首先写出如图的表格形式输出

<html>
	<head>
		<title>用户登录</title>
	</head>
	<body>
		<form action="login.php" method="post">
		<table align="center" border="1" width="300">
			<caption><h1>用户登录</h1></caption>
				<tr>
					<th>用户名</th>
					<td><input type="text" name="name"></td>
				</tr>
				<tr>
					<th>密码</th>
					<td><input type="password" name="password"></td>
				</tr>
				<tr>
					
					<td colspan="2" align="center">
						<input type="submit" name="sub" value="登录">
					</td>
				</tr>
		</table>
	</body>
</html>

因为要连接数据库,并调用数据库的数据,创建数据库并创建一个数据库调用的文件

创建一个users的表,并插入数据,这里数据插入信息包括用户名、密码和权限


在根目录下创建 conn.inc.php 用于存放数据库连接


conn.inc.php

<?php
    $mysqli=new mysqli("localhost","root","XXXXX","sqldb");

login.php 中包含连接数据库,使用mysqli方法,密码使用 md5() 方法加密

<?php
    if(isset($_POST["sub"])){
    	include "conn.inc.php";

    	$sql="select id from users where name='{$_POST["name"]}' and password='".md5($_POST["password"])."'";

    	$result=$mysqli->query($sql);

    	//保存数据
    	if($result->num_rows > 0){
    		$row=$result->fetch_assoc();
    		$time=time()*1800;
    		setCookie("username", $_POST["name"],$time);
    		setCookie("uid", $row["id"],$time);
    		setCookie("isLogin",1);

    		header("Location:index.php");  //跳转界面
    	}
    	echo "用户名密码有误";
    }
?>

注意cookie保存数据时需要表明数据保存的时长,保存数据中返回 “username”,“uid”,“isLogin"

index.php 中涉及页面跳转,创建一个公共的跳转页面的类 comm.php

comm.php:如果传回的是 “isLogin” 就进行跳转

<?php
    //判断:如果没登录自动跳转到登录页面
    if(!$_COOKIE["isLogin"]){
        header("Location:login.php");
    }

登录成功后跳转到 index.php 页面下,登录不成功就返回重新登录

index.php 包含 conn.inc.php 和 comm.php

<?php
    include "comm.php";  //判断是否登录成功
    include "conn.inc.php";
    echo "用户<b>".$_COOKIE["username"]."</b>你好!这是网站首页";
    echo "你的权限如下:<br>";
    $sql="select allow_1,allow_2,allow_3,allow_4 from users where id='{$_COOKIE["uid"]}'";
    $result=$mysqli->query($sql);
    $user=$result->fetch_assoc();
    if($user["allow_1"]){
        echo "111111111111<br>";
    }
    if($user["allow_2"]){
        echo "222222222222<br>";
    }
    if($user["allow_3"]){
        echo "333333333333<br>";
    }
    if($user["allow_4"]){
        echo "444444444444<br>";
    }


    ?>

    <a href="test.php">第二页</a><br>
    <a href="test2.php">第三页</a><br>
    <a href="logout.php">退出</a><br>
最后第二页、第三页的写法跟 index.php 一样

登出 logout.php 需要注销用户信息

<?php
    include "comm.php";  //判断是否登录成功
    
    $username=$_COOKIE["username"];  //取出用户名
    //注销
    setCookie("username");
    setCookie("uid");
    setCookie("islogin");
    echo $username."再见";



?>
<br>
<a href="login.php">重新登录</a>




完整代码:

login.php:

<?php
    if(isset($_POST["sub"])){
    	include "conn.inc.php";

    	$sql="select id from users where name='{$_POST["name"]}' and password='".md5($_POST["password"])."'";

    	$result=$mysqli->query($sql);

    	//保存数据
    	if($result->num_rows > 0){
    		$row=$result->fetch_assoc();
    		$time=time()*1800;
    		setCookie("username", $_POST["name"],$time);
    		setCookie("uid", $row["id"],$time);
    		setCookie("isLogin",1);

    		header("Location:index.php");  //跳转界面
    	}
    	echo "用户名密码有误";
    }
?>
<html>
	<head>
		<title>用户登录</title>
	</head>
	<body>
		<form action="login.php" method="post">
		<table align="center" border="1" width="300">
			<caption><h1>用户登录</h1></caption>
				<tr>
					<th>用户名</th>
					<td><input type="text" name="name"></td>
				</tr>
				<tr>
					<th>密码</th>
					<td><input type="password" name="password"></td>
				</tr>
				<tr>
					
					<td colspan="2" align="center">
						<input type="submit" name="sub" value="登录">
					</td>
				</tr>
		</table>
	</body>
</html>


















版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    PHP 会话控制 cookie 基础教程

    PHP 会话控制 cookie 基础教程

    PHP会话控制SESSION与COOKIE

    PHP会话控制SESSION与COOKIE

    一个php类用于处理cookie会话.zip

    介绍一个php类用于处理cookie会话,需要的朋友们可以下载参考。

    PHP会话控制:Session与Cookie详解

    本文介绍了PHP会话控制,主要阐述以下几点内容: • 会话控制的产生背景/概念 • cookie的维护与生命周期(有效时间) • session的维护与生命周期(回收机制) • cookie与session之间的区别与联系 • 问题1:禁用...

    php cookie工作原理与实例详解

    在php 中cookie是我们常用到的,但是可能很多朋友都不知道cookie是怎么工作的,下面小编来给大家整理一下关于php cookie 工作原理与一些对于cookie读写操作实例。 Cookie和会话状态 做BS开发,这两个概念必不可少,...

    PHP入门教程之会话控制技巧(cookie与session)

    主要介绍了PHP入门教程之会话控制技巧,结合实例形式分析了cookie与session的具体使用方法与相关注意事项,需要的朋友可以参考下

    PHP创建和使用session cookie变量

    &lt;?php // session start session_start(); // 开始一个会话,如果要使用session程序最前面一定要加上这句 $_SESSION['user_id'] = ‘123′;//给一个session 变量赋值,如果该变量不存在即创建 echo $_SESSION['user...

    Session Cookie的HttpOnly和secure属性

    当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。...

    PHP cookie与session会话基本用法实例分析

    cookie即是传统的会话控制,由于要存储的信息是保存在客户端的,所以安全系数较低,而session会话控制是将要存储的信息保存在服务器上的,所以相对于cookie安全系数较高. 不论是在使用cookie方式存储,还是session...

    PHP会话操作之cookie用法分析

    本文实例分析了PHP cookie用法。分享给大家供大家参考,具体如下: 会话技术:cookie 允许服务器端脚本在浏览器存储数据的技术, 允许服务器向浏览器发送指令,用来管理存储在浏览器端的cookie数据 浏览器如果存储...

    php中cookie的作用域

    您可能感兴趣的文章:php中cookie实现二级域名可访问操作的方法php跨域cookie共享使用方法php中cookie的使用方法PHP CURL获取cookies模拟登录的方法PHP读取CURL模拟登录时生成Cookie文件的方法PHP会话控制:Session与...

    PHP会话控制实例分析

    主要介绍了PHP会话控制,结合实例形式分析了php针对cookie与session的相关操作技巧,需要的朋友可以参考下

    易语言多线程取cookie

    易语言多线程取cookie源码,多线程取cookie,取cookie,InternetGetCookie,LoadMemLibrary,FreeMemLibrary,GetMemProcAddress,取文本型指针,取字节集指针,CreateThread,MsgWaitForMultipleObjects

    php使用Cookie实现和用户会话的方法

    本文实例讲述了php使用Cookie实现和用户会话的方法。分享给大家供大家参考。具体分析如下: PHP 包含了很多的函数,可以用来管理和记录用户信息,包括简单的 cookie 和全方位的用户会话。会话使用 PHP 语言内建的...

    Web应用安全:HTTPCookie的缺点.pptx

    Web 应用中广泛使用 Cookie 来进行会话管理,而如果 Cookie 的使用方法不当就会滋生安全隐患。与 Cookie 相关的安全隐患大致可分为以下两类。 1)Cookie 的用途不当 2)Cookie 的输出方法不当 Cookie的使用不当 Web...

Global site tag (gtag.js) - Google Analytics