列出文章
|
頁: [1] 2
|
4
|
開發 / 外掛程式 / Re: 讓 authimage 顯示中文的數字
|
於: 三月 12, 2007, 07:51:33 上午
|
我有看到那篇, 不過, 我也是用 debian/etch, 並沒有自己重編 php, 都使用內建的模組, 並沒有與你一樣的問題.
apt装的lamp会装上很多php模块的,我的虽然是在debian下,但apache和php是自己编译的所以会遇到这个问题 希望twu2继续多出好东西啊 :)
|
|
|
6
|
開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形
|
於: 三月 11, 2007, 10:28:38 上午
|
这个是我改好的for 1.0的pluginauthimage.class.php文件,有需要的朋友可以直接拿来用了,数字1有时有点难看,我也去掉了 <?php
include_once( PLOG_CLASS_PATH."class/plugin/pluginbase.class.php" ); include_once( PLOG_CLASS_PATH."class/plugin/pluginmanager.class.php" ); include_once( PLOG_CLASS_PATH."class/dao/model.class.php" ); include_once( PLOG_CLASS_PATH."class/net/rawrequestgenerator.class.php" ); include_once( PLOG_CLASS_PATH."class/misc/glob.class.php" ); include_once( PLOG_CLASS_PATH."plugins/authimage/class/security/authimagefilter.class.php" );
define( "AUTHIMAGE_FILE", "/plugins/authimage/authimage.php" ); define( "AUTHIMAGE_BACKGROUND_FOLDER", PLOG_CLASS_PATH."plugins/authimage/backgrounds/" ); // twu2 20061016 begin define( "AUTHIMAGE_FONT_FOLDER", PLOG_CLASS_PATH."plugins/authimage/fonts/" ); // twu2 20061016 end
/** * Plugin that offers comment authentication image for current blog * Original Author: Gudlyf http://www.gudlyf.com/index.php?p=376 * Modified by: Mark Wu */ class PluginAuthImage extends PluginBase { var $pluginEnabled; var $default; var $cacheFolder; function PluginAuthImage() { $this->PluginBase(); $this->id = "authimage"; $this->author = "Mark Wu"; $this->desc = 'This plugin offers extra comment authentication for pLog. The idea is inspired by <a href="http://www.gudlyf.com/index.php?p=376">WordPress AuthImage Plugin</a> written by Gudlyf.';
$this->locales = Array( "en_UK" , "zh_TW" , "zh_CN", "es_ES" ); $this->init(); }
function init() { // register the filter $this->registerFilter( "AuthImageFilter" );
$this->registerAdminAction( "authimage", "PluginAuthImageConfigAction" ); $this->registerAdminAction( "updateAuthImageConfig", "PluginAuthImageUpdateConfigAction" ); $this->registerBlogAction( "AuthImageShow", "PluginAuthImageShowAction" ); $menu =& Menu::getMenu(); if( !$menu->entryExists( "/menu/controlCenter/manageAntiSpamPlugins" )) $this->addMenuEntry( "/menu/controlCenter", "manageAntiSpamPlugins", "", "", true, false ); $this->addMenuEntry( "/menu/controlCenter/manageAntiSpamPlugins", "AuthImage", "?op=authimage", "" ); } function register() { $config =& Config::getConfig(); $this->cacheFolder = $config->getValue('temp_folder'); $this->cacheFolder = $this->cacheFolder.'/authimage/'.$this->blogInfo->getId(); if( !File::exists( $this->cacheFolder )) { File::createDir( $this->cacheFolder ); } $blogSettings = $this->blogInfo->getSettings(); $this->pluginEnabled = $blogSettings->getValue( "plugin_authimage_enabled" ); $this->length = $blogSettings->getValue( "plugin_authimage_length" ); $this->key = $blogSettings->getValue( "plugin_authimage_key" ); $this->default = $blogSettings->getValue( "plugin_authimage_default" ); }
function isEnabled() { return $this->pluginEnabled; }
function pluginTemplatePage( $template ) { $rg = new RawRequestGenerator($this->blogInfo); $rg->addParameter( "op", "AuthImageShow" ); $rg->addParameter( "blogId", $this->blogInfo->getId());
$templatePage = $rg->getIndexUrl().$rg->getRequest();
return $templatePage; }
function show() { $authImageUrl = $this->generateImageUrl(); $authImage = $this->pluginTemplatePage( "authimage" ); if ( $authImageUrl ) return '<img src="'.$authImageUrl.'" style="vertical-align:middle;" alt="authimage" />'; else return ' you did not have gd support'; }
function showImage() { // twu2 20061016 begin $code = $this->generateCode(); $encrypt = $this->encrypt($code, $this->key); if ( function_exists ( 'ImageGIF' ) ) $image_format = 'gif'; else $image_format = 'png'; $tempFile = $this->cacheFolder."/".$encrypt.".".$image_format; $this->captcha_createimage($code, $image_format, $tempFile); /* $code = $this->generateCode(); $encrypt = $this->encrypt($code, $this->key); $background = AUTHIMAGE_BACKGROUND_FOLDER.$this->default; $tempFile = $this->cacheFolder."/".$encrypt.".gif";
if(function_exists ( 'imagecreatefromgif' )){ $image = @imagecreatefromgif($background) or die("Cannot Initialize new GD image stream"); } else if(function_exists ( 'imagecreatefrompng' )){ $image = @imagecreatefrompng($background) or die("Cannot Initialize new GD image stream"); } else { die("Server doesn't support GIF or PNG creation. Sorry."); } $textColor = imageColorAllocate($image, 0x00, 0x00, 0x00); ImageString($image, 5, 7, 2, $code, $textColor);
if ( !function_exists ( 'ImageGIF' ) ) { ImagePNG($image, $tempFile); } else { ImageGIF($image, $tempFile); } */ $temp = fopen($tempFile,"rb"); $buffer = fread($temp,filesize($tempFile)); fclose($temp); // Now zero-length the file. No need for its content anymore. $temp = fopen($tempFile,"w"); fwrite($temp, NULL); fclose($temp);
// Now chmod it so it can be deleted later by the user chmod($tempFile, 0666); // twu2 20061016 begin //header("Content-type: image/gif"); header("Content-type: image/".$image_format); // twu2 20061016 end
echo $buffer; }
// encrypt string function encrypt($string, $key) { $plainText = $string.$key; $encodeText = md5($plainText); return $encodeText; } function generateCode() { $code = ""; // twu2 20061016 begin //for($i=0; $i < $this->length; $i++) $code .= rand(0,9); //$hash = "0123456789"; //$hash = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $hash = "03456789ABCDEFGHKMNPQRWXYZ"; $len = strlen($hash) - 1; for($i=0; $i < $this->length; $i++) $code .= $hash[rand(0,$len)]; // twu2 20061016 end
return $code; } function deleteExpiredAuthImage( $expiretime ) { $path = PLOG_CLASS_PATH . $this->cacheFolder; if ( is_dir($path) ) { $handle=opendir($path); while (false!==($file = readdir($handle))) { if ($file != "." && $file != ".." && $file != "index.htm") { $diff = time() - filectime("$path/$file"); if ($diff > $expiretime) unlink("$path/$file"); } } closedir($handle); } }
// twu2 20061016 begin function captcha_createimage($code, $image_format, $tempFile) { $breedte = rand(256, 384); $hoogte = rand(64, 96); $img = imagecreatetruecolor($breedte,$hoogte); $achtergrond = imagecolorallocate($img, $this->captcha_color("bg"), $this->captcha_color("bg"), $this->captcha_color("bg")); imagefilledrectangle($img, 0, 0, $breedte-1, $hoogte-1, $achtergrond); $hash = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; $hash_len = strlen($hash); for($g = 0;$g < 30; $g++) { $t = $hash[rand(0, $hash_len)]; $ypos = rand(0,$hoogte); $xpos = rand(0,$breedte); $kleur = imagecolorallocate($img, $this->captcha_color("bgtekst"), $this->captcha_color("bgtekst"), $this->captcha_color("bgtekst")); if (!($g % 2)) { $scribx = rand(0,($breedte*2)); $scriby = rand(0,($hoogte*2)); $wibblex = rand(0,($breedte*2)); $wibbley = rand(0,($hoogte*2)); imageline($img, rand(0, $scribx-$xpos), rand(0, $scriby+$ypos), rand(0, $wibblex), rand(0, $wibbley), $kleur+$g); imageellipse($img, rand(0, $scribx+$xpos), rand(0, $scriby-$ypos), rand(0, $scriby), rand(0, $scribx), $kleur-$g); } imagettftext($img, $this->captcha_size(), $this->captcha_move(), $xpos, $ypos, $kleur, $this->captcha_font(), $t); } $stukje = $breedte / (strlen($code) + 3); for($j = 0;$j < strlen($code); $j++) { $tek = $code[$j]; $ypos = rand(32,$hoogte-8); $xpos = $stukje * ($j+2); $kleur2 = imagecolorallocate($img, $this->captcha_color("tekst"), $this->captcha_color("tekst"), $this->captcha_color("tekst")); imagettftext($img, $this->captcha_size(), $this->captcha_move(), $xpos, $ypos, $kleur2, $this->captcha_font() , $tek); } if ($image_format == 'gif') imagegif($img, $tempFile); else imagepng($img, $tempFile); imagedestroy($img); } /** * Some functions :) * Also orginally written by mastercode.nl **/ /** * Function to create a random color * @auteur mastercode.nl * @param $type string Mode for the color * @return int **/ function captcha_color($type) { switch($type) { case "bg": $kleur = rand(224,255); break; case "tekst": $kleur = rand(0,127); break; case "bgtekst": $kleur = rand(200,224); break; default: $kleur = rand(0,255); break; } return $kleur; } /** * Function to ranom the size * @auteur mastercode.nl * @return int **/ function captcha_size() { $grootte = rand(24,32); return $grootte; } /** * Function to random the posistion * @auteur mastercode.nl * @return int **/ function captcha_move() { $draai = rand(-25,25); return $draai; }
function generateImageUrl() { $rg = new RawRequestGenerator($this->blogInfo); $rg->addParameter( "op", "AuthImageShow" ); $rg->addParameter( "blogId", $this->blogInfo->getId()); $imageUrl = $rg->getIndexUrl().$rg->getRequest(); if ( !function_exists ('gd_info') ) { // We don't have gd support compiled in, lets // inform the user about it return false; } return $imageUrl; }
/** * Function to return a ttf file from fonts map * @auteur mastercode.nl * @return string **/ function captcha_font() { $f = @opendir(AUTHIMAGE_FONT_FOLDER); $ar = array(); while(($file = @readdir($f)) !== false) { if(!in_array($file,array('.','..')) && eregi('.ttf',$file)) { $ar[] = $file; } } if(count($ar)) { shuffle($ar); $i = rand(0,(count($ar) - 1)); return AUTHIMAGE_FONT_FOLDER . $ar[$i]; } } // twu2 20061016 end
} ?>
|
|
|
7
|
開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形
|
於: 三月 11, 2007, 10:19:59 上午
|
编译php的时候加如下参数就好了
--with-gd --enable-gd-native-ttf --with-png --with-zlib-dir=/usr/ --with-ttf --with-jpeg-dir=/usr/ --with-freetype-dir=/usr/ --with-xpm-dir=/usr/X11R6/
这个是debian里的,其他发行版估计位置会不一样
感谢twu2的插件
|
|
|
13
|
支援 / 使用與操作 / Re: 无法输入\字符的问题
|
於: 十一月 12, 2006, 08:12:03 下午
|
多谢了 twu2你的blog的code标签是怎么做的啊? 能否告知? 我那边的blog估计也要经常帖代码,这个挺爽的。
|
|
|
|
|
|