Các function liên quan đến captcha dưới đây tôi viết đơn giản lại thôi, chứ không phải fix lỗi.
Cách sửa:
1/Mở file includes/functions/security.php,
Tìm đến dòng 14:
- Mã: Chọn tất cả
unset( $_REQUEST, $_COOKIE, $_SESSION );
Sửa thành:
- Mã: Chọn tất cả
//unset( $_REQUEST, $_COOKIE, $_SESSION );
Tìm đến dòng 40:
- Mã: Chọn tất cả
unset( $HTTP_SESSION_VARS, $HTTP_COOKIE_VARS );
Sửa thành:
- Mã: Chọn tất cả
//unset( $HTTP_SESSION_VARS, $HTTP_COOKIE_VARS );
2/Mở file includes/functions/mainfile.php,
Tìm đến dòng 116:
- Mã: Chọn tất cả
session_name( "NVS" );
Thêm lên trên:
- Mã: Chọn tất cả
$rootdir = str_replace( "\\", "/", realpath(dirname(__FILE__) . "/../..") );
if ( ! ereg('/$', $rootdir) ) $rootdir = $rootdir . '/';
if ( is_dir($rootdir . 'tmp') ) ini_set( 'session.save_path', $rootdir . 'tmp' );
Tìm đến:
- Mã: Chọn tất cả
/**
* client_ip
*/
$client_ip = nv_getClientIP();
Thêm lên trên:
- Mã: Chọn tất cả
/**
* Tao ma truy cap
*/
if ( isset($_GET['gfx']) and $_GET['gfx'] == "gfx" )
{
$_SESSION['random_num'] = mt_rand( 100000, 999999 );
$image = ImageCreateFromJPEG( INCLUDE_PATH . "images/code_bg.jpg" );
if ( ! $image )
{
$image = imagecreate( 73, 15 );
$bgc = imagecolorallocate( $image, 240, 240, 240 );
imagefilledrectangle( $image, 0, 0, 73, 15, $bgc );
}
$text_color = ImageColorAllocate( $image, 50, 50, 50 );
Header( "Content-type: image/jpeg" );
ImageString( $image, 5, 11, 1, $_SESSION['random_num'], $text_color );
ImageJPEG( $image, '', 90 );
ImageDestroy( $image );
die();
break;
}
Tìm đến và xóa các dòng sau đây (Dưới cùng file mainfile.php):
- Mã: Chọn tất cả
/**
* Tao ma truy cap
*/
if ( isset($_GET['gfx']) and $_GET['gfx'] == "gfx" )
{
mt_srand( (double)microtime() * 1000000 );
$maxran = 1000000;
$random_num = mt_rand( 0, $maxran );
$_SESSION['random_num'] = $random_num;
$datekey = date( "F j" );
$rcode = hexdec( md5($_SERVER[HTTP_USER_AGENT] . $sitekey . $random_num . $datekey) );
$code = substr( $rcode, 2, 6 );
$image = ImageCreateFromJPEG( "" . INCLUDE_PATH . "images/code_bg.jpg" );
if ( ! $image )
{
$image = imagecreate( 73, 15 );
$bgc = imagecolorallocate( $image, 240, 240, 240 );
imagefilledrectangle( $image, 0, 0, 73, 15, $bgc );
}
$text_color = ImageColorAllocate( $image, 50, 50, 50 );
Header( "Content-type: image/jpeg" );
ImageString( $image, 5, 11, 1, $code, $text_color );
ImageJPEG( $image, '', 90 );
ImageDestroy( $image );
die();
break;
}
3/Mở file includes/functions/functions.php,
Tìm đến:
- Mã: Chọn tất cả
/**
* nv_capcha_txt()
*
* @param mixed $seccode
* @return
*/
function nv_capcha_txt( $seccode )
{
global $sitekey;
$return = false;
$random_num = intval( $_SESSION['random_num'] );
$datekey = date( "F j" );
$rcode = hexdec( md5($_SERVER[HTTP_USER_AGENT] . $sitekey . $random_num . $datekey) );
if ( preg_match("/^[0-9]{6}$/", $seccode) and $seccode == substr($rcode, 2, 6) ) $return = true;
mt_srand( (double)microtime() * 1000000 );
$maxran = 1000000;
$random_num = mt_rand( 0, $maxran );
$_SESSION['random_num'] = $random_num;
return $return;
}
Sửa thành:
- Mã: Chọn tất cả
/**
* nv_capcha_txt()
*
* @param mixed $seccode
* @return
*/
function nv_capcha_txt( $seccode )
{
$return = false;
if ($seccode ==$_SESSION['random_num'] ) $return = true;
//echo $seccode . "<br>".$_SESSION['random_num'];
$_SESSION['random_num'] = mt_rand( 100000, 999999 );
return $return;
}
4/Tạo thư mục có tên tmp trên webroot
Đề nghị laser cập nhật trong mã nguồn chính thức (Kể cả cái fileadmin mà tôi đã sửa trước đây).








