作用:适用于淘宝、京东首页 做用户登录
1、用户第一次访问到首页时,是查询所有数据库输出到首页面,当再次刷新(请求)首页时,是根据缓存到本地的文件输出,
以上是php静态缓存
2、运用jquery技术 设置页面加载事件ajax(get)请求,用户首次访问首页面,未登录状态,
在导航区会存有一个登录按钮,此时html文件(页面)已经成功缓存到本地。
3、当用户选择登录成功时,并不会再次缓存一个html文件到本地,而是会再次触发ajax请求
从而实现局部刷新的功能。
接下来,以k780首页为例
k780.php
<?php
//首先也是先判断本地缓存是否存有k780.html页面
if(!is_file("k780.html")){
ob_start();//打开缓冲区
?>
<!--php页面输出部分内容。也是ob_get_contents()函数取得的全部内容-->
<div class="top_uinfo" id='user'>
</div>
<!--页面输出部分内容。-->
<?php
$info = ob_get_contents(); //得到缓冲区的内容并且赋值给$info
$file = fopen('k780.html', 'w'); //打开文件k780.html
fwrite($file, $info); //写入信息到k780.html
fclose($file); //关闭文件k780.html
}else{
echo "cache:";
echo file_get_contents("k780.html");
}
在php页面输出内容时,开启一个ajax(get)页面加载事件
<script type="text/javascript">
$(document).ready(function(){
$.get("user.php",function(data){
$("#user").html(data);
})
})
</script>
user.php
<?php
header("content-type:text/html;charset=utf-8");
if(isset($_COOKIE['name'])){
?>
欢迎<a style="color:#0077FF;" href="http://www.k780.com/?q=mgr"><?php echo $_COOKIE["name"]; ?></a>
<a href="exit.php">安全退出</a> | <a href="http://www.k780.com/?q=pay&type=recharge"><font color="red">充值</font></a>
<?php
}else{
?>
<a href="login.php">登录</a>
<?php } ?>
login.php 用户登录的html页面
<meta charset="UTF-8">
<form method="post" action="logindo.php">
<table>
<tr>
<td>用户名:<input type="text" value="" name="name" /></td>
<td>密 码:<input type="password" value="" name="pwd" /></td>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>
用户信息匹配成功后,把用户名存入Cookie 同时跳转到k780.php
logindo.php
<?php
//接受到login.php传过来的POST值
$name = $_POST['name'];
$pwd = $_POST['pwd'];
//dsn连接数据库
$dsn = "mysql:host=localhost;dbname=user";
$db = new PDO($dsn, 'root', 'root');
//查询数据库,判断用户输入的信息与数据库信息是否相匹配
$rs = $db->query("SELECT * FROM user where name='$name' and pwd='$pwd'");
while($row = $rs->fetch()){
if($row){
setcookie('name',$row['name']); //用户名存入Cookie
header("Location: test_k780.php");
}else{
echo 0;
}
}
用户退出,清除cookie 同时跳转到k780.php
exit.php
<?php
setcookie("name", "");
header("Location: test_k780.php");