PHP图片防盗链程序
[08-23 22:09:15] 来源:http://www.duoxue8.com PHP教程 阅读:673次
PHP图片防盗链程序,标签:PHP技巧,php培训,php学习,php安装,http://www.duoxue8.com
php 代码复制内容到剪贴板
PHP图片防盗链程序 结束。
- <?
- // ========================== 文件说明 ==========================//
- // 文件说明:图片防盗链程序
- // --------------------------------------------------------------//
- // 程序作者:Sindo(锐利工作室)
- // --------------------------------------------------------------//
- // 程序版本:0.1
- // --------------------------------------------------------------//
- // 运行依赖:一个中文字体文件 chinese.fon
- // --------------------------------------------------------------//
- // 程序主页:http://www.wreny.com
- // --------------------------------------------------------------//
- // Copyright (C) Wreny Studio. All Rights Reserved.
- // ==============================================================//
- main();
- function main() {
- //存放图片的文件夹在服务器上的绝对地址,注意以/结尾
- //$imgRootPath = "D:/WorkSpas/Apache/";
- $imgRootPath = "/home/610c00cfe2827dcf2ebf27314fb027a1/";
- //例外允许连接的网址,注意:自身域名不需要填入,设定为肯定可以连接图片
- $excludeReferArr = array("www.im286.com", "im286.com");
- doJudgeReferer($excludeReferArr);
- $imgRelPath=$_REQUEST['src'];
- if(emptyempty($imgRelPath)){
- doOutputMsgImg("未指定要查看的图片!");
- exit;
- }
- $srcSplitArr = explode(".", $imgRelPath);
- $srcSuffix = $srcSplitArr[count($srcSplitArr)-1];
- $srcSuffix = strtolower($srcSuffix);
- $imgAbsPath = $imgRootPath.$imgRelPath;
- if(!file_exists($imgAbsPath)){
- doOutputMsgImg("对不起,此图片链接已经失效!");
- }
- else if($srcSuffix == "gif") {
- header ("Content-type: image/gif");
- $imgFlag = $_REQUEST['flag'];
- if($imgFlag == "dynGif") {
- $fp = fopen($imgAbsPath, 'r');
- fpassthru($fp);
- }
- else {
- $image = imagecreatefromgif ($imgAbsPath);
- imagegif ($image);
- imagedestroy ($image);
- }
- }
- else if($srcSuffix == "jpg") {
- header ("Content-type: image/jpeg");
- $image = imagecreatefromjpeg (imgAbsPath);
- imagejpeg ($image);
- imagedestroy ($image);
- }
- else if($srcSuffix == "png") {
- header ("Content-type: image/png");
- $image = imagecreatefrompng ($imgAbsPath);
- imagepng ($image);
- imagedestroy ($image);
- }
- else {
- doOutputMsgImg("图像类型不支持");
- }
- }
- function doJudgeReferer($excludeReferArr) {
- $referUrl=parse_url($_SERVER["HTTP_REFERER"]);
- $referHost = $referUrl[host];
- if($referHost!="" && $referHost!=$_SERVER["HTTP_HOST"] && !in_array($referHost, $excludeReferArr)){
- doOutputMsgImg("BS来自".$referUrl[host]."的盗链!");
- exit;
- }
- }
- function doMarkImage($inImg,$inMarkStr="Powered by Wreny.com") {
- $black = imagecolorallocate ($inImg, 0, 0, 0);
- $imgWidth = imagesx($inImg);
- $imgHeight = imagesy($inImg);
- //289-108,86
- drawTxt($inImg,$inMarkStr, ($imgWidth-strlen($inMarkStr)*9),($imgHeight-16), $black);
- }
- function doOutputMsgImg($msg, $imgWidth=468,
- $imgHeight=60, $imgFgColorArr=array(0,0,0), $imgBgColorArr=array(255,255,255)) {
- $img = imagecreatetruecolor($imgWidth, $imgHeight);
- // 用白色背景加黑色边框画个方框
- $backColor = imagecolorallocate($img, 255, 255, 255);
- $borderColor = imagecolorallocate($img, 0, 0, 0);
- imagefilledrectangle($img, 0, 0, $imgWidth - 1, $imgHeight - 1, $backColor);
- imagerectangle($img, 0, 0, $imgWidth - 1, $imgHeight - 1, $borderColor);
- $imgFgColor = imagecolorallocate ($img, $imgFgColorArr[0], $imgFgColorArr[1], $imgFgColorArr[2]);
- drawTxt($img, $msg, ($imgWidth-strlen($msg)*9)/2,($imgHeight/2-16),$imgFgColor);
- doMarkImage($img);
- header('Content-type: image/png');
- imagepng($img);
- imagedestroy($img);
- }
- function isCharVilid($inStr, $inPos) {
- if(strlen($inStr) < ($inPos+1)) {
- return true;
- }
- else {
- for($iLoop=0,$iCounter=0;$iLoop<=$inPos; $iLoop++){
- if(substr($inStr, $iLoop, 1)<='~') {
- $iCounter++;
- }
- }
- return ( ($iCounter % 2) == 0 );
- }
- }
- function drawTxt($image, $string, $x, $y, $color) {
- $fp = fopen("chinese.fon", "r"); //WIN98中,此文件在:c:windowscommand 下
- if (feof($fp)) {
- fclose($fp);
- return 0;
- }
- //GBK
- $strings = preg_split(
- '/((?:[\x80-\xFF][\x40-\xFF])+)/', $string, -1, PREG_SPLIT_DELIM_CAPTURE
- );
- //print_r($strings);
- $isch = false;
- for ($p = 0, $count = count($strings); $p < $count; $p ++) {
- if ($isch) {
- $string = $strings[$p];
- for ($i = 0, $l = strlen($string) - 1; $i < $l; $i += 2) {
- $qh = ord($string{$i}); // get ascii code
- $offset = (94 * ($qh - 0xA0 - 1) + (ord($string{$i + 1}) - 0xA0 - 1)) * 32;
- fseek($fp, $offset, SEEK_SET);
- $buffer = unpack('n*', fread($fp, 32));
- // $buffers[$offset] = $buffer;
- for ($yy = 1, $ypos = $y; $yy <= 16; $yy ++, $ypos ++) {
- $bits = $buffer[$yy];
- for ($xbit = 32768, $xpos = $x; $xbit > 0; $xbit >>= 1, $xpos ++) {
- if ($bits & $xbit) {
- imagesetpixel($image, $xpos, $ypos, $color);
- }
- }
- }
- $x += 16;
- }
- }
- else {
- imagestring($image, 12, $x, $y, $strings[$p], $color);
- $x += strlen($strings[$p]) * 9;
- }
- $isch = !$isch;
- }
- return 0;
- }
- ?>
PHP图片防盗链程序 结束。
Tag:PHP教程,PHP技巧,php培训,php学习,php安装,电脑学习 - 编程入门 - PHP教程
PHP图片防盗链程序相关文章
- ·上一个:Apache处理器的使用
- PHP图片防盗链程序
- › PHP图片防盗链程序
- 在百度中搜索相关文章:PHP图片防盗链程序
- 在谷歌中搜索相关文章:PHP图片防盗链程序
- 在soso中搜索相关文章:PHP图片防盗链程序
- 在搜狗中搜索相关文章:PHP图片防盗链程序