欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

在线短地址服务

程序员文章站 2022-05-06 12:17:54
...
在线短地址服务
<?php
header("Content-Type:text/html;charset=utf-8");

define('Txpath', dirname(__FILE__).'/aytemp/');  //缓存目录

define('URL','http://127.0.0.4/'); //程序主域名

define('ANYOUAPI','anyou');

$pageb = mima('当前页码');

$mbox = '压缩后的网址:';

$MUM = new Mem();

$dangqian = $MUM -> g( $pageb);

if( !$dangqian ){
  $dangqian = 1 ;$MUM -> s( $pageb,1);
}  //当前url



if($_POST['url']){ 
$wz = mima($_POST['url']);

if($MUM -> g($wz)){ $zhi =  $MUM -> g($wz); echo  $mbox.URL.$zhi; 
}
else{$danzhi =   dechex($dangqian); $url = mima('@'.$danzhi); $MUM -> s($url,$_POST['url']);
 $MUM -> s($wz,   $danzhi); 
$MUM -> j( $pageb,1);  echo   $mbox.URL.$danzhi;
$dangqian+=1;
}

}


	
if($_POST['yuan']){
		
$urlv = $MUM -> g(mima('@'.$_POST['yuan']));
		
if($urlv){
$urlv = str_replace("script",'',strtolower($urlv));
 
	echo '还原后的网址:'.$urlv ;

}else
  echo '网址没有压缩';


}



function arr2file($filename, $arr=''){
	if(is_array($arr)){
		$con = var_export($arr,true);
	} else{
		$con = $arr;
	}
	$con = "<?php \nreturn $con;\n";
        file_put_contents($filename, $con);
}

function mima($var){  

   $varstr = strlen($var);
   $hash = md5(md5(base64_encode($var.'13yd~!@#$%^&*(){}[1500]').$varstr));
   return substr($hash,6,16);
	 
 }


function p(){
	 $args=func_get_args();
	 if(count($args)<1) return;
	 echo '<p style="width:100%;text-align:left"><pre>';

	foreach($args as $arg){
		if(is_array($arg)){  
			  print_r($arg);
			  echo '<br>';
		  }else if(is_string($arg)){
			echo $arg.'<br>';
		  }else{
			var_dump($arg);
			echo '<br>';
		  }
		}
		    echo '</pre></p>';	
}

class Mem{

//Memcache
//r(名,值) 替换值
//s(名,值,时间) 设置值
//g(名) 获取值
//a(名,值,时间) 新建立值 没有就新建 有就返回 false;
//d(名);删除值
//f(); 清空
//ja(名,数量);//减的数量
//j(名,数量);//加的数量
//gS();获取统计值
//gV();获得版本

private $md = null;

function __construct(){
       $md = new Pxhc;
	
	 
	 
	 $this->md=$md;
		     

			
}
	



public function r($key, $value){ //获取对象
       return $this -> md -> replace( $key, $value);
}
public function s($key,$value,$time=0){  //设置值
       return $this -> md -> set( $key, $value, MEMCACHE_COMPRESSED, $time);
}
public function g($key){  //获取值
       return $this -> md -> get( $key);
}
public function a( $key, $value, $time=0){
       return $this -> md -> add( $key, $value, MEMCACHE_COMPRESSED, $time);
}
public function d( $key){  //删除一个值
       return $this -> md -> delete( $key); //删除一个值
}
public function f(){ //清空全部flush
       return $this -> md -> flush();
}
public function ja( $key, $num=1){ //加法运算
       return $this -> md -> decrement( $key, $num);
}
public function j( $key, $num=1){ //减法预算
       return $this -> md -> increment( $key, $num);
}      
public function gS(){ //获取进程池中所有进程的运行系统统计 
       return $this -> md -> getExtendedStats();
}
public function gV(){ //版本
       return $this -> md -> getVersion();
}
public function error(){  //判断是否开启
       $stats = $this -> md -> getStats();
       if( empty( $stats )) return false;
       else return true;
}
 

}
 


class Pxhc{ //文本缓存
public function replace($key, $value){ //替换规则
       $pat = Txpath.$key.'.php';
       if(file_exists( $pat)){
          arr2file( $pat,$value);
          return $value;
        } else return false;
}

public function add($key, $value, $num='', $time){ //如果存在
       $pat = Txpath.($key).'.php';
       if(file_exists( $pat))  return false;
       else{  arr2file( $pat,$value); return $value;}
}

public function increment($key,$num){ //加 条目
       $pat = Txpath.urlencode($key).'.php';
       if(file_exists($pat)){
          $value = include $pat;
          $value = $value*1+$num;
          arr2file($pat,$value);
          return $value;
       }else return false;
}

public function getExtendedStats(){
       $zzz = Txpath;
       $nums = 0;
       $mydir = dir($zzz); //读取配置文件
       while($file = $mydir->read()){ 
       if(($file != ".") and ($file != "..") and (strstr($file,".php"))){
       $file = str_replace(".php",'',$file);
       $files[] = $file;
       $nums++;
	} 
       } 
      $mydir -> close();
      $files['Nums'] = '变量数:'.$nums.'个';
      return $files;
}

public function decrement($key,$num){ //减 条目
       $pat = Txpath.$key.'.php';
       if(file_exists( $pat)){
          $value = include $pat;
          $value = $value*1-$num;
          arr2file($pat,$value);
          return $value;
       }else return false;
}

public function get($key){   //获取值
       $pat = Txpath.$key.'.php';
       if(file_exists($pat)){
       return include $pat;
       }else return false;

}
public function delete($key){ //删除值
       $pat = Txpath.urlencode($key).'.php';
       if(file_exists($pat)){
         unlink($pat);
         return true;
        }else return false;
}

public function flush(){ //删除全部
       $zzz = Txpath;
       $mydir = dir($zzz); //读取配置文件
       while($file = $mydir -> read()){ 
		if(($file!=".") and ($file!="..")){
                $files=$zzz.$file;
		 unlink($files);

		} 
	} 
       $mydir->close();
       return true;
 }


public function set($key, $value, $ss, $time){ //设置值
       $pat = Txpath.$key.'.php';
       if(!is_array($value))$value="'".$value."'";
       arr2file($pat,$value);
       return $value;
}


public function getVersion(){ 
        return '0.0.1';
        }

}
$PATHINFOS = ltrim(strtolower($_SERVER['PATH_INFO']),'/');
$urlv = $MUM -> g(mima('@'.$PATHINFOS));
if($urlv){
   header('HTTP/1.1 302 Found');
   header("Location: $urlv");
   die;
 }
?>

<form method="post">

以压缩<b style="color:red;"><?php echo $dangqian;?></b>个网址
网址压缩:<input type="text" name="url" value="" style="width:200px;"/>

网址还原:<input type="text" name="yuan" value="" style="width:200px;"/> 
<input type="submit" value="压缩" />

</form>

以上就是在线短地址服务的内容,更多相关内容请关注PHP中文网(www.php.cn)!