如何给网页加使用期限

本文介绍了如何通过PHP实现网页的使用期限,避免通过修改本地时间绕过限制。方法包括HTML调用PHP、加密和时间戳对比,确保网页在特定日期后无法正常使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我做了一个项目,但是领导要求我给这个项目加一个使用期限,时间是2017年10月1日之前使用,时间过了之后就没有办法用了。
我想到的第一个办法就是获取本地时间,来判断是不是超过10月1日,这个方法相信大家都会的,就不说了。但是这个方法有一个bug,就是更改一下电脑时间项目就可以继续使用了,并不能满足我的需求。

下面来介绍一下我最后想到的一个方法,结合php实现给网页加一个使用期限

一、首先来说一下html何如调用php

html部分

<script type="text/javascript" src="b.php?action=test"></script>

b.php

<?php
$action=$_GET['action'];    
echo "document.write('".$action."');n";   
?>

二、加密方法

建一个common文件夹,里面放6个文件,后缀名.ini ,例如config.ini,kernel.ini,libexpat.ini,resource.ini,SettingApp.ini,yuntorrentfile.ini ,然后分别在这6个文件里面写6个任意的10位数的数字
比如:
1222387944
7412563214
9632563214
7452136985
8529631458
1507996800
一定要分段写入。这里用了6个.int文件,我们实际只要操作一个文件就可以 了,其余的只是混淆视觉,为了不让别人那么容易看出来我们的加密方式。

-* 先说一下实现的思路*
其实就是利用php读文件,写文件。先获取今天的时间戳,然后把.ini里的最后一组数字改写成今天的时间戳。改写的时候是需要先判断的,如果今天的时间戳小于我.ini里的最后一组数字,则不改写,即还是原来的数据。如果大于就改写成今天的,这样就防止了有人改电脑的本地时间的问题。
接着拿.ini里的最后一组数字和2017年10月1日的时间戳做比较,如果小于,程序正常,如果大于可以隐藏程序的一些开始按钮等等,以至于程序不能正常使用即可

下面贴代码:
b.php部分:

<?php 
header("Content-type: text/html; charset=utf-8"); 
$action=$_GET['action']; 
/*获取时间戳*/
 $t= time() ;
 /*随机获取10位数字*/
 $num=mt_rand(1000000000,9999999999);
 //mktime()把指定时间转化为时间戳

/*循环读取文件*/
$dir="common";
$file=scandir($dir);

//循环打开文件
for ($a=2; $a <8 ; $a++) { 
    /*打开文件*/

    $fh=fopen($dir."/".$file[$a],"r+");
            $i = 1; 
            while (!feof($fh)) {
                if ($i == 1) {
                    fseek($fh, 0, SEEK_CUR);
                    fwrite($fh, $num);
                    //这里的修改是替换形式,如果修改后这一行的长度比原来短,那么可以用空格填充到原来长度,这样实现修改,而且不影响后面的内容,但是修改后的比原来长就麻烦了,
                    break; 
                }
                fgets($fh);
                $i++;
            }
            fclose($fh);
} ;

/*指定读取yuntorrentfile.ini文件*/
$c = getLine($dir."/yuntorrentfile.ini", 5); // 读取yuntorrentfile.ini第5行内容
$jiezhi= getLine($dir."/config.ini", 6); // 读取yuntorrentfile.ini第5行内容


/**
 * 获取指定行内容
 *
 * $file 文件路径
 * $line 行数
 * $length 指定行返回内容长度
 */
function getLine($file, $line, $length = 4096){
    $returnTxt = null; // 初始化返回
    $i = 1; // 行数

    $handle = @fopen($file, "r");
    if ($handle) {
        while (!feof($handle)) {
            $buffer = fgets($handle, $length);
            if($line == $i) $returnTxt = $buffer;
            $i++;
        }
        fclose($handle);
    }
    return $returnTxt;
};

if($t>$c){
    $file_name=$dir."/yuntorrentfile.ini";
    /*打开文件*/
    $str=file_get_contents($file_name);
    /*替换字符串*/
    $str=str_replace($c, $t.PHP_EOL, $str);
    /*写入文件*/
    file_put_contents($file_name, $str);

};

/*判断我存储的第5行数据是否小于截止的时间戳*/
    if($c<$jiezhi){
        $action="1";
    }else{
        $action="0";
    }
 echo "document.write('<span data=".$action." id=jieshou></span>')";
 ?>

js部分

/*获取接受的值*/
   var msg= $('#jieshou').attr("data");
   if(msg==1){
        /*1表示时间没有到*/
    }else if(msg==0){
        /*0表示过期了*/
    }

这样就结束了

如果大家有更好的思路可以留言,如果我写的还有什么问题也可以提出,谢谢大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值