#104516 gửi bởi huyhoangytn
Ngày 11 Tháng 12 2011 , 20:43
hungfirestorm đã viết:
lyduyhieu đã viết:vậy còn phần dùng nguồn bên ngoài khi click trực tiếp thì báo wrong url bạn có thể giúp mình không

Lưu ý với bạn rằng đối với các host free mới bị lỗi như bạn nói, hồi đầu mới dùng nukeviet mình cũng thử nghiệm trên host free và thấy đúng như vậy. Nhưng khi bạn dùng host trả phí thì hàm nv_check_url sẽ được hỗ trợ. Do vậy dưới đây chỉ là giải pháp cho các host free, khi bạn nâng lên trả phí thì phải giữ nguyên bản gốc nhé.

Hướng dẫn(dùng cho NV3.0,3.1,3.2):
Để fix lỗi bạn hãy mở file: "functions.php", trong file includes\functions.php tìm đến đoạn
Mã: Chọn hết
function nv_check_url ( $url, $is_200 = false )
{
if ( empty( $url ) ) return false;
$res = get_headers( $url );
if ( ! $res ) return false;
if ( preg_match( "/(200)/", $res[0] ) ) return true;
if ( $is_200 ) return false;
if ( preg_match( "/(301)|(302)|(303)/", $res[0] ) )
{
foreach ( $res as $k => $v )
{
unset( $matches );
if ( preg_match( "/location:\s(.*?)$/is", $v, $matches ) )
{
$location = trim( $matches[1] );
return nv_check_url( $location, true );
}
}
}
return false;
}


Và thay tất cả các giá trị "false" thành giá trị "true" còn các giá trị "true" trong đoạn mã thì giữ nguyên thành như sau:
Mã: Chọn hết
function nv_check_url ( $url, $is_200 = true )
{
if ( empty( $url ) ) return true;
$res = get_headers( $url );
if ( ! $res ) return true;
if ( preg_match( "/(200)/", $res[0] ) ) return true;
if ( $is_200 ) return true;
if ( preg_match( "/(301)|(302)|(303)/", $res[0] ) )
{
foreach ( $res as $k => $v )
{
unset( $matches );
if ( preg_match( "/location:\s(.*?)$/is", $v, $matches ) )
{
$location = trim( $matches[1] );
return nv_check_url( $location, true );
}
}
}
return true;
}


Hướng dẫn fix lỗi wrong url cho NV3.3:
Bạn chỉ cần copy file functions.php này up lên đúng vị trí của nó ../includes/ là ok
Mã: Chọn hết
<?php

/**
* @Project NUKEVIET 3.0
* @Author VINADES.,JSC (contact@vinades.vn)
* @Copyright (C) 2010 VINADES.,JSC. All rights reserved
* @Createdate 1/9/2010, 23:48
*/

if (!defined('NV_MAINFILE'))
die('Stop!!!');

require_once (NV_ROOTDIR . '/includes/utf8/' . $sys_info['string_handler'] . '_string_handler.php');
require_once (NV_ROOTDIR . '/includes/utf8/utf8_functions.php');
require_once (NV_ROOTDIR . '/includes/core/filesystem_functions.php');
require_once (NV_ROOTDIR . '/includes/core/cache_functions.php');

/**
* array_intersect_key()
*
* @param mixed $a
* @param mixed $b
* @return
*/
if (!function_exists('array_intersect_key'))
{

function array_intersect_key($a, $b)
{
$c = func_num_args();
if ($c > 2)
{
for ($d = 1; !empty($a) && $d < $c; ++$d)
{
$e = func_get_arg($d);
$array_keys = array_keys($a);
foreach ($array_keys as $f)
{
if (!isset($e[$f]))
unset($a[$f]);
}
}
return $a;
}
$g = array();
$array_keys = array_keys($a);
foreach ($array_keys as $f)
{
if (isset($b[$f]))
$g[$f] = $a[$f];
}
return $g;
}

}

/**
* array_diff_key()
*
* @return
*/
if (!function_exists('array_diff_key'))
{
function array_diff_key()
{
$a = func_get_args();
$b = array_shift($a);
foreach ($a as $c)
{
foreach ($b as $d => $e)
{
if (array_key_exists($d, $c))
unset($b[$d]);
}
}
return $b;
}

}

/**
* nv_object2array()
*
* @param mixed $a
* @return
*/
function nv_object2array($a)
{
if (is_object($a))
$a = get_object_vars($a);
return is_array($a) ? array_map(__function__, $a) : $a;
}

/**
* nv_getenv()
*
* @param mixed $a
* @return
*/
function nv_getenv($a)
{
if (!is_array($a))
{
$a = array($a);
}
foreach ($a as $b)
{
if (isset($_SERVER[$b]))
return $_SERVER[$b];
elseif (isset($_ENV[$b]))
return $_ENV[$b];
elseif (@getenv($b))
return @getenv($b);
elseif (function_exists('apache_getenv') && apache_getenv($b, true))
return apache_getenv($b, true);
}
return "";
}

/**
* nv_preg_quote()
*
* @param string $a
* @return
*/
function nv_preg_quote($a)
{
return preg_quote($a, "/");
}

/**
* nv_is_myreferer()
*
* @param string $referer
* @return
*/
function nv_is_myreferer($referer = "")
{
if (empty($referer))
$referer = urldecode(nv_getenv('HTTP_REFERER'));
if (empty($referer))
return 2;
$server_name = preg_replace('/^[w]+\./e', '', nv_getenv("HTTP_HOST"));
$referer = preg_replace(array('/^[a-zA-Z]+\:\/\/([w]+\.)?/e', '/^[w]+\./e'), '', $referer);
if (preg_match("/^" . nv_preg_quote($server_name) . "/", $referer))
return 1;
return 0;
}

/**
* nv_is_blocker_proxy()
*
* @param string $is_proxy
* @param integer $proxy_blocker
* @return
*/
function nv_is_blocker_proxy($is_proxy, $proxy_blocker)
{
if ($proxy_blocker == 1 and $is_proxy == 'Strong')
return true;
if ($proxy_blocker == 2 and ($is_proxy == 'Strong' || $is_proxy == 'Mild'))
return true;
if ($proxy_blocker == 3 and $is_proxy != 'No')
return true;
return false;
}

/**
* nv_is_banIp()
*
* @param string $ip
* @return
*/
function nv_is_banIp($ip)
{
$array_banip_site = $array_banip_admin = array();

if (file_exists(NV_ROOTDIR . "/" . NV_DATADIR . "/banip.php"))
include (NV_ROOTDIR . "/" . NV_DATADIR . "/banip.php");

$banIp = ( defined('NV_ADMIN')) ? $array_banip_admin : $array_banip_site;
if (empty($banIp))
return false;

foreach ($banIp as $e => $f)
if ($f['begintime'] < NV_CURRENTTIME and ($f['endtime'] == 0 or $f['endtime'] > NV_CURRENTTIME) and (preg_replace($f['mask'], "", $ip) == preg_replace($f['mask'], "", $e)))
return true;

return false;
}

/**
* nv_checkagent()
*
* @param string $a
* @return
*/
function nv_checkagent($a)
{
$a = htmlspecialchars(substr($a, 0, 255));
$a = str_replace(array(",", "<"), array("-", "("), $a);
return ((!empty($a) and $a != "-") ? $a : "none");
}

/**
* nv_check_bot()
*
* @return
*/
function nv_check_bot()
{
global $client_info;

$file_bots = NV_ROOTDIR . "/" . NV_DATADIR . "/bots.config";
$bots = (file_exists($file_bots) and filesize($file_bots)) ? unserialize(file_get_contents($file_bots)) : array();

if (empty($bots) and file_exists(NV_ROOTDIR . "/includes/bots.php"))
include (NV_ROOTDIR . "/includes/bots.php");

if (empty($bots))
return array();

foreach ($bots as $name => $values)
{
$is_bot = false;

if ($values['agent'] and preg_match('#' . str_replace('\*', '.*?', nv_preg_quote($values['agent'], '#')) . '#i', $client_info['agent']))
$is_bot = true;

if (!empty($values['ips']) and ($is_bot or !$values['agent']))
{
$is_bot = false;
$ips = implode("|", array_map("nv_preg_quote", explode("|", $values['ips'])));
if (preg_match("/^" . $ips . "/", $client_info['ip']))
$is_bot = true;
}

if ($is_bot)
return array('name' => $name, 'agent' => $values['agent'], 'ip' => $client_info['ip'], 'allowed' => $values['allowed']);
}

return array();
}

/**
* nv_checkmobile()
*
* @param string $inifile
* @return
*/
function nv_checkmobile($inifile)
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];

if (preg_match("/Creative\ AutoUpdate/i", $user_agent))
return array();

$browsers = array();
if (file_exists($inifile))
$browsers = nv_parse_ini_file($inifile, true);

if (!empty($browsers))
{
foreach ($browsers as $key => $info)
if (preg_match($info['rule'], $user_agent))
return array('key' => $key, 'name' => $info['name']);
}

if (preg_match("/Nokia([^\/]+)\/([^ SP]+)/i", $user_agent, $matches))
{
if (stripos($user_agent, 'Series60') !== false || strpos($user_agent, 'S60') !== false)
{
return array('key' => 'nokia', 'name' => 'Nokia S60 V.' . $matches[2]);
}
else
{
return array('key' => 'nokia', 'name' => 'Nokia V.' . $matches[2]);
}
}

if (isset($_SERVER['X-OperaMini-Features']))
return array('key' => 'opera', 'name' => 'Opera Mini');

if (isset($_SERVER['UA-pixels']))
return array('key' => 'mobile', 'name' => 'UA-pixels');

if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE']))
return array('key' => 'mobile', 'name' => 'Unknown');

if (isset($_SERVER['HTTP_ACCEPT']) && preg_match("/wap\.|\.wap/i", $_SERVER["HTTP_ACCEPT"]))
return array('key' => 'mobile', 'name' => 'Unknown');

if (preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320|vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i', $user_agent))
return array('key' => 'mobile', 'name' => 'Unknown');

$mbs = array('1207', '3gso', '4thp', '501i', '502i', '503i', '504i', '505i', '506i', '6310', '6590', '770s', '802s', 'a wa', 'acer', 'acs-', 'airn', 'alav', 'asus', 'attw', 'au-m', 'aur ', 'aus ', 'abac', 'acoo', 'aiko', 'alco', 'alca', 'amoi', 'anex', 'anny', 'anyw', 'aptu', 'arch', 'argo', 'bell', 'bird', 'bw-n', 'bw-u', 'beck', 'benq', 'bilb', 'blac', 'c55/', 'cdm-', 'chtm', 'capi', 'cond', 'craw', 'dall', 'dbte', 'dc-s', 'dica', 'ds-d', 'ds12', 'dait', 'devi', 'dmob', 'doco', 'dopo', 'el49', 'erk0', 'esl8', 'ez40', 'ez60', 'ez70', 'ezos', 'ezze', 'elai', 'emul', 'eric', 'ezwa', 'fake', 'fly-', 'fly_', 'g-mo', 'g1 u', 'g560', 'gf-5', 'grun', 'gene', 'go.w', 'good', 'grad', 'hcit', 'hd-m', 'hd-p', 'hd-t', 'hei-', 'hp i', 'hpip', 'hs-c', 'htc ', 'htc-', 'htca', 'htcg', 'htcp', 'htcs', 'htct', 'htc_', 'haie', 'hita', 'huaw', 'hutc', 'i-20', 'i-go', 'i-ma', 'i230', 'iac', 'iac-', 'iac/', 'ig01', 'im1k', 'inno', 'iris', 'jata', 'java', 'kddi', 'kgt', 'kgt/', 'kpt ', 'kwc-', 'klon', 'lexi', 'lg g', 'lg-a', 'lg-b', 'lg-c', 'lg-d', 'lg-f', 'lg-g', 'lg-k', 'lg-l', 'lg-m', 'lg-o', 'lg-p', 'lg-s', 'lg-t', 'lg-u', 'lg-w', 'lg/k', 'lg/l', 'lg/u', 'lg50', 'lg54', 'lge-', 'lge/', 'lynx', 'leno', 'm1-w', 'm3ga', 'm50/', 'maui', 'mc01', 'mc21', 'mcca', 'medi', 'meri', 'mio8', 'mioa', 'mo01', 'mo02', 'mode', 'modo', 'mot ', 'mot-', 'mt50', 'mtp1', 'mtv ', 'mate', 'maxo', 'merc', 'mits', 'mobi', 'motv', 'mozz', 'n100', 'n101', 'n102', 'n202', 'n203', 'n300', 'n302', 'n500', 'n502', 'n505', 'n700', 'n701', 'n710', 'nec-', 'nem-', 'newg', 'neon', 'netf', 'noki', 'nzph', 'o2 x', 'o2-x', 'opwv', 'owg1', 'opti', 'oran', 'p800', 'pand', 'pg-1', 'pg-2', 'pg-3', 'pg-6', 'pg-8', 'pg-c', 'pg13', 'phil', 'pn-2', 'pt-g', 'palm', 'pana', 'pire', 'pock', 'pose', 'psio', 'qa-a', 'qc-2', 'qc-3', 'qc-5', 'qc-7', 'qc07', 'qc12', 'qc21', 'qc32', 'qc60', 'qci-', 'qwap', 'qtek', 'r380', 'r600', 'raks', 'rim9', 'rove', 's55/', 'sage', 'sams', 'sc01', 'sch-', 'scp-', 'sdk/', 'se47', 'sec-', 'sec0', 'sec1', 'semc', 'sgh-', 'shar', 'sie-', 'sk-0', 'sl45', 'slid', 'smb3', 'smt5', 'sp01', 'sph-', 'spv ', 'spv-', 'sy01', 'samm', 'sany', 'sava', 'scoo', 'send', 'siem', 'smar', 'smit', 'soft', 'sony', 't-mo', 't218', 't250', 't600', 't610', 't618', 'tcl-', 'tdg-', 'telm', 'tim-', 'ts70', 'tsm-', 'tsm3', 'tsm5', 'tx-9', 'tagt', 'talk', 'teli', 'topl', 'hiba', 'up.b', 'upg1', 'utst', 'v400', 'v750', 'veri', 'vk-v', 'vk40', 'vk50', 'vk52', 'vk53', 'vm40', 'vx98', 'virg', 'vite', 'voda', 'vulc', 'w3c ', 'w3c-', 'wapj', 'wapp', 'wapu', 'wapm', 'wig ', 'wapi', 'wapr', 'wapv', 'wapy', 'wapa', 'waps', 'wapt', 'winc', 'winw', 'wonu', 'x700', 'xda2', 'xdag', 'yas-', 'your', 'zte-', 'zeto', 'acs-', 'alav', 'alca', 'amoi', 'aste', 'audi', 'avan', 'benq', 'bird', 'blac', 'blaz', 'brew', 'brvw', 'bumb', 'ccwa', 'cell', 'cldc', 'cmd-', 'dang', 'doco', 'eml2', 'eric', 'fetc', 'hipt', 'http', 'ibro', 'idea', 'ikom', 'inno', 'ipaq', 'jbro', 'jemu', 'java', 'jigs', 'kddi', 'keji', 'kyoc', 'kyok', 'leno', 'lg-c', 'lg-d', 'lg-g', 'lge-', 'libw', 'm-cr', 'maui', 'maxo', 'midp', 'mits', 'mmef', 'mobi', 'mot-', 'moto', 'mwbp', 'mywa', 'nec-', 'newt', 'nok6', 'noki', 'o2im', 'opwv', 'palm', 'pana', 'pant', 'pdxg', 'phil', 'play', 'pluc', 'port', 'prox', 'qtek', 'qwap', 'rozo', 'sage', 'sama', 'sams', 'sany', 'sch-', 'sec-', 'send', 'seri', 'sgh-', 'shar', 'sie-', 'siem', 'smal', 'smar', 'sony', 'sph-', 'symb', 't-mo', 'teli', 'tim-', 'tosh', 'treo', 'tsm-', 'upg1', 'upsi', 'vk-v', 'voda', 'vx52', 'vx53', 'vx60', 'vx61', 'vx70', 'vx80', 'vx81', 'vx83', 'vx85', 'wap-', 'wapa', 'wapi', 'wapp', 'wapr', 'webc', 'whit', 'winw', 'wmlb', 'xda-', );
$user_agent = strtolower(substr($user_agent, 0, 4));
if (in_array($user_agent, $mbs))
return array('key' => 'mobile', 'name' => 'Unknown');

return array();
}

/**
* nv_getBrowser()
*
* @param string $agent
* @param string $brinifile
* @return
*/
function nv_getBrowser($agent, $brinifile)
{
$browsers = nv_parse_ini_file($brinifile, true);
foreach ($browsers as $key => $info)
{
if (preg_match("#" . $info['rule'] . "#i", $agent, $results))
{
if (isset($results[1]))
return ($key . '|' . $info['name'] . ' v' . $results[1]);
return ($key . '|' . $info['name']);
}
}
return ("Unknown|Unknown");
}

/**
* nv_getOs()
*
* @param string $agent
* @param string $osinifile
* @return
*/
function nv_getOs($agent, $osinifile)
{
$os = nv_parse_ini_file($osinifile, true);
foreach ($os as $key => $info)
{
if (preg_match("#" . $info['rule'] . "#i", $agent, $results))
{
if (strstr($key, "win"))
return ($key . '|' . $info['name']);
if (isset($results[1]))
return ($key . '|' . $info['name'] . ' ' . $results[1]);
return ($key . '|' . $info['name']);
}
}
return ("Unspecified|Unspecified");
}

/**
* nv_convertfromBytes()
*
* @param integer $size
* @return
*/
function nv_convertfromBytes($size)
{
if ($size <= 0)
return '0 bytes';
if ($size == 1)
return '1 byte';
if ($size < 1024)
return $size . ' bytes';

$i = 0;
$iec = array("bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
while (($size / 1024) > 1)
{
$size = $size / 1024;
++$i;
}
return number_format($size, 2) . ' ' . $iec[$i];
}

/**
* nv_convertfromSec()
*
* @param integer $sec
* @return
*/
function nv_convertfromSec($sec = 0)
{
global $lang_global;

$sec = intval($sec);
$min = 60;
$hour = 3600;
$day = 86400;
$year = 31536000;

if ($sec == 0)
return "";
if ($sec < $min)
return $sec . " " . $lang_global['sec'];
if ($sec < $hour)
return trim(floor($sec / $min) . " " . " " . $lang_global['min'] . (($sd = $sec % $min) ? " " . nv_convertfromSec($sd) : ""));
if ($sec < $day)
return trim(floor($sec / $hour) . " " . $lang_global['hour'] . (($sd = $sec % $hour) ? " " . nv_convertfromSec($sd) : ""));
if ($sec < $year)
return trim(floor($sec / $day) . " " . $lang_global['day'] . (($sd = $sec % $day) ? " " . nv_convertfromSec($sd) : ""));

return trim(floor($sec / $year) . " " . $lang_global['year'] . (($sd = $sec % $year) ? " " . nv_convertfromSec($sd) : ""));
}

/**
* nv_converttoBytes()
*
* @param string $string
* @return
*/
function nv_converttoBytes($string)
{
if (preg_match('/^([0-9\.]+)[ ]*([b|k|m|g|t|p|e|z|y]*)/i', $string, $matches))
{
if (empty($matches[2]))
return $matches[1];

$suffixes = array("B" => 0, "K" => 1, "M" => 2, "G" => 3, "T" => 4, "P" => 5, "E" => 6, "Z" => 7, "Y" => 8);
if (isset($suffixes[strtoupper($matches[2])]))
return round($matches[1] * pow(1024, $suffixes[strtoupper($matches[2])]));
}
return false;
}

/**
* nv_base64_encode()
*
* @param string $input
* @return
*/
function nv_base64_encode($input)
{
return strtr(base64_encode($input), '+/=', '-_,');
}

/**
* nv_base64_decode()
*
* @param string $input
* @return
*/
function nv_base64_decode($input)
{
return base64_decode(strtr($input, '-_,', '+/='));
}

/**
* nv_function_exists()
*
* @param string $funcName
* @return
*/
function nv_function_exists($funcName)
{
global $sys_info;

return (function_exists($funcName) and !in_array($funcName, $sys_info['disable_functions']));
}

/**
* nv_class_exists()
*
* @param string $clName
* @return
*/
function nv_class_exists($clName)
{
global $sys_info;

return (class_exists($clName) and !in_array($clName, $sys_info['disable_classes']));
}

/**
* nv_check_valid_login()
*
* @param string $login
* @param integer $max
* @param integer $min
* @return
*/
function nv_check_valid_login($login, $max, $min)
{
global $lang_global;

$login = strip_tags(trim($login));
if (empty($login))
return $lang_global['username_empty'];
if (isset($login{$max}))
return sprintf($lang_global['usernamelong'], $login, $max);
if (!isset($login{$min - 1}))
return sprintf($lang_global['usernameadjective'], $login, $min);
return "";
}

/**
* nv_check_valid_pass()
*
* @param string $pass
* @param integer $max
* @param integer $min
* @return
*/
function nv_check_valid_pass($pass, $max, $min)
{
global $lang_global;

$pass = strip_tags(trim($pass));
if (empty($pass))
return $lang_global['password_empty'];
if (isset($pass{$max}))
return sprintf($lang_global['passwordlong'], $pass, $max);
if (!isset($pass{$min - 1}))
return sprintf($lang_global['passwordadjective'], $pass, $min);
return "";
}

/**
* nv_check_valid_email()
*
* @param string $mail
* @return
*/
function nv_check_valid_email($mail)
{
global $lang_global, $global_config;

$mail = strip_tags(trim($mail));

if (empty($mail))
return $lang_global['email_empty'];

if (function_exists('filter_var') and filter_var($mail, FILTER_VALIDATE_EMAIL) === false)
return sprintf($lang_global['email_incorrect'], $mail);

if (!preg_match($global_config['check_email'], $mail))
return sprintf($lang_global['email_incorrect'], $mail);

if (!preg_match("/\.(ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|asia|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$/", $mail))
return sprintf($lang_global['email_incorrect'], $mail);

return "";
}

/**
* nv_capcha_txt()
*
* @param string $seccode
* @param string $scaptcha
* @return
*/
function nv_capcha_txt($seccode, $scaptcha = "captcha")
{
global $sys_info, $global_config, $nv_Request;

if (!$sys_info['gd_support'])
return true;

$scaptcha = preg_replace('/[^a-z0-9]/', '', $scaptcha);
$skeycaptcha = ($scaptcha == "captcha") ? "random_num" : "random_" . substr($scaptcha, 0, 20);

$seccode = strtoupper($seccode);
$random_num = $nv_Request->get_string($skeycaptcha, 'session', 0);
$datekey = date("F j");
$rcode = strtoupper(md5(NV_USER_AGENT . $global_config['sitekey'] . $random_num . $datekey));

mt_srand(( double )microtime() * 1000000);
$maxran = 1000000;
$random_num = mt_rand(0, $maxran);
$nv_Request->set_Session($skeycaptcha, $random_num);

return (preg_match("/^[a-zA-Z0-9]{" . NV_GFX_NUM . "}$/", $seccode) and $seccode == substr($rcode, 2, NV_GFX_NUM));
}

/**
* nv_genpass()
*
* @param integer $length
* @return
*/
function nv_genpass($length = 8)
{
$pass = chr(mt_rand(65, 90));
for ($k = 0; $k < $length - 1; ++$k)
{
$probab = mt_rand(1, 10);
$pass .= ($probab <= 8) ? chr(mt_rand(97, 122)) : chr(mt_rand(48, 57));
}
return $pass;
}

/**
* nv_EncodeEmail()
*
* @param string $strEmail
* @param string $strDisplay
* @param bool $blnCreateLink
* @return
*/
function nv_EncodeEmail($strEmail, $strDisplay = '', $blnCreateLink = true)
{
$strMailto = "&#109;&#097;&#105;&#108;&#116;&#111;&#058;";
$strEncodedEmail = "";
$strlen = strlen($strEmail);
for ($i = 0; $i < $strlen; ++$i)
{
$strEncodedEmail .= "&#" . ord(substr($strEmail, $i)) . ";";
}

$strDisplay = trim($strDisplay);
$strDisplay = !empty($strDisplay) ? $strDisplay : $strEncodedEmail;
if ($blnCreateLink)
return "<a href=\"" . $strMailto . $strEncodedEmail . "\">" . $strDisplay . "</a>";
return $strDisplay;
}

/**
* nv_user_groups()
*
* @param string $in_groups
* @return
*/
function nv_user_groups($in_groups)
{
global $db;

if (empty($in_groups))
return "";

$query = "SELECT `group_id`, `title`, `exp_time`, `public` FROM `" . NV_GROUPS_GLOBALTABLE . "` WHERE `act`=1 ORDER BY `weight`";
$list = nv_db_cache($query, '', 'users');

if (empty($list))
return "";

$in_groups = explode(",", $in_groups);
$groups = array();
$reload = array();
for ($i = 0, $count = sizeof($list); $i < $count; ++$i)
{
if ($list[$i]['exp_time'] != 0 and $list[$i]['exp_time'] <= NV_CURRENTTIME)
{
$reload[] = $list[$i]['group_id'];
}
elseif (in_array($list[$i]['group_id'], $in_groups))
{
$groups[] = $list[$i]['group_id'];
}
}

if ($reload)
{
$sql = "UPDATE `" . NV_GROUPS_GLOBALTABLE . "` SET `act`='0' WHERE `group_id` IN (" . implode(",", $reload) . ")";
$db->sql_query($sql);
nv_del_moduleCache('users');
}

if (empty($groups))
return "";

return implode(",", $groups);
}

/**
* nv_is_in_groups()
*
* @param string $in_groups
* @param string $groups
* @return
*/
function nv_is_in_groups($in_groups, $groups)
{
if (empty($groups) || empty($in_groups))
return false;
$in_groups = explode(",", $in_groups);
$groups = explode(",", $groups);
return (array_intersect($in_groups, $groups) != array());
}

/**
* nv_set_allow()
*
* @param integer $who
* @param string $groups
* @return
*/
function nv_set_allow($who, $groups)
{
global $user_info;

if (!$who or ($who == 1 and defined('NV_IS_USER')) or ($who == 2 and defined('NV_IS_ADMIN')))
return true;

if ($who == 3 and !empty($groups) and defined('NV_IS_USER') and nv_is_in_groups($user_info['in_groups'], $groups))
return true;

return false;
}

/**
* nv_date()
*
* @param string $format
* @param integer $time
* @return
*/
function nv_date($format, $time = 0)
{
global $lang_global;

if (!$time)
$time = NV_CURRENTTIME;
$return = date($format, $time);

$replaces = array('Sunday' => $lang_global['sunday'], 'Monday' => $lang_global['monday'], 'Tuesday' => $lang_global['tuesday'], 'Wednesday' => $lang_global['wednesday'], 'Thursday' => $lang_global['thursday'], 'Friday' => $lang_global['friday'], 'Saturday' => $lang_global['saturday'], 'January' => $lang_global['january'], 'February' => $lang_global['february'], 'March' => $lang_global['march'], 'April' => $lang_global['april'], 'May' => $lang_global['may'], 'June' => $lang_global['june'], 'July' => $lang_global['july'], 'August' => $lang_global['august'], 'September' => $lang_global['september'], 'October' => $lang_global['october'], 'November' => $lang_global['november'], 'December' => $lang_global['december']);
$return = str_replace(array_keys($replaces), array_values($replaces), $return);

$replaces = array('Sun' => $lang_global['sun'], 'Mon' => $lang_global['mon'], 'Tue' => $lang_global['tue'], 'Wed' => $lang_global['wed'], 'Thu' => $lang_global['thu'], 'Fri' => $lang_global['fri'], 'Sat' => $lang_global['sat'], 'Jan' => $lang_global['jan'], 'Feb' => $lang_global['feb'], 'Mar' => $lang_global['mar'], 'Apr' => $lang_global['apr'], 'May' => $lang_global['may2'], 'Jun' => $lang_global['jun'], 'Jul' => $lang_global['jul'], 'Aug' => $lang_global['aug'], 'Sep' => $lang_global['sep'], 'Oct' => $lang_global['oct'], 'Nov' => $lang_global['nov'], 'Dec' => $lang_global['dec']);
return str_replace(array_keys($replaces), array_values($replaces), $return);
}

/**
* nv_monthname()
*
* @param integer $i
* @return
*/
function nv_monthname($i)
{
global $lang_global;

--$i;
$month_names = array($lang_global['january'], $lang_global['february'], $lang_global['march'], $lang_global['april'], $lang_global['may'], $lang_global['june'], $lang_global['july'], $lang_global['august'], $lang_global['september'], $lang_global['october'], $lang_global['november'], $lang_global['december']);

return (isset($month_names[$i]) ? $month_names[$i] : "");
}

/**
* nv_unhtmlspecialchars()
*
* @param mixed $string
* @return
*/
function nv_unhtmlspecialchars($string)
{
if (empty($string))
return $string;

if (is_array($string))
{
$array_keys = array_keys($string);
foreach ($array_keys as $key)
{
$string[$key] = nv_unhtmlspecialchars($string[$key]);
}
}
else
{
$search = array('&amp;', '&#039;', '&quot;', '&lt;', '&gt;', '&#x005C;', '&#x002F;', '&#40;', '&#41;', '&#42;', '&#91;', '&#93;', '&#33;', '&#x3D;', '&#x23;', '&#x25;', '&#x5E;', '&#x3A;', '&#x7B;', '&#x7D;', '&#x60;', '&#x7E;');
$replace = array('&', '\'', '"', '<', '>', '\\', '/', '(', ')', '*', '[', ']', '!', '=', '#', '%', '^', ':', '{', '}', '`', '~');
$string = str_replace($search, $replace, $string);
}

return $string;
}

/**
* nv_htmlspecialchars()
*
* @param mixed $string
* @return
*/
function nv_htmlspecialchars($string)
{
if (empty($string))
return $string;

if (is_array($string))
{
$array_keys = array_keys($string);
foreach ($array_keys as $key)
{
$string[$key] = nv_htmlspecialchars($string[$key]);
}
}
else
{
$search = array('&', '\'', '"', '<', '>', '\\', '/', '(', ')', '*', '[', ']', '!', '=', '%', '^', ':', '{', '}', '`', '~');
$replace = array('&amp;', '&#039;', '&quot;', '&lt;', '&gt;', '&#x005C;', '&#x002F;', '&#40;', '&#41;', '&#42;', '&#91;', '&#93;', '&#33;', '&#x3D;', '&#x25;', '&#x5E;', '&#x3A;', '&#x7B;', '&#x7D;', '&#x60;', '&#x7E;');
$string = str_replace($replace, $search, $string);
$string = str_replace("&#x23;", "#", $string);
$string = str_replace($search, $replace, $string);
$string = preg_replace("/([^\&]+)\#/", "\\1&#x23;", $string);
}

return $string;
}

/**
* strip_punctuation()
*
* @param mixed $text
* @return
*/
function strip_punctuation($text)
{
$urlbrackets = '\[\]\(\)';
$urlspacebefore = ':;\'_\*%@&?!' . $urlbrackets;
$urlspaceafter = '\.,:;\'\-_\*@&\/\\\\\?!#' . $urlbrackets;
$urlall = '\.,:;\'\-_\*%@&\/\\\\\?!#' . $urlbrackets;

$specialquotes = '\'"\*<>';

$fullstop = '\x{002E}\x{FE52}\x{FF0E}';
$comma = '\x{002C}\x{FE50}\x{FF0C}';
$arabsep = '\x{066B}\x{066C}';
$numseparators = $fullstop . $comma . $arabsep;

$numbersign = '\x{0023}\x{FE5F}\x{FF03}';
$percent = '\x{066A}\x{0025}\x{066A}\x{FE6A}\x{FF05}\x{2030}\x{2031}';
$prime = '\x{2032}\x{2033}\x{2034}\x{2057}';
$nummodifiers = $numbersign . $percent . $prime;

return preg_replace(array(// Remove separator, control, formatting, surrogate, open/close quotes.
'/[\p{Z}\p{Cc}\p{Cf}\p{Cs}\p{Pi}\p{Pf}]/u', // Remove other punctuation except special cases
'/\p{Po}(?<![' . $specialquotes . $numseparators . $urlall . $nummodifiers . '])/u', // Remove non-URL open/close brackets, except URL brackets.
'/[\p{Ps}\p{Pe}](?<![' . $urlbrackets . '])/u', // Remove special quotes, dashes, connectors, number separators, and URL characters followed by a space
'/[' . $specialquotes . $numseparators . $urlspaceafter . '\p{Pd}\p{Pc}]+((?= )|$)/u', // Remove special quotes, connectors, and URL characters preceded by a space
'/((?<= )|^)[' . $specialquotes . $urlspacebefore . '\p{Pc}]+/u', // Remove dashes preceded by a space, but not followed by a number
'/((?<= )|^)\p{Pd}+(?![\p{N}\p{Sc}])/u', // Remove consecutive spaces
'/ +/'), ' ', $text);
}

/**
* nv_nl2br()
*
* @param string $text
* @param string $replacement
* @return
*/
function nv_nl2br($text, $replacement = '<br />')
{
if (empty($text))
return '';
return strtr($text, array("\r\n" => $replacement, "\r" => $replacement, "\n" => $replacement));
}

/**
* nv_br2nl()
*
* @param string $text
* @return
*/
function nv_br2nl($text)
{
if (empty($text))
return '';
return preg_replace('/\<br(\s*)?\/?(\s*)?\>/i', chr(13) . chr(10), $text);
}

/**
* nv_editor_nl2br()
*
* @param string $text
* @return
*/
function nv_editor_nl2br($text)
{
if (empty($text))
return '';
$replacement = defined('NV_EDITOR') ? '' : '<br />';
return nv_nl2br($text, (defined('NV_EDITOR') ? '' : '<br />'));
}

/**
* nv_editor_br2nl()
*
* @param mixed $text
* @return
*/
function nv_editor_br2nl($text)
{
if (empty($text))
return '';
if (defined('NV_EDITOR'))
return $text;
return nv_br2nl($text);
}

/**
* filter_text_input()
*
* @param string $inputname
* @param string $mode
* @param string $default
* @param bool $specialchars
* @param integer $maxlength
* @param mixed $preg_replace
* @return
*/
function filter_text_input($inputname, $mode = 'request', $default = '', $specialchars = false, $maxlength = 0, $preg_replace = array())
{
global $nv_Request;

$value = $nv_Request->get_string($inputname, $mode, $default);
$value = strip_tags($value);
if (( bool )$specialchars == true)
{
$value = nv_htmlspecialchars($value);
}
if (( int )$maxlength > 0)
{
$value = nv_substr($value, 0, $maxlength);
}
if (!empty($preg_replace))
{
if (isset($preg_replace['pattern']) and !empty($preg_replace['pattern']) and isset($preg_replace['replacement']))
{
$value = preg_replace($preg_replace['pattern'], $preg_replace['replacement'], $value);
}
}
return trim($value);
}

/**
* filter_text_textarea()
*
* @param string $inputname
* @param string $default
* @param string $allowed_html_tags
* @param bool $save
* @param string $nl2br_replacement
* @return
*/
function filter_text_textarea($inputname, $default = '', $allowed_html_tags = '', $save = false, $nl2br_replacement = '<br />')
{
global $nv_Request;

$value = $nv_Request->get_string($inputname, 'post', $default);
if (empty($value))
return $value;
if (!empty($allowed_html_tags))
{
$allowed_html_tags = array_map("trim", explode(",", $allowed_html_tags));
$allowed_html_tags = "<" . implode("><", $allowed_html_tags) . ">";
$value = strip_tags($value, $allowed_html_tags);
}
if (( bool )$save)
$value = nv_nl2br($value, $nl2br_replacement);
return $value;
}

/**
* nv_editor_filter_textarea()
*
* @param string $inputname
* @param string $default
* @param string $allowed_html_tags
* @param bool $save
* @param string $nl2br_replacement
* @return
*/
function nv_editor_filter_textarea($inputname, $default = '', $allowed_html_tags = '', $save = false, $nl2br_replacement = '<br />')
{
global $nv_Request;

$value = $nv_Request->get_string($inputname, 'post', $default);
if (empty($value))
return '';

if (!empty($allowed_html_tags) and !defined('NV_EDITOR'))
{
$allowed_html_tags = array_map("trim", explode(",", $allowed_html_tags));
$allowed_html_tags = "<" . implode("><", $allowed_html_tags) . ">";
$value = strip_tags($value, $allowed_html_tags);
}

if (empty($value))
return '';

if (( bool )$save)
{
$value = nv_editor_nl2br($value, $nl2br_replacement);
}

return $value;
}

/**
* nv_get_keywords()
*
* @param string $content
* @return
*/
function nv_get_keywords($content = "")
{
if (empty($content))
return ("");

$content = strip_tags($content);
$content = nv_unhtmlspecialchars($content);
$content = strip_punctuation($content);
$content = trim($content);
$content = nv_strtolower($content);

$content = " " . $content . " ";

$pattern_word = array();

if (NV_SITEWORDS_MIN_3WORDS_LENGTH > 0 and NV_SITEWORDS_MIN_3WORDS_PHRASE_OCCUR > 0)
{
$pattern_word[] = "/[\s]+([\S]{" . NV_SITEWORDS_MIN_3WORDS_LENGTH . ",}\s[\S]{" . NV_SITEWORDS_MIN_3WORDS_LENGTH . ",}\s[\S]{" . NV_SITEWORDS_MIN_3WORDS_LENGTH . ",})(\s.*\\1){" . NV_SITEWORDS_MIN_3WORDS_PHRASE_OCCUR . ",}[\s]+/uis";
}

if (NV_SITEWORDS_MIN_2WORDS_LENGTH > 0 and NV_SITEWORDS_MIN_2WORDS_PHRASE_OCCUR > 0)
{
$pattern_word[] = "/[\s]+([\S]{" . NV_SITEWORDS_MIN_2WORDS_LENGTH . ",}\s[\S]{" . NV_SITEWORDS_MIN_2WORDS_LENGTH . ",})(\s.*\\1){" . NV_SITEWORDS_MIN_2WORDS_PHRASE_OCCUR . ",}[\s]+/uis";
}

if (NV_SITEWORDS_MIN_WORD_LENGTH > 0 and NV_SITEWORDS_MIN_WORD_OCCUR > 0)
{
$pattern_word[] = "/[\s]+([\S]{" . NV_SITEWORDS_MIN_WORD_LENGTH . ",})(\s.*\\1){" . NV_SITEWORDS_MIN_WORD_OCCUR . ",}[\s]+/uis";
}

if (empty($pattern_word))
return ("");

$keywords = array();
$lenght = 0;
$max_strlen = min(NV_SITEWORDS_MAX_STRLEN, 300);

foreach ($pattern_word as $pattern)
{
while (preg_match($pattern, $content, $matches))
{
$keywords[] = $matches[1];
$lenght += nv_strlen($matches[1]);

$content = preg_replace("/[\s]+(" . preg_quote($matches[1]) . ")[\s]+/uis", " ", $content);

if ($lenght >= $max_strlen)
break;
}

if ($lenght >= $max_strlen)
break;
}

$keywords = array_unique($keywords);
return implode(",", $keywords);
}

/**
* nv_sendmail()
*
* @param mixed $from
* @param mixed $to
* @param string $subject
* @param string $message
* @param string $files
* @return
*/
function nv_sendmail($from, $to, $subject, $message, $files = '')
{
global $global_config, $sys_info;

$sendmail_from = ini_get('sendmail_from');
require_once (NV_ROOTDIR . '/includes/phpmailer/class.phpmailer.php');
try
{
$mail = new PHPMailer(true);
$mail->CharSet = $global_config['site_charset'];
$mailer_mode = strtolower($global_config['mailer_mode']);
if ($mailer_mode == 'smtp')
{
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Port = $global_config['smtp_port'];
$mail->Host = $global_config['smtp_host'];
$mail->Username = $global_config['smtp_username'];
$mail->Password = $global_config['smtp_password'];
$SMTPSecure = intval($global_config['smtp_ssl']);
switch ( $SMTPSecure )
{
case 1 :
$mail->SMTPSecure = 'ssl';
break;
case 2 :
$mail->SMTPSecure = 'tls';
break;
default :
$mail->SMTPSecure = '';
}
}
elseif ($mailer_mode == 'sendmail')
{
$mail->IsSendmail();
}
elseif (!in_array('mail', $sys_info['disable_functions']))
{
$mail->IsMail();
}
else
{
return false;
}

$message = nv_change_buffer($message);
$message = nv_unhtmlspecialchars($message);
$subject = nv_unhtmlspecialchars($subject);

$mail->From = $sendmail_from;
$mail->FromName = $global_config['site_name'];
if (is_array($from))
{
$mail->AddReplyTo($from[1], $from[0]);
}
else
{
$mail->AddReplyTo($from);
}

if (empty($to))
return false;

if (!is_array($to))
$to = array($to);

foreach ($to as $_to)
{
$mail->AddAddress($_to);
}

$mail->Subject = $subject;
$mail->WordWrap = 120;
$mail->MsgHTML($message);
$mail->IsHTML(true);
if (!empty($files))
{
$files = array_map("trim", explode(",", $files));
foreach ($files as $file)
{
$mail->AddAttachment($file);
}
}
$send = $mail->Send();
if (!$send)
{
trigger_error($mail->ErrorInfo, E_USER_WARNING);
}
return $send;
}
catch ( phpmailerException $e )
{
trigger_error($e->errorMessage(), E_USER_WARNING);
return false;
}
}

/**
* nv_generate_page()
*
* @param string $base_url
* @param integer $num_items
* @param integer $per_page
* @param integer $start_item
* @param bool $add_prevnext_text
* @param bool $onclick
* @param string $js_func_name
* @param string $containerid
* @return
*/
function nv_generate_page($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = true, $onclick = false, $js_func_name = 'nv_urldecode_ajax', $containerid = 'generate_page')
{
global $lang_global;

$total_pages = ceil($num_items / $per_page);
if ($total_pages == 1)
return '';

$on_page = @floor($start_item / $per_page) + 1;

if (!is_array($base_url))
{
$amp = preg_match("/\?/", $base_url) ? "&amp;" : "?";
$amp .= "page=";
}
else
{
$amp = $base_url['amp'];
$base_url = $base_url['link'];
}

$page_string = "";
if ($total_pages > 10)
{
$init_page_max = ($total_pages > 3) ? 3 : $total_pages;
for ($i = 1; $i <= $init_page_max; ++$i)
{
$href = ($i - 1) * $per_page;
$href = $href ? $base_url . $amp . $href : $base_url;
$href = !$onclick ? "href=\"" . $href . "\"" : "href=\"javascript:void(0)\" onclick=\"" . $js_func_name . "('" . rawurlencode(nv_unhtmlspecialchars($href)) . "','" . $containerid . "')\"";
$page_string .= ($i == $on_page) ? "<strong>" . $i . "</strong>" : "<a " . $href . ">" . $i . "</a>";
if ($i < $init_page_max)
$page_string .= ", ";
}
if ($total_pages > 3)
{
if ($on_page > 1 && $on_page < $total_pages)
{
$page_string .= ($on_page > 5) ? " ... " : ", ";
$init_page_min = ($on_page > 4) ? $on_page : 5;
$init_page_max = ($on_page < $total_pages - 4) ? $on_page : $total_pages - 4;
for ($i = $init_page_min - 1; $i < $init_page_max + 2; ++$i)
{
$href = ($i - 1) * $per_page;
$href = $href ? $base_url . $amp . $href : $base_url;
$href = !$onclick ? "href=\"" . $href . "\"" : "href=\"javascript:void(0)\" onclick=\"" . $js_func_name . "('" . rawurlencode(nv_unhtmlspecialchars($href)) . "','" . $containerid . "')\"";
$page_string .= ($i == $on_page) ? "<strong>" . $i . "</strong>" : "<a " . $href . ">" . $i . "</a>";
&nbs

Nguyễn Huy Hoàng
Giảng viên bộ môn Sinh học
ĐH Y dược - ĐH Thái Nguyên
Mobile: 0898.099.033
Website: wWw.huyhoang.info
#104615 gửi bởi hungfirestorm
Ngày 12 Tháng 12 2011 , 21:01
Bạn chịu khó sửa tương tự như mình hướng dẫn ở trên là được mà, bạn kiếm cái file update đó, giải nén (cái file hôm trước bạn gửi lên đây nó chỉ có một dòng nhìn hoa cả mắt, ai không biết nhìn vào chắc sẽ chẳng bao giờ dám động đến code nữa :D ) rồi mang ra sửa lại. Nếu rảnh thì mình sẽ ghé qua topic này để sửa giúp bạn.
#104622 gửi bởi huyhoangytn
Ngày 12 Tháng 12 2011 , 22:32
tại lần trước bạn hướng dẫn tìm đoạn code với bản 3.2 trở về trước, còn bản 3.3 bạn đã làm giúp nên mình chỉ copy về thôi nên ko rõ ở bản này bạn sửa chỗ nào

Nguyễn Huy Hoàng
Giảng viên bộ môn Sinh học
ĐH Y dược - ĐH Thái Nguyên
Mobile: 0898.099.033
Website: wWw.huyhoang.info
#104670 gửi bởi hungfirestorm
Ngày 13 Tháng 12 2011 , 05:21
huyhoangytn đã viết:tại lần trước bạn hướng dẫn tìm đoạn code với bản 3.2 trở về trước, còn bản 3.3 bạn đã làm giúp nên mình chỉ copy về thôi nên ko rõ ở bản này bạn sửa chỗ nào

Trong bản update 3.3.06 này đội code đã xoá bớt một số hàm cũ không sử dụng nên bạn up nguyên file trên của mình lên tất nhiên là sẽ không được rồi, bạn tải file đính kèm bên dưới, giải nén, up lên đúng vị trí.
functions.zip
Đính kèm
(14.85 KB) Đã tải về 13 lần
Sửa lần cuối bởi hungfirestorm vào Ngày 13 Tháng 12 2011 , 19:54, với tổng số 1 lần sửa.
#104671 gửi bởi huyhoangytn
Ngày 13 Tháng 12 2011 , 05:32
hungfirestorm đã viết:
huyhoangytn đã viết:tại lần trước bạn hướng dẫn tìm đoạn code với bản 3.2 trở về trước, còn bản 3.3 bạn đã làm giúp nên mình chỉ copy về thôi nên ko rõ ở bản này bạn sửa chỗ nào

Trong bản update 3.3.06 này đội code đã xoá bớt một số hàm cũ không sử dụng nên bạn up nguyên file trên của mình lên tất nhiên là sẽ không được rồi, bạn tải file đính kèm bên dưới, giải nén, up lên đúng vị trí.
functions.zip


Hic. cảm ơn bạn đã giúp đỡ mình. Nhưng mình tải file bạn về, upload lên, chỉ vào được trang chủ, còn vào các mục nhỏ trên site, chỉ ra trang trắng tinh bạn ạ.
Bạn xem lại giúp mình với

Nguyễn Huy Hoàng
Giảng viên bộ môn Sinh học
ĐH Y dược - ĐH Thái Nguyên
Mobile: 0898.099.033
Website: wWw.huyhoang.info
#104717 gửi bởi hungfirestorm
Ngày 13 Tháng 12 2011 , 19:59
Chào bạn,
Mình đã sửa lại file functions.php, bạn down lại file .zip ở bài viết thứ 3 tính từ bài này :D , mình không chắc lắm vì không có host giống bạn để test thử. Web host của mình không bị như vậy.
Chúc bạn thành công!
#104762 gửi bởi huyhoangytn
Ngày 14 Tháng 12 2011 , 05:00
vẫn ko được bạn ạ. Lần này thì sau khi upload, đã có thể vào được modules Tin tức (các mục con), nhưng các chuyên mục liên quan đến modules download vẫn chỉ hiện trang trắng ko ra gì hết bạn ạ. hic

Nguyễn Huy Hoàng
Giảng viên bộ môn Sinh học
ĐH Y dược - ĐH Thái Nguyên
Mobile: 0898.099.033
Website: wWw.huyhoang.info
#104768 gửi bởi hungfirestorm
Ngày 14 Tháng 12 2011 , 06:18
Mình chỉ điều chỉnh theo một số host free thôi, còn host của bạn như thế nào mình không có tí thông tin gì, trang nào cũng không biết, nên không thể giúp bạn được. Nếu host web bạn đã mua mà bị như vậy thì chỉ có thể do host đó. Mình chỉ có thể giúp bạn được đến đây.
#104775 gửi bởi huyhoangytn
Ngày 14 Tháng 12 2011 , 06:51
hungfirestorm đã viết:Mình chỉ điều chỉnh theo một số host free thôi, còn host của bạn như thế nào mình không có tí thông tin gì, trang nào cũng không biết, nên không thể giúp bạn được. Nếu host web bạn đã mua mà bị như vậy thì chỉ có thể do host đó. Mình chỉ có thể giúp bạn được đến đây.

Ủa, mình nói từ đâu rồi mà bạn. Mình up tài liệu lên trang mediafire.com (http://www.mediafire.com) đó bạn. Như bản trước bạn edit giúp dùng rất tốt đó bạn.
Bạn cố gắng xem giúp với. Cảm ơn nhiều

Nguyễn Huy Hoàng
Giảng viên bộ môn Sinh học
ĐH Y dược - ĐH Thái Nguyên
Mobile: 0898.099.033
Website: wWw.huyhoang.info
#156069 gửi bởi thanhnhatxd
Ngày 25 Tháng 04 2014 , 22:05
Đối với bản 3.2 các bạn chỉ cần đổi "return false;" thành "return true;"

Mã: Chọn hết
function nv_check_url ( $url, $is_200 = 0 )
{
if ( empty( $url ) ) return true;
$url = str_replace( " ", "%20", $url );
$allow_url_fopen = ( ini_get( 'allow_url_fopen' ) == '1' || strtolower( ini_get( 'allow_url_fopen' ) ) == 'on' ) ? 1 : 0;
if ( nv_function_exists( 'get_headers' ) and $allow_url_fopen == 1 )
{
$res = get_headers( $url );
}
elseif ( nv_function_exists( 'curl_init' ) and nv_function_exists( 'curl_exec' ) )
{
$url_info = @parse_url( $url );
$port = isset( $url_info['port'] ) ? intval( $url_info['port'] ) : 80;

$userAgents = array( //
'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0', //
'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', //
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)', //
'Mozilla/4.8 [en] (Windows NT 6.0; U)', //
'Opera/9.25 (Windows NT 6.0; U; en)' ); //


$safe_mode = ( ini_get( 'safe_mode' ) == '1' || strtolower( ini_get( 'safe_mode' ) ) == 'on' ) ? 1 : 0;
$open_basedir = ( ini_get( 'open_basedir' ) == '1' || strtolower( ini_get( 'open_basedir' ) ) == 'on' ) ? 1 : 0;

srand( ( float )microtime() * 10000000 );
$rand = array_rand( $userAgents );
$agent = $userAgents[$rand];

$curl = curl_init( $url );
curl_setopt( $curl, CURLOPT_HEADER, true );
curl_setopt( $curl, CURLOPT_NOBODY, true );

curl_setopt( $curl, CURLOPT_PORT, $port );
if ( ! $safe_mode and $open_basedir )
{
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
}

curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );

curl_setopt( $curl, CURLOPT_TIMEOUT, 15 );
curl_setopt( $curl, CURLOPT_USERAGENT, $agent );

$response = curl_exec( $curl );
curl_close( $curl );

if ( $response === false )
{
trigger_error( curl_error( $curl ), E_USER_WARNING );
return true;
}
else
{
$res = explode( "\n", $response );
}
}


Hoặc tải file bên dưới chép đè lên nha!
Đính kèm
(13.16 KB) Đã tải về 2 lần