对盗链说再见...

 更新时间:2016年11月25日 16:33  点击:1691
第一页内随机的产生一个数(0-15)-》dechex()保存在session内
然后将URL使用此标记进行运算,随便你运算了,不过要能逆过来才行~
第二页则检测是否有此标记,有则进行逆运算,然后将变量取出
优点:(必须访问站点URL才有效~)
缺点:(保存到本地的页面链接全部失效,盗链失效)
---------------------------------------------
<?php
ob_start();
session_start();
if(isset($_SESSION[key]))else{          //无钥匙
    $key=dechex(rand(0,15));    //产生钥匙
    //如果您本页已经是最后一页,而不允许盗链的链接的话
    //echo "您的链接并非来自本站!请访问站点后访问此页...";
    //exit();
}
?>
HTML内容..............(这里包含很多链接的...)
<?php
$htmlcontent=ob_get_contents();        //获取所有HTML内容
...............................        //替换所有连接参数href=url?被替换的数据(一组正则)
ob_end_flush();           //输出HTML内容(href=已经加密后的数据)
?>

刚在网上找的一个类。点击下载类文件(zip压缩文件,2.25K)
$z = new PHPZip(); //新建立一个zip的类
  方法一:
$z -> Zip("", "out1.zip"); //添加当前目录和子目录下的所有档案
  方法二:
$files=array('1.txt','gb.txt');
$files[]='5.txt';
$z -> Zip($files, "out2.zip"); //添加文件列表
  方法三:
$z -> Zip("/usr/local/sext/", "out3.zip"); //添加指定目录
首先介绍一下session的概念:
  所谓session是微软首先提出的,在asp中最先集成。由于session的采用,大大方便了web开发员的工作。一时间asp风靡全球。现在php4也加入session的支持,再度显示出open source 的强大力量。和Cookie类似,设计Session的目的也是为了在一个访问期间在不同的页面间传输数据以解决http协议无状态的问题,但Session更加简单、更加安全。Session 中文没有一个统一的译法,我习惯上译为会话。关于session的意义大家都应该清楚: 其实是在浏览某个网站时,在浏览器没有关闭的情形之下,一个web应用的开始和结束。一个session可以包括数次http的请求和应答,比如我们用freemail.263.net,从login到logout或者超时就作为一个session 的生存期。每一个被创建的Session都有一个唯一的标识串,叫session ID , 这个串被发送到客户端,同时在服务器端也生成了同样唯一的标识串入口,这个标识串或者放在文本文件中,或者放在一个数据库中。然后程序可以在这个sessionID下注册一些Session 变量。这些变量如同一般的变量一样可以保存文本或数值信息,可以通过Session被读出或写入。
 session 的唯一标识一般是在系统内部唯一的session ID,一般是一个挺长的字符串。
问题的提出:
  解了session概念后,我在为我单位编写一个进销存系统中发现需要让多个用户可以同时进入一个php应用程序。原来设计的静态的唯一的session ID导致数据混乱。这样,动态生成一个唯一的session ID成为当务之急。
  解决办法很简单:我用了php文件名+时间戳为唯一的session ID,这样在我的程序中的每个session就各就各位,不再混乱了。
下面把我的源代码公布,方便也有同样的问题的朋友多一个解决方法。
//Start a PHP session to preserve variables.
      if ( empty($mysessionname) ) {
         $micro = microtime();
         $micro = str_replace(" ","",$micro); // strip out the blanks
         $micro = str_replace(".","",$micro); // strip out the periods
         $mysessionname = "po_maint" . $micro;
      }
      session_name($mysessionname);
      session_start();
程序注释:
  我用mysessionname为页面间唯一的sessionname传递变量,如果你也用到这个名字必须把上述程序做个小小的改动。Mysessionname不能为session的内部变量名,因为他在session开始之前就已经存在了。Mysessionname也不能用cookie方式存放,因为多个session肯定会覆盖掉原先的cookie文件。你可以用隐含表单的域来保存它。这样就不会有问题。欢迎来信讨论。让我们一起做得更好。
    phplib里带的template.inc包含了一个模板类,用它可以实现程序代码和
界面的分离,给程序设计和界面设计带来了极大的方便,而且它的实现比快速
模板要好。但有一个致命的小错误导致set_block()函数不能正常使用,而这个
函数是非常重要的,它在处理重复块时显得非常的好用。
    下面通过一个最简单的例子来讲解用法及解决方法:
模板文件:page1.ihtml(名字你可以随便取,后缀ihtml是一种习惯用法)
<HTML>
<HEAD>
<TITLE> {TITLE} </TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<!-- BEGIN TBK -->
ID: {ID}<BR>
NAME: {NAME}<BR>
<HR>
<!-- END TBK -->
</BODY>
</HTML>
处理文件:test.php
<?php
    include("./template.inc");
    # 创建模板变量$t    
    $t = new Template(".", "keep");
    # 定义页面变量的引用,这样你就可以用page1来引用页面了
    $t->set_file("page1","page1.ihtml");
    # 提取名称为TBK的块,让它指向tbks的引用
    $t->set_block("page1", "TBK", "tbks");
    # 替换标题TITLE变量
    $t->set_var("TITLE","my test of template");
    # 定义ID和NAME,然后把TBK附加到tbks
    for ($i=1; $i<=3; $i++) {
    $n    = $i;
    $nn = $i*10;
    $t->set_var(array("ID" => $n, "NAME" => $nn));
    $t->parse("tbks", "TBK", true);
    }
    # 最后输出页面
    $t->pparse("out", "page1");
近来设计模式风行,MVC随处可见,PHP领域也不例外,很多论坛都开始讨论在PHP中使用MVC。然而,M、V、C在PHP中到底该如何实现?MVC真的适合PHP么?这里Easy给出一些自己的思考。
  MVC的原型
  MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
  JAVA中的MVC
  JAVA把MVC引入了Web领域,并在此基础上架构出了一套称为Model2的体系。由于Web的特殊性,JAVA中的MVC和Desktop中的MVC并不完全一致。主要原因是Web中的V不是持续的,用户每访问一次,V就要重新生成一次,所以V始终是和M一致的,不需要C来控制同步。那么JAVA中的C在干什么?JAVA中的C通常用于流程的转向,其实用的是Dispatch模式,不再是Desktop中的C了。
  PHP中的MVC
  要在PHP中原封不动的COPY JAVA的MVC是不可能的。问题主要表现在M上,在JAVA中,M是独立于业务逻辑和表现逻辑的数据模型,在服务器端跨页面存在,JAVA Bean扮演的就是这个脚色。而PHP进程并不长时间驻留于内存,只在PHP页面开始执行时创建,在页面解释执行结束时就已经结束。在这样的情况下,我们根本无法直接实现M。所以所有声称实现了MVC模式的PHP程式都只能通过模拟手段来实现M。实现的方式一般是在当前页面结束前把数据存入数据库或者cookie/session,在下一个页面中再透过数据库或者cookie/session重建M。这样的方式和JAVA中的Bean比起来可以说是开销巨大,本来往内存中写数据的简单操作现在要从服务器端传到客户端或者数据库,然后再传回来。与其用这么大的开销来维护一个数据模型再在最后把这个模型塞回数据库,还不如直接根据需要更新数据库里边的数据。

[!--infotagslink--]

相关文章

  • apache 防盗链配置方法

    修改httpd.conf 找到 <Dirctory "/var/www/html"> 在这个Dirctory容器内添加: 代码如下 复制代码 SetEnvIfNoCase Referer "^http://www.111cn.net/"...2016-01-28
  • Linux中Nginx的防盗链和优化的实现代码

    今天是周末小编在值班哈,很开森,工作使我快乐,本文重点给大家介绍Linux中Nginx的防盗链和优化问题及实现代码,需要的朋友跟随小编一起看看吧...2021-06-19
  • 真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法

    本规则支持白名单排除式防盗链,搜索引擎友好不屏蔽,被盗链后的错误提示转向,支持各种文件类型,经作者亲验真的能用...2016-01-27
  • Nginx服务器下防盗链的方法介绍

    这篇文章主要介绍了Nginx服务器下防盗链的方法介绍,主要通过修改服务器的配置文件来实现,需要的朋友可以参考下...2016-01-27
  • php简单防盗链验证实现方法 原创

    这篇文章主要介绍了php简单防盗链验证实现方法,通过$_SERVER['HTTP_REFERER']获取来路页面URL再进行判断进而实现对非本地URL的拦截功能,需要的朋友可以参考下...2016-07-25
  • nginx rewrite重写规则与防盗链配置方法教程详解

    这篇文章主要介绍了nginx rewrite重写规则与防盗链配置方法教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-09-28
  • Asp.net 图片文件防盗链(尊重劳动成果)及BeginRequest事件学习

    关于图片盗链这个问题,毕竟是自己的劳动成功,很多人不希望别人就那么轻易地偷走了;反盗链的程序其实很简单,熟悉ASP.NET 应用程序生命周期的话很容易就可以写一个,运用HttpModule在BeginRequest事件中拦截请求就ok了...2021-09-22
  • php破解apache,nginx,iis防盗链图片

    现在多数网站都有防盗链一些简单设置了最常用的就是apache,nginx,iis设置了,那么这种设置是不是不可破的呢,答案是否写了,下面我们一起来看破解方法。 有自己的主机...2016-11-25
  • 用rewrite实现IIS下图片文件防盗链的办法

    IIS不支持UrlRewrite。 所以我们需要通过安装第三方服务器扩展让IIS支持UrlRewrite。 目前有一种产品能比较好地支持IIS的UrlRewrite,名字叫ISAPI_Rewrite。...2016-01-27
  • apache设置防盗链有效方法

    代码如下 复制代码 <VirtualHost *:80> DocumentRoot d:/soft/soft ServerName 111cn.net SetEnvIfNoCase Referer "^http://www.111cn.net...2016-01-28
  • 使用referer指令配置Nginx服务器来防止图片盗链

    这篇文章主要介绍了使用referer指令配置Nginx服务器来防止图片盗链的方法,文中也简单介绍了referer指令的一些语法和常用参数,需要的朋友可以参考下...2016-01-27
  • IIS图片防盗链和下载的解决方案

    最近服务器需要防图片别盗链,所以找了很多代码,下面给出具体配置代码...2016-01-27
  • Nginx防盗链的配置方法

    这篇文章主要介绍Nginx下的防盗链的配置方法,需要的朋友可以参考下...2016-01-27
  • php防盗链几种代码

    我们这里讲述的防盗链代码只专注于php的解决方案,当然如果你有服务器管理权限或htaccess文件操作我建义不要用php防盗链哦。 先来看个最简单的 下面是php实现的代...2016-11-25
  • Nginx防盗链的3种方法

    Nginx防盗链的3种方法,需要的朋友可以参考下。...2016-01-27
  • php采集代码-反防盗链采集

    很多php新手在开发自己的网站采集功能时都会直接用到file_get_contents来读取或fopen是吧,是吧,我们下载采集功能加强了了一点点就是要对方的防盗链都不能防止的采集功...2016-11-25
  • PHP文件与图片防盗链处理类

    防盗链就是对一些文件资源进行包装了,这样对方是看不到我们文件源地址了,下载是也是php文件打开了,下载成功之后就成了要下载的文件了,下面我来给各位分享一站长写的类。...2016-11-25
  • php下通过伪造http头破解防盗链的代码

    方法一 $txt=$_get['url']; echo referfile($txt,'http://www.111cn.net/'); function referfile($url,$refer='') { $opt=array('http'=>array('header'=>"refe...2016-11-25
  • php实现博客,论坛图片防盗链的方法

    这篇文章主要介绍了php实现博客,论坛图片防盗链的方法,涉及php字符串结合session判定图片的相关操作技巧,需要的朋友可以参考下...2016-10-20
  • win2008 IIS7.5防盗链配置方法

    最近有客户配置了win2008 iis7.5,因为转载的比较多,所以考虑到简单的防盗链,特整理下方便需要的朋友...2016-01-27