Heim  >  Artikel  >  Backend-Entwicklung  >  php之cookie对话控制

php之cookie对话控制

WBOY
WBOYOriginal
2016-06-13 12:16:19815Durchsuche

php之cookie会话控制

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

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

界面显示(未进行美化)



根目录下创建需要的文件


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

			<title>用户登录</title>				

用户登录

用户名
密码

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

创建一个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=&#39;{$_POST["name"]}&#39; and password=&#39;".md5($_POST["password"])."&#39;";    	$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"]."你好!这是网站首页";    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=&#39;{$_POST["name"]}&#39; and password=&#39;".md5($_POST["password"])."&#39;";    	$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 "用户名密码有误";    }?>			<title>用户登录</title>				

用户登录

用户名
密码


















Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn