php dopt('d_post_comment_b'),keke-comment/keke_base_class.php at master · xncoder/keke-comment · Git...

class keke_base_class {

static public function k_addslashes($string) {

if (is_array ( $string )) {

$key = array_keys ( $string );

$s = sizeof ( $key );

for($i = 0; $i < $s; $i ++) {

$string [$key [$i]] = self::k_addslashes ( $string [$key [$i]] );

}

} else {

$string = addslashes ( self::escape(trim ( $string ) ));

}

return $string;

}

public static function set_star($str, $start, $end, $start_num = 3, $preg_str = "*") {

if (strlen ( $str ) <= ($start + $end)) {

return $str;

}

$start_str = mb_strcut ( $str, 0, $start, CHARSET );

$tmp_str = mb_strcut ( $str, 0, - $end, CHARSET );

$end_str = mb_strcut ( $str, mb_strlen ( $tmp_str ), mb_strlen ( $str ) );

$replace_str = str_repeat ( $preg_str, $start_num );

return $start_str . $replace_str . $end_str;

}

static function redirect_second_domain() {

global $_K, $kekezu;

if ($kekezu->_sys_config ['second_domain']) {

$host = $_SERVER ['HTTP_HOST'];

preg_match ( '/^(\d+)\./', $host, $m );

if ($m [1]) {

$uid = intval ( $m [1] );

$e = db_factory::query ( sprintf ( ' select uid from %switkey_member where uid=%d', TABLEPRE, $uid ) );

if ($e) {

header ( 'Location:' . $_K ['siteurl'] . '/index.php?do=space&member_id=' . $uid . '&' . $_SERVER ['QUERY_STRING'] );

} else {

header ( 'Location:' . $_K ['siteurl'] . '/index.php?do=error&type=user' );

}

}

}

}

static function build_space_url($mid) {

global $_K, $kekezu;

if ($kekezu->_sys_config ['second_domain']) {

$top = $kekezu->_sys_config ['top_domain'];

$p_url = preg_replace ( '/(\w*\.)?' . $top . '/', $mid . '.' . $top, $_K ['siteurl'] );

} else {

}

return $p_url;

}

static function exec_js($mode = 'set', $timer = 300) {

$path = S_ROOT . "/data/data_cache/time_cache.php";

switch ($mode) {

case "set" :

$str = '<?php ' . (time () + $timer) . ';';

return keke_file_class::write_file ( $path, $str );

break;

case "get" :

// 获得上一次的cache生成时间,格式:unix时间戳

if (file_exists ( $path )) {

$last_respons = mb_strcut ( file_get_contents ( $path ), 6, 10 );

}

return intval ( $last_respons );

break;

}

}

static public function k_stripslashes($string) {

if (is_array ( $string )) {

$key = array_keys ( $string );

$s = sizeof ( $key );

for($i = 0; $i < $s; $i ++) {

$string [$key [$i]] = self::k_stripslashes ( $string [$key [$i]] );

}

} else {

$string = stripcslashes ( trim ( $string ) );

}

return $string;

}

/**

* 如果为开启魔术引号,对输入添加反斜线转移

*/

static public function k_input($_r) {

if (! get_magic_quotes_gpc ()) {

return kekezu::k_addslashes ( $_r );

} else {

return $_r;

}

}

static public function refer_url() {

global $_K;

$url = $_SERVER ['REQUEST_URI'];

switch ($_K ['is_rewrite']) {

case 0, default :

if (stristr ( $url, 'do=login' )) {

$url = str_replace ( "do=login", "do=register", $url );

} elseif (stristr ( $url, 'do=register' )) {

$url = str_replace ( "do=register", "do=login", $url );

}

break;

case 1 :

if (stristr ( $url, '/register.html' )) {

$url = preg_replace ( "/\/register.html(\??)/", "/login.html?", $url );

} elseif (stristr ( $url, '/login.html' )) {

$url = preg_replace ( "/\/login.html(\??)/", "/register.html?", $url );

}elseif(stristr($url,'/login-ac_type-reg.html')){

$url = preg_replace ( "/\/login-ac_type-reg.html(\&?)/", "/register.html?", $url );

}

break;

}

if (stristr ( $url, '&refer' )) {

$_K ['refer'] = str_replace ( "refer=", "", strstr ( $url, "refer" ) );

return $url;

} else {

$refer_url = $url . "&refer=" . $_SERVER ['HTTP_REFERER'];

$_K ['refer'] = $_SERVER ['HTTP_REFERER'];

return $refer_url;

}

}

static public function get_arr_by_key($arr = array(), $key) {

$size = sizeof ( $arr );

$tmp = array ();

for($i = 0; $i < $size; $i ++) {

$tmp [$arr [$i] [$key]] = $arr [$i];

}

return $tmp;

}

static function escape($string) {

$search = array ('//i', '/\">/i', '/\bunion\b/i', '/load_file(\s*(\/\*.*\*\/)?\s*)+\(/i', '/into(\s*(\/\*.*\*\/)?\s*)+outfile/i', '/\bor\b/i', '/\]*?)\>/si', '/\]*?)\>/si', '/\]*?)\>/si' );

$replace = array ('<', '>', '">', 'union ', 'load_file  (', 'into  outfile', 'or ', '<\\1script\\2>', '<\\1iframe\\2>', '<\\1frame\\2>' );

if (is_array ( $string )) {

$key = array_keys ( $string );

$size = sizeof ( $key );

for($i = 0; $i < $size; $i ++) {

$string [$key [$i]] = self::escape ( $string [$key [$i]] );

}

} else {

$string = str_replace ( array ('\n', '\r' ), array (chr ( 10 ), chr ( 13 ) ), preg_replace ( $search, $replace, $string ) );

}

return $string;

}

static function filter_input($str) {

if (is_array ( $str )) {

$key = array_keys ( $str );

$s = sizeof ( $str );

for($i = 0; $i < $s; $i ++) {

$str [$key [$i]] = self::filter_input ( $str [$key [$i]] );

}

} else {

$str = htmlspecialchars_decode ( $str );

$str = preg_replace ( '/

}

return $str;

}

static function filter_xss() {

global $_lang;

keke_lang_class::loadlang ( 'public', 'public' );

$temp = strtoupper ( urldecode ( urldecode ( $_SERVER ['REQUEST_URI'] ) ) );

if (strpos ( $temp, '' ) !== false || strpos ( $temp, '"' ) !== false || strpos ( $temp, 'CONTENT-TRANSFER-ENCODING' ) !== false) {

kekezu::show_msg ( $_lang ['operate_notice'], "index.php", 9999, $_lang ['xss_attack_warning_notice'], "error" );

die ();

}

return true;

}

static function get_tree($array, &$temp_arr, $out = 'option', $index = null, $id = 'indus_id', $pid = 'indus_pid', $name = 'indus_name') {

$tree = array ();

if ($array) {

foreach ( $array as $v ) {

$pt = $v [$pid];

$list = @$tree [$pt] ? $tree [$pt] : array ();

array_push ( $list, $v );

$tree [$pt] = $list;

}

}

if ($tree) {

$tree [0] or $tree [0] = $tree [$array [0] [$pid]];

if(is_array($tree [0])){

foreach ( $tree [0] as $k => $v ) {

if ($out == 'option') {

if ($index == $v [$id]) {

$temp_arr [] = "$v[$name]";

} else {

$temp_arr [] = "$v[$name]";

}

} elseif ($out == 'cat') {

$v ['ext'] = '';

$temp_arr [] = $v;

} else {

isset ( $v [$name] ) and $v ['ext'] = $v [$name];

$v ['level'] = 0;

$temp_arr [] = $v;

}

if ($tree [$v [$id]])

self::draw_tree ( $tree [$v [$id]], $tree, 0, $temp_arr, $out, $index, $id, $pid, $name );

}

}

}

}

static function draw_tree($arr, $tree, $level, &$temp_arr, $out, $index, $id, $pid, $name) {

$level ++;

$prefix = str_pad ( " |", $level + 2, '---', STR_PAD_RIGHT );

$n = str_pad ( '', $level + 2, '--', STR_PAD_RIGHT );

$n = str_replace ( "-", " ", $n );

foreach ( $arr as $k2 => $v2 ) {

if ($out == 'option') {

if ($index == $v2 [$id]) {

$temp_arr [] = "$n$prefix$v2[$name]";

} else {

$temp_arr [] = "$n$prefix$v2[$name]";

}

} elseif ($out == 'cat') {

$v2 ['ext'] = $n . $prefix;

$v2 ['level'] = $level;

$temp_arr [] = $v2;

} else {

isset ( $v2 [$name] ) and $v2 ['ext'] = $n . "┣" . $v2 [$name];

$v2 ['level'] = $level;

$temp_arr [] = $v2;

}

if (isset ( $tree [$v2 [$id]] )) {

self::draw_tree ( $tree [$v2 [$id]], $tree, $level, $temp_arr, $out, $index, $id, $pid, $name );

}

}

}

static function gbktoutf($string) {

$string = self::charset_encode ( "gbk", "utf-8", $string );

return $string;

}

static function utftogbk($string) {

$string = self::charset_encode ( "utf-8", "gbk", $string );

return $string;

}

static function objtoarray($obj) {

if (is_object ( $obj )) {

$obj = ( array ) $obj;

}

if ($obj)

foreach ( $obj as $k => $o ) {

if (is_object ( $o ) || is_array ( $o )) {

$obj [$k] = kekezu::objtoarray ( $o );

}

}

return $obj;

}

static function charset_encode($_input_charset, $_output_charset, $input) {

$output = "";

$string = $input;

if (is_array ( $input )) {

$key = array_keys ( $string );

$size = sizeof ( $key );

for($i = 0; $i < $size; $i ++) {

$string [$key [$i]] = self::charset_encode ( $_input_charset, $_output_charset, $string [$key [$i]] );

}

return $string;

} else {

if (! isset ( $_output_charset ))

$_output_charset = $_input_charset;

if ($_input_charset == $_output_charset || $input == null) {

$output = $input;

} elseif (function_exists ( "mb_convert_encoding" )) {

$output = mb_convert_encoding ( $input, $_output_charset, $_input_charset );

} elseif (function_exists ( "iconv" )) {

$output = iconv ( $_input_charset, $_output_charset, $input );

} else

die ( "sorry, you have no libs support for charset change." );

return $output;

}

}

static function echojson($msg = '', $status = 0, $dataarr = array()) {

global $_K;

if ($_K ['charset'] == 'gbk') {

$msg = self::gbktoutf ( $msg );

$status = self::gbktoutf ( $status );

$dataarr = self::gbktoutf ( $dataarr );

}

$arr = array ('msg' => $msg, 'status' => $status, 'data' => $dataarr );

echo self::json_encode_k ( $arr );

exit ();

}

static function json_encode_k($array) {

if (function_exists ( 'json_encode' )) {

return json_encode ( $array );

} else {

require_once S_ROOT . 'lib/helper/keke_json_class.php';

$json_obj = new json ();

return $json_obj->encode ( $array );

}

}

static function sstrtotime($time, $now = null) {

date_default_timezone_set ( 'Etc/GMT' );

$time = strtotime ( $time, $now );

date_default_timezone_set ( 'Asia/Shanghai' );

return $time;

}

static function randomkeys($length) {

$key = null;

$pattern = '1234567890abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLOMNOPQRSTUVWXYZ';

for($i = 0; $i < $length; $i ++) {

$key .= $pattern {mt_rand ( 0, 35 )};

}

return $key;

}

static function get_rand_kf() {

$kf_arr = kekezu::get_table_data ( 'uid', 'witkey_space', ' group_id = 7' );

$kf_arr_count = count ( $kf_arr );

$randno = rand ( 0, $kf_arr_count - 1 );

return $kf_uid = $kf_arr [$randno] [uid] ? $kf_arr [$randno] [uid] : ADMIN_UID;

}

public static function time2Units($time, $limit = null) {

global $_lang;

$tt = getdate ();

$tt = $tt ['year'];

$year = floor ( $time / 60 / 60 / 24 / 365 );

$time -= $year * 60 * 60 * 24 * 365;

$month = floor ( $time / 60 / 60 / 24 / 30 );

$time -= $month * 60 * 60 * 24 * 30;

$day = floor ( $time / 60 / 60 / 24 );

$time -= $day * 60 * 60 * 24;

$hour = floor ( $time / 60 / 60 );

$time -= $hour * 60 * 60;

$minute = floor ( $time / 60 );

$time -= $minute * 60;

$second = $time;

$elapse = '';

$unitArr = array ($_lang ['year'] => 'year', $_lang ['months'] => 'month', $_lang ['day'] => 'day', $_lang ['hour'] => 'hour', $_lang ['minute'] => 'minute' );

foreach ( $unitArr as $cn => $u ) {

if ($$u > 0) {

$elapse .= $$u . $cn;

}

if ($u == $limit) {

return $elapse;

}

}

return $elapse;

}

static function time_to_units($end_time) {

global $_lang;

$now = time ();

$res = $end_time - $now;

$oneday = 24 * 60 * 60;

$onehour = 60 * 60;

if ($res <= 0) {

$res = $_lang ['choosing'];

} else if ($res > 0 && $res < $oneday) {

$res = $_lang ['going_to_expired'];

} else {

if ($res / $oneday > 0) {

$day = floor ( $res / $oneday );

$left_sec = $res % $oneday;

if ($left_sec / $onehour > 0) {

$hour = number_format ( ($left_sec / $oneday) * 24, 0 );

} else

$hour = 0;

} else {

$day = 0;

$left_sec = $res % $oneday;

if ($left_sec / $onehour > 0) {

$hour = number_format ( ($left_sec / $oneday) * 24, 0 );

} else

$hour = 0;

}

$res = $day . $_lang ['day'] . $hour . $_lang ['hour'];

}

return $res;

}

static function cutstr($string, $length, $in_slashes = 0, $out_slashes = 0, $censor = '...', $html = 0) {

global $_K;

$string = trim ( $string );

if ($in_slashes) {

$string = stripslashes ( $string );

}

if ($html < 0) {

$string = preg_replace ( "/(\|\r|\n|\s|\[.+?\])/is", ' ', $string );

$string = htmlspecialchars ( $string );

} elseif ($html == 0) {

$string = htmlspecialchars ( $string );

}

if ($length && strlen ( $string ) > $length) {

$wordscut = '';

if ($_K ['charset'] == 'utf-8') {

$n = 0;

$tn = 0;

$noc = 0;

while ( $n < strlen ( $string ) ) {

$t = ord ( $string [$n] );

if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {

$tn = 1;

$n ++;

$noc ++;

} elseif (194 <= $t && $t <= 223) {

$tn = 2;

$n += 2;

$noc += 2;

} elseif (224 <= $t && $t < 239) {

$tn = 3;

$n += 3;

$noc += 2;

} elseif (240 <= $t && $t <= 247) {

$tn = 4;

$n += 4;

$noc += 2;

} elseif (248 <= $t && $t <= 251) {

$tn = 5;

$n += 5;

$noc += 2;

} elseif ($t == 252 || $t == 253) {

$tn = 6;

$n += 6;

$noc += 2;

} else {

$n ++;

}

if ($noc >= $length) {

break;

}

}

if ($noc > $length) {

$n -= $tn;

}

$wordscut = substr ( $string, 0, $n );

} else {

for($i = 0; $i < $length - 1; $i ++) {

if (ord ( $string [$i] ) > 127) {

$wordscut .= $string [$i] . $string [$i + 1];

$i ++;

} else {

$wordscut .= $string [$i];

}

}

}

$string = $wordscut . $censor;

}

if ($out_slashes) {

$string = addslashes ( $string );

}

$string = htmlspecialchars_decode ( $string );

return trim ( $string );

}

static function str_filter($content = '') {

global $basic_config;

if (is_array ( $content )) {

foreach ( $content as $k => $v ) {

$content [$k] = self::str_filter ( $v );

}

return $content;

} else {

$basic_info = $basic_config;

$censor = $basic_info [ban_content];

if (empty ( $censor ) || $content == '*' || $content == '?') {

return $content;

}

$censor_arr = explode ( '|', $censor );

$censor_arr = array_filter ( $censor_arr );

foreach ( $censor_arr as $v ) {

if (! ($v == '*' || $v == '?')) {

$find [] = '/' . $v . '/i';

$replase [] = '*';

}

}

return preg_replace ( $find, $replase, $content );

}

}

static function k_strpos($k) {

global $basic_config;

$user_arr = explode ( '|', $basic_config ['ban_users'] );

$r = '';

foreach ( $user_arr as $value ) {

if (preg_match ( '/' . $value . '/', $k )) {

$r = $value;

break;

}

}

return $r ? true : false;

}

public static function k_match($k_arr, $content) {

$m = 0;

foreach ( $k_arr as $value ) {

if (preg_match ( '/' . $value . '/', $content )) {

$m += 1;

}

}

return $m;

}

static function check_install() {

global $_lang;

$lock_file = S_ROOT . './data/keke_kppw_install.lck';

die ();

file_exists ( $lock_file ) == false or kekezu::show_msg ( $_lang ['kppw_install_notice'], 'install/index.php', 3, $_lang ['you_not_install_kppw_notice'] );

}

static function get_gmdate($timestamp) {

global $_lang;

global $_K;

$time = $_K ['timestamp'] - $timestamp;

if ($time > 24 * 3600) {

$result = intval ( $time / (24 * 3600) ) . $_lang ['day_before'];

} elseif ($time > 3600) {

$result = intval ( $time / 3600 ) . $_lang ['hour_before'];

} elseif ($time > 60) {

$result = intval ( $time / 60 ) . $_lang ['minute_before'];

} elseif ($time > 0) {

$result = $time . $_lang ['seconds_before'];

} else {

$result = $_lang ['now'];

}

return $result;

}

/*

* 表单hash生成算法

* time() 结果形式 1363141079 substr(time(), 0, -7) 舍掉后7位,结果为136

* ENCODE_KEY config/config.inc.php:11:define('ENCODE_KEY','keke');

* $uid $username 可直接获得

* md5(136 . uid . username . keke) ,取后6位

* uid 通过 space 的member_id可获得, username在页面直接能找到

* 结论:formhash 值可预测,并且每个用户的hash值在 10^7 s 内不会变化,所以token完全是虚设

* 建议:修改 ENCODE_KEY 值,或者用substr(time(), 0, 7)) (但是方法二修改了逻辑,会导致无法校验)

*/

static function formhash() {

$uid = null;

$username = null;

if (isset ( $_SESSION ['uid'] )) {

$uid = $_SESSION ['uid'];

}

if (isset ( $_SESSION ['username'] )) {

$username = $_SESSION ['username'];

}

return substr ( md5 ( substr ( time (), 0, - 7 ) . $uid . $username . ENCODE_KEY ), - 6 );

}

static function submitcheck($var, $return_json = false) {

global $_lang;

global $_K, $kekezu;

if (! empty ( $var ) && $_SERVER ['REQUEST_METHOD'] == 'POST') {

// 如果 HTTP_REFERER 为空,判断是直接发起的请求,而非页面跳转

// 取HTTP_REFERER中https://xxxxx/的xxx部分,即域名,和HTTP_HOST的域名比较,判断是否为跨域请求

// 最后判断表单的 formhash 值与 define('FORMHASH', kekezu::formhash()) 计算的hash值是否一致

if ((empty ( $_SERVER ['HTTP_REFERER'] ) || preg_replace ( "/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER ['HTTP_REFERER'] ) == preg_replace ( "/([^\:]+).*/", "\\1", $_SERVER ['HTTP_HOST'] )) && $var == FORMHASH) {

return true;

} elseif ($return_json == true) {

return false;

} elseif ($_K [inajax]) {

kekezu::show_msg ( $_lang ['operate_error'], "", 5, $_lang ['repeat_form_submit'], 'alert_error' );

} else {

kekezu::show_msg ( $_lang ['operate_error'], "index.php", 30, $_lang ['illegal_or_repeat_submit'], 'alert_error' );

}

} else {

return false;

}

}

static function curl_file_get_contents($durl) {

$ch = curl_init ();

curl_setopt ( $ch, CURLOPT_URL, $durl );

curl_setopt ( $ch, CURLOPT_POST, 1 );

curl_setopt ( $ch, CURLOPT_TIMEOUT, 5 );

curl_setopt ( $ch, CURLOPT_USERAGENT, _USERAGENT_ );

curl_setopt ( $ch, CURLOPT_REFERER, _REFERER_ );

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );

$r = curl_exec ( $ch );

curl_close ( $ch );

return $r;

}

static function show_error($data = '') {

require keke_tpl_class::template ( 'tpl/default/show_error' );

}

static function get_ip() {

global $_lang;

if (! empty ( $_SERVER ["HTTP_CLIENT_IP"] ))

$cip = $_SERVER ["HTTP_CLIENT_IP"];

else if (! empty ( $_SERVER ["HTTP_X_FORWARDED_FOR"] ))

$cip = $_SERVER ["HTTP_X_FORWARDED_FOR"];

else if (! empty ( $_SERVER ["REMOTE_ADDR"] ))

$cip = $_SERVER ["REMOTE_ADDR"];

else

$cip = $_lang ['can_not_get'];

return $cip;

}

static function unescape($escstr) {

preg_match_all ( "/%u[0-9A-Za-z]{4}|%.{2}|[0-9a-zA-Z.+-_]+/", $escstr, $matches );

$ar = &$matches [0];

$c = "";

foreach ( $ar as $val ) {

if (substr ( $val, 0, 1 ) != "%") {

$c .= $val;

} elseif (substr ( $val, 1, 1 ) != "u") {

$x = hexdec ( substr ( $val, 1, 2 ) );

$c .= chr ( $x );

} else {

$val = intval ( substr ( $val, 2 ), 16 );

if ($val < 0x7F) {

$c .= chr ( $val );

} elseif ($val < 0x800) {

$c .= chr ( 0xC0 | ($val / 64) );

$c .= chr ( 0x80 | ($val % 64) );

} else {

$c .= chr ( 0xE0 | (($val / 64) / 64) );

$c .= chr ( 0x80 | (($val / 64) % 64) );

$c .= chr ( 0x80 | ($val % 64) );

}

}

}

strtolower ( CHARSET ) == 'gbk' and $c = self::utftogbk ( $c );

return $c;

}

static function is_email($email) {

return strlen ( $email ) > 6 && preg_match ( "/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email );

}

static function is_mobile($mobile) {

return preg_match ( "/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|18[0-9]{9}$/", $mobile );

}

static function socket_request($url, $sim = true, $time_out = "60") {

$sim and $url .= "&sim_request=1";

$urlarr = parse_url ( $url );

$input_charset = strtolower ( CHARSET );

$errno = "";

$errstr = "";

$transports = "";

$responseText = "";

if ($urlarr ["scheme"] == "https") {

$transports = "ssl://";

$urlarr ["port"] = "443";

} else {

$transports = "tcp://";

$urlarr ["port"] = "80";

}

$fp = @fsockopen ( $transports . $urlarr ['host'], $urlarr ['port'], $errno, $errstr, $time_out );

if (! $fp) {

die ( "ERROR: $errno - $errstr
\n" );

} else {

if (trim ( $input_charset ) == '') {

fputs ( $fp, "POST " . $urlarr ["path"] . " HTTP/1.1\r\n" );

} else {

fputs ( $fp, "POST " . $urlarr ["path"] . '?_input_charset=' . $input_charset . " HTTP/1.1\r\n" );

}

fputs ( $fp, "Host: " . $urlarr ["host"] . "\r\n" );

fputs ( $fp, "Content-type: application/x-www-form-urlencoded\r\n" );

fputs ( $fp, "Content-length: " . strlen ( $urlarr ["query"] ) . "\r\n" );

fputs ( $fp, "Connection: close\r\n\r\n" );

fputs ( $fp, $urlarr ["query"] . "\r\n\r\n" );

while ( ! feof ( $fp ) ) {

$responseText .= @fgets ( $fp, 1024 );

}

fclose ( $fp );

$responseText = trim ( stristr ( $responseText, "\r\n\r\n" ), "\r\n" );

return $responseText;

}

}

public static function curl_request($url, $sim = true, $method = "get", $postfields = NULL) {

$sim or $url .= "&sim_request=1";

$ci = curl_init ();

curl_setopt ( $ci, CURLOPT_URL, $url );

curl_setopt ( $ci, CURLOPT_HEADER, FALSE );

curl_setopt ( $ci, CURLOPT_RETURNTRANSFER, TRUE );

curl_setopt ( $ci, CURLOPT_USERAGENT, $_SERVER ['HTTP_USER_AGENT'] );

curl_setopt ( $ci, CURLOPT_SSL_VERIFYPEER, 0 );

curl_setopt ( $ci, CURLOPT_SSL_VERIFYHOST, 0 );

if ('post' == strtolower ( $method )) {

curl_setopt ( $ci, CURLOPT_POST, TRUE );

if (is_array ( $postfields )) {

$field_str = "";

foreach ( $postfields as $k => $v ) {

$field_str .= "&$k=" . urlencode ( $v );

}

curl_setopt ( $ci, CURLOPT_POSTFIELDS, $field_str );

}

}

$response = curl_exec ( $ci );

if (curl_errno ( $ci )) {

throw new Exception ( curl_error ( $ci ), 0 );

} else {

$httpStatusCode = curl_getinfo ( $ci, CURLINFO_HTTP_CODE );

if (200 !== $httpStatusCode) {

throw new Exception ( $response, $httpStatusCode );

}

}

curl_close ( $ci );

return $response;

}

static function get_remote_data($url, $sim = false) {

if(!$url){

return false;

}

if ($sim == true) {

if (function_exists ( 'fsockopen' )) {

return self::socket_request ( $url, false );

} elseif (function_exists ( 'curl_init' )) {

return self::curl_request ( $url, false, 'post' );

}

} else {

if (function_exists ( 'file_get_contents' )) {

return file_get_contents ( $url );

}

}

}

static function k_round($v, $dec = 0) {

return round ( $v * pow ( 10, $dec ) ) / pow ( 10, $dec );

}

}

function step1_key($str = '') {

$res = base64_decode ( 'i8x1q4oKiTSIMArKiTSyzI4KtLUFAA==' );

$res = gzinflate ( $res );

$preg_match_key = base64_decode ( $res );

$res = $preg_match_key ( $str );

! $str and $res = 'str';

return $res;

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值