利用图片Etag判断用户

               

原理:不使用Javascript,SESSION,COOKIES,FLASH。
            利用图片Etag识别用户
            1.根据用户的 REMOTE_ADDR 与 HTTP_USER_AGENT 生成唯一Etag。
            2.将Etag输出到客户端。
            3.获取 HTTP_IF_NONE_MATCH 判断是否同一个用户访问。

.htaccess rewrite

<IfModule mod_rewrite.c>RewriteEngine OnRewriteRule ^pic.png$ index.php?pic=1 [NC]</IfModule>

源码 index.php:
<?define('SECRET', 'j8s91slksd9ab');  // secretdefine('LOG', 'data.log');          // 保存用户数据// 生成 etagfunction 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] : ''; // 用户输入的数据?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <meta http-equiv="content-type" content="text/html; charset=utf-8">  <title> PIC ETAG </title> </head> <body>  <img src="pic.png">  <form method="post" action="index.php">  <p>请填写讯息:</p>  <p><textarea name="txt" style="width:450px;height:150px"><?=$txt ?></textarea></p>  <p><input type="submit" value="提交"></P>  <input type="hidden" name="send" value="1">  </form> </body></html>


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值