原理是这样的:不使用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
请填写内容:
=$txt ?>