etag php,PHP使用图片Etag判断用户的实例代码

原理是这样的:不使用Javascript,SESSION,COOKIES,FLASH。

面是使用图片的Etag信息识别用户:

1,根据用户的 REMOTE_ADDR 与 HTTP_USER_AGENT 生成唯一Etag。

2,将Etag输出到客户端。

3,获取 HTTP_IF_NONE_MATCH 判断是否同一个用户访问。

一,htaccess文件(.htaccess rewrite)

复制代码 代码示例:

RewriteEngine On

RewriteRule ^pic.png$ index.php?pic=1 [NC]

有关htaccess的相关内容,请参考文章:

Apache .htaccess配置的十一个实例

探讨:htaccess URL重写rewrite与重定向redirect

使用htaccess进行访问控制的方法详解

htaccess伪静态规则配置的几个例子

php中.htaccess文件的详细用法

17个简单实用的htaccess技巧

htaccess教程大全(伪静态、重定向、域名绑定、防盗链等)

.htaccess文件使用总结

.htaccess配置详解(全面经典不容错过)

apache .htaccess配置详解

.htaccess 文件的应用实例

二,php文件---index.php:

复制代码 代码示例:

define('SECRET', 'j8s91slksd9ab');  // secret

define('LOG', 'data.log');  // 保存用户数据

// 生成 etag

function genEtag(){

if(!empty($_SERVER['HTTP_IF_NONE_MATCH'])){

$etag = $_SERVER['HTTP_IF_NONE_MATCH'];

}else{

$etag = substr(md5(SECRET. substr(md5($_SERVER['REMOTE_ADDR']),0,16). substr(md5($_SERVER['HTTP_USER_AGENT']),0,16)),0, 16);

}

return $etag;

}

// 显示图片

function showPic($etag){

header('content-type:image/png');

header('Etag:'.$etag);

$im = imagecreate(1, 1); // 生成1x1px的透明图片

imagecolorallocatealpha($im, 0, 0, 0, 127);

imagepng($im);

imagedestroy($im);

exit();

}

// 获取存储的数据

function getData(){

$logdata = file_exists(LOG)? file_get_contents(LOG) : '';

if(!$logdata){

$data = array();

}else{

$data = json_decode($logdata, true);

}

return $data;

}

$etag = genEtag();

$pic = isset($_GET['pic'])? $_GET['pic'] : 0;

if($pic==1){

showPic($etag);

}

$data = getData();

// 提交表单

$send = isset($_POST['send'])? $_POST['send'] : 0;

if($send==1){

$txt = isset($_POST['txt'])? $_POST['txt'] : '';

if($txt!=''){

$data[$etag] = $txt;

file_put_contents(LOG, json_encode($data),true);

}

}

$txt = isset($data[$etag])? $data[$etag] : ''; // 用户输入的数据

?>

PIC ETAG - www.jbxue.com

  pic.png 

请填写内容:

=$txt ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值