MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Revised BSD License for more details.
- Copyright 2004-2010 iDB Support - http://idb.berlios.de/
- Copyright 2004-2010 Game Maker 2k - http://gamemaker2k.org/
+ Copyright 2004-2019 iDB Support - https://idb.osdn.jp/support/category.php?act=view&id=1
+ Copyright 2004-2019 Game Maker 2k - https://idb.osdn.jp/support/category.php?act=view&id=2
- $FileInfo: functions.php - Last Update: 09/15/2010 SVN 544 - Author: cooldude2k $
+ $FileInfo: functions.php - Last Update: 08/07/2019 SVN 909 - Author: cooldude2k $
*/
$File3Name = basename($_SERVER['SCRIPT_NAME']);
if ($File3Name=="functions.php"||$File3Name=="/functions.php") {
CheckFile("functions.php");
require($SettDir['misc']."compression.php");
if($Settings['sqltype']=="mysql") {
+if(!in_array("ini_set", $disfunc)) {
+@ini_set("mysql.default_host",$Settings['sqlhost']);
+@ini_set("mysql.default_user",$Settings['sqluser']);
+@ini_set("mysql.default_password",$Settings['sqlpass']); }
require($SettDir['sql']."mysql.php"); }
if($Settings['sqltype']=="mysqli") {
+if(!in_array("ini_set", $disfunc)) {
+@ini_set("mysqli.default_host",$Settings['sqlhost']);
+@ini_set("mysqli.default_user",$Settings['sqluser']);
+@ini_set("mysqli.default_pw",$Settings['sqlpass']); }
require($SettDir['sql']."mysqli.php"); }
if($Settings['sqltype']=="pgsql") {
require($SettDir['sql']."pgsql.php"); }
if($Settings['sqltype']=="sqlite") {
require($SettDir['sql']."sqlite.php"); }
+if($Settings['sqltype']=="sqlite3") {
+require($SettDir['sql']."sqlite3.php"); }
+if($Settings['sqltype']=="cubrid") {
+require($SettDir['sql']."cubrid.php"); }
require($SettDir['misc']."useragents.php");
+require($SettDir['misc']."password.php");
/*
if ($_GET['act']=="DeleteSession") { session_destroy(); }
if ($_GET['act']=="ResetSession") { session_unset(); }
if ($_GET['act']=="PHPCredits") { phpcredits(); exit(); }
if ($_GET['act']=="phpcredits") { phpcredits(); exit(); }
*/
- $Names['RS'] = "Renee Sabonis";
-define("_renee_", $Names['RS']);
+function header_protocol($header) {
+if(isset($_SERVER['SERVER_PROTOCOL'])&&strstr($_SERVER['SERVER_PROTOCOL'],"/1.0")) {
+ return "HTTP/1.0 ".$header; }
+else {
+ return "HTTP/1.1 ".$header; } }
// Change the title and gzip page
function change_title($new_title,$use_gzip="off",$gzip_type="gzip") {
-global $Settings;
+global $Settings,$urlstatus;
+if(!isset($urlstatus)||!is_numeric($urlstatus)) { $urlstatus = 200; }
if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
-$output = ob_get_clean();
+$output = trim(ob_get_clean());
$output = preg_replace("/<title>(.*?)<\/title>/i", "<title>".$new_title."</title>", $output);
+$new_title_html = htmlentities($new_title, ENT_QUOTES, $Settings['charset']);
+$output = preg_replace("/<meta property=\"og:title\" content=\"(.*?)\" \/>/i", "<meta property=\"og:title\" content=\"".$new_title_html."\" />", $output);
+$output = preg_replace("/<meta property=\"twitter:title\" content=\"(.*?)\" \/>/i", "<meta property=\"twitter:title\" content=\"".$new_title_html."\" />", $output);
/* Change Some PHP Settings Fix the &PHPSESSID to &PHPSESSID */
$SessName = session_name();
$output = preg_replace("/&PHPSESSID/", "&PHPSESSID", $output);
$qstrcode = htmlentities($Settings['qstr'], ENT_QUOTES, $Settings['charset']);
$output = str_replace($Settings['qstr'].$SessName, $qstrcode.$SessName, $output);
if($use_gzip!="on") {
+ if($Settings['send_pagesize']=="on") {
+ @header("Content-Length: ".decoct(strlen($output)));
+ @header("Content-MD5: ".base64_encode(md5($output))); }
+ idb_log_maker($urlstatus,strlen($output));
echo $output; }
if($use_gzip=="on") {
if($gzip_type=="gzip") {
$goutput = gzencode($output); }
if($gzip_type=="deflate") {
$goutput = gzcompress($output); }
+ if($Settings['send_pagesize']=="on") {
+ @header("Content-Length: ".decoct(strlen($goutput)));
+ @header("Content-MD5: ".base64_encode(md5($goutput))); }
+ idb_log_maker($urlstatus,strlen($goutput));
echo $goutput; } }
// Fix amp => (&) to & and gzip page
function fix_amp($use_gzip="off",$gzip_type="gzip") {
-global $Settings;
+global $Settings,$urlstatus;
+if(!isset($urlstatus)||!is_numeric($urlstatus)) { $urlstatus = 200; }
if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
-$output = ob_get_clean();
+$output = trim(ob_get_clean());
/* Change Some PHP Settings Fix the &PHPSESSID to &PHPSESSID */
$SessName = session_name();
$output = preg_replace("/&PHPSESSID/", "&PHPSESSID", $output);
$qstrcode = htmlentities($Settings['qstr'], ENT_QUOTES, $Settings['charset']);
$output = str_replace($Settings['qstr'].$SessName, $qstrcode.$SessName, $output);
if($use_gzip!="on") {
+ if($Settings['send_pagesize']=="on") {
+ @header("Content-Length: ".decoct(strlen($output)));
+ @header("Content-MD5: ".base64_encode(md5($output))); }
+ idb_log_maker($urlstatus,strlen($output));
echo $output; }
if($use_gzip=="on") {
if($gzip_type=="gzip") {
$goutput = gzencode($output); }
if($gzip_type=="deflate") {
$goutput = gzcompress($output); }
+ if($Settings['send_pagesize']=="on") {
+ @header("Content-Length: ".decoct(strlen($goutput)));
+ @header("Content-MD5: ".base64_encode(md5($goutput))); }
+ idb_log_maker($urlstatus,strlen($goutput));
echo $goutput; } }
- $Names['RJ'] = "Rene Johnson";
-define("_rene_", $Names['RJ']);
// GZip page for faster download
function gzip_page($use_gzip="off",$gzip_type="gzip") {
-global $Settings;
-$output = ob_get_clean();
+global $Settings,$urlstatus;
+if(!isset($urlstatus)||!is_numeric($urlstatus)) { $urlstatus = 200; }
+$output = trim(ob_get_clean());
if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
if($use_gzip!="on") {
+ if($Settings['send_pagesize']=="on") {
+ @header("Content-Length: ".decoct(strlen($output)));
+ @header("Content-MD5: ".base64_encode(md5($output))); }
+ idb_log_maker($urlstatus,strlen($output));
echo $output; }
if($use_gzip=="on") {
if($gzip_type=="gzip") {
$goutput = gzencode($output); }
if($gzip_type=="deflate") {
$goutput = gzcompress($output); }
+ if($Settings['send_pagesize']=="on") {
+ @header("Content-Length: ".decoct(strlen($goutput)));
+ @header("Content-MD5: ".base64_encode(md5($goutput))); }
+ idb_log_maker($urlstatus,strlen($goutput));
echo $goutput; } }
$foo="bar"; $$foo="foo";
- $Names['KP'] = "Kazuki Przyborowski";
-define("_kazuki_", $Names['KP']);
// Kill bad vars for some functions
function killbadvars($varname) {
$badphp1 = array('$'); $badphp2 = array(null);
function text2icons($Text,$sqlt,$link=null) {
global $SQLStat;
if(!isset($link)) { $link = $SQLStat; }
-$reneequery=sql_pre_query("SELECT * FROM \"".$sqlt."smileys\"", array(null));
-$reneeresult=sql_query($reneequery,$link);
-$reneenum=sql_num_rows($reneeresult);
-$renees=0;
-while ($renees < $reneenum) {
-$FileName=sql_result($reneeresult,$renees,"FileName");
-$SmileName=sql_result($reneeresult,$renees,"SmileName");
-$SmileText=sql_result($reneeresult,$renees,"SmileText");
-$SmileDirectory=sql_result($reneeresult,$renees,"Directory");
-$ShowSmile=sql_result($reneeresult,$renees,"Display");
-$ReplaceType=sql_result($reneeresult,$renees,"ReplaceCI");
+$melaniequery=sql_pre_query("SELECT * FROM \"".$sqlt."smileys\"", array(null));
+$melanieresult=sql_query($melaniequery,$link);
+$melanienum=sql_num_rows($melanieresult);
+$melanies=0;
+while ($melanies < $melanienum) {
+$FileName=sql_result($melanieresult,$melanies,"FileName");
+$SmileName=sql_result($melanieresult,$melanies,"SmileName");
+$SmileText=sql_result($melanieresult,$melanies,"SmileText");
+$SmileDirectory=sql_result($melanieresult,$melanies,"Directory");
+$ShowSmile=sql_result($melanieresult,$melanies,"Display");
+$ReplaceType=sql_result($melanieresult,$melanies,"ReplaceCI");
if($ReplaceType=="on") { $ReplaceType = "yes"; }
if($ReplaceType=="off") { $ReplaceType = "no"; }
if($ReplaceType!="yes"||$ReplaceType!="no") { $ReplaceType = "no"; }
if($ReplaceType=="yes") {
$Smile1 = preg_quote($SmileText,"/");
$Text = preg_replace("/".$Smile1."/i",$Smile2,$Text); }
-++$renees; } return $Text; }
+++$melanies; } return $Text; }
// Removes the bad stuff
function remove_bad_entities($Text) {
//HTML Entities Dec Version
$Text = preg_replace("/(\r|\n|\t)+/"," ",$Text);
$Text = preg_replace("/\s\s+/"," ",$Text);
$Text = preg_replace("/(^\s+|\s+$)/","",$Text);
+$Text = trim($Text, "\x00..\x1F");
$Text = remove_bad_entities($Text);
return $Text; }
// Fix some chars
++$ampi; }
$text = preg_replace("/&#(x[a-f0-9]+|[0-9]+);/i", "&#$1;", $text);
return $text; }
- $Names['K'] = "Katarzyna";
-define("_katarzyna_", $Names['K']);
$utshour = $dayconv['hour'];
$utsminute = $dayconv['minute'];
// Change Time Stamp to a readable time
$utimestamp = $utimestamp + $minoffset * $utsminute;
$timestamp = $timestamp + $utimestamp;
return date($format,$timestamp); }
- $Names['SB'] = "Stephanie Braun";
-define("_stephanie_", $Names['SB']);
// Change Time Stamp to a readable time
function TimeChange($format,$timestamp,$offset,$minoffset=null,$dst=null) {
return GMTimeChange($format,$timestamp,$offset,$minoffset,$dst); }
// Make a GMT Time Stamp alt version
function GMTimeStampS() { return time() - date('Z', time()); }
// Get GMT Time
-function GMTimeGet($format,$offset,$minoffset=null,$dst=null) {
- return GMTimeChange($format,GMTimeStamp(),$offset,$minoffset,$dst); }
+function GMTimeGet($format,$offset,$minoffset=null,$dst=null,$taddon=null) {
+ if(!is_numeric($taddon)) { $taddon = null; }
+ if($taddon!==null) {
+ return GMTimeChange($format,GMTimeStamp()+$taddon,$offset,$minoffset,$dst); }
+ if($taddon===null) {
+ return GMTimeChange($format,GMTimeStamp(),$offset,$minoffset,$dst); } }
// Get GMT Time alt version
function GMTimeGetS($format,$offset,$minoffset=null,$dst=null) {
global $utshour,$utsminute;
$utimestamp = $utimestamp + $minoffset * $utsminute;
$timestamp = $timestamp + $utimestamp;
return date($format,mktime()+$timestamp); }
- $Names['StB'] = "Stevie Braun";
-define("_stevie_", $Names['StB']);
// Get Server offset
function GetSeverZone() {
$TestHour1 = date("H");
$phpsrcs = preg_replace("/\<font color=\"(.*?)\"\>/i", "<span style=\"color: \\1;\">", $phpsrcs);
$phpsrcs = preg_replace("/\<\/font>/i", "</span>", $phpsrcs);
return $phpsrcs; }
-// Check to see if the user is hidden/shy. >_> | ^_^ | <_<
+// Check to see if the user is hidden/shy/timid. >_> | ^_^ | <_<
function GetUserName($idu,$sqlt,$link=null) { $UsersName = null;
global $SQLStat;
if(!isset($link)) { $link = $SQLStat; }
$UsersHidden = "yes";
if($gunnum>0){
$UsersName=sql_result($gunresult,0,"Name");
-// Am i still hidden. o_O <_< I see you.
+// Am i still hidden. o_O <_< I can see you.
$UsersHidden=sql_result($gunresult,0,"HiddenMember"); }
sql_free_result($gunresult);
$UsersInfo['Name'] = $UsersName;
$UsersInfo['Hidden'] = $UsersHidden;
return $UsersInfo; }
+if(!function_exists('hash')) {
+function hash($algo, $data, $raw_output = false) {
+if($algo!="md5"&&$algo!="sha1") { $algo = "md5"; }
+return $algo($data); } }
+if(!function_exists('hash_algos')) {
+function hash_algos() {
+return array(0 => "md5", 1 => "sha1"); } }
if(!function_exists('hash_hmac')) {
-function hash_hmac($algo, $data, $key, $raw_output = false) {
+function hash_hmac($hash, $data, $key, $raw_output = false) {
+ if($hash=="sha3-224") { $hash = "sha3224"; }
+ if($hash=="sha3-256") { $hash = "sha3256"; }
+ if($hash=="sha3-384") { $hash = "sha3384"; }
+ if($hash=="sha3-512") { $hash = "sha3512"; }
$blocksize = 64;
if (strlen($key)>$blocksize) {
if (function_exists('hash')) {
+ if($hash=="sha3224") { $hash = "sha3-224"; }
+ if($hash=="sha3256") { $hash = "sha3-256"; }
+ if($hash=="sha3384") { $hash = "sha3-384"; }
+ if($hash=="sha3512") { $hash = "sha3-512"; }
$key=pack('H*',hash($hash, $key)); }
if (!function_exists('hash')) {
$key=pack('H*',$hash($key)); } }
$key=str_pad($key, $blocksize, chr(0x00));
$ipad=str_repeat(chr(0x36),$blocksize);
$opad=str_repeat(chr(0x5c),$blocksize);
- return hash($algo, ($key^$opad).pack('H*',hash($algo, ($key^$ipad).$data))); } }
-if(!function_exists('hash')) {
-function hash($algo, $data, $raw_output = false) {
-if($algo!="md5"&&$algo!="sha1") { $algo = "md5"; }
-return $algo($data); } }
-if(!function_exists('hash_algos')) {
-function hash_algos() {
-return array(0 => "md5", 1 => "sha1"); } }
+ if($hash=="sha3224") { $hash = "sha3-224"; }
+ if($hash=="sha3256") { $hash = "sha3-256"; }
+ if($hash=="sha3384") { $hash = "sha3-384"; }
+ if($hash=="sha3512") { $hash = "sha3-512"; }
+ return hash($hash, ($key^$opad).pack('H*',hash($hash, ($key^$ipad).$data))); } }
// hmac hash function
function hmac($data,$key,$hash='sha1',$blocksize=64) {
+ if($hash=="sha3-224") { $hash = "sha3224"; }
+ if($hash=="sha3-256") { $hash = "sha3256"; }
+ if($hash=="sha3-384") { $hash = "sha3384"; }
+ if($hash=="sha3-512") { $hash = "sha3512"; }
if (!function_exists('hash_hmac')) {
if (strlen($key)>$blocksize) {
if (function_exists('hash')) {
$ipad=str_repeat(chr(0x36),$blocksize);
$opad=str_repeat(chr(0x5c),$blocksize);
if (function_exists('hash')) {
+ if($hash=="sha3224") { $hash = "sha3-224"; }
+ if($hash=="sha3256") { $hash = "sha3-256"; }
+ if($hash=="sha3384") { $hash = "sha3-384"; }
+ if($hash=="sha3512") { $hash = "sha3-512"; }
return hash($hash, ($key^$opad).pack('H*',hash($hash, ($key^$ipad).$data))); }
if (!function_exists('hash')) {
return $hash(($key^$opad).pack('H*',$hash(($key^$ipad).$data))); } }
if (function_exists('hash_hmac')) {
+ if($hash=="sha3224") { $hash = "sha3-224"; }
+ if($hash=="sha3256") { $hash = "sha3-256"; }
+ if($hash=="sha3384") { $hash = "sha3-384"; }
+ if($hash=="sha3512") { $hash = "sha3-512"; }
return hash_hmac($hash,$data,$key); } }
// b64hmac hash function
function b64e_hmac($data,$key,$extdata,$hash='sha1',$blocksize=64) {
$hspsrand = rand(1,2);
if($hspsrand!=1&&$hspsrand!=2) { $hspsrand=1; }
if($hspsrand==1) { $hpass .= chr(rand(48,57)); }
-if($hspsrand==2) { $hpass .= chr(rand(65,70)); }
+/* if($hspsrand==2) { $hpass .= chr(rand(65,70)); } */
+if($hspsrand==2) { $hpass .= chr(rand(97,102)); }
++$i; } return $hpass; }
/* is_empty by M at http://us2.php.net/manual/en/function.empty.php#74093 */
function is_empty($var) {
return true; } else { return false; } }
// PHP 5 hash algorithms to functions :o
if(function_exists('hash')&&function_exists('hash_algos')) {
-if(in_array("md2",hash_algos())) {
+if(in_array("md2",hash_algos())&&!function_exists("md2")) {
function md2($data) { return hash("md2",$data); } }
-if(in_array("md4",hash_algos())) {
+if(in_array("md4",hash_algos())&&!function_exists("md4")) {
function md4($data) { return hash("md4",$data); } }
-if(in_array("sha224",hash_algos())) {
+if(in_array("md5",hash_algos())&&!function_exists("md5")) {
+function md5($data) { return hash("md5",$data); } }
+if(in_array("sha1",hash_algos())&&!function_exists("sha1")) {
+function sha1($data) { return hash("sha1",$data); } }
+if(in_array("sha224",hash_algos())&&!function_exists("sha224")) {
function sha224($data) { return hash("sha224",$data); } }
-if(in_array("sha256",hash_algos())) {
+if(in_array("sha256",hash_algos())&&!function_exists("sha256")) {
function sha256($data) { return hash("sha256",$data); } }
-if(in_array("sha384",hash_algos())) {
+if(in_array("sha384",hash_algos())&&!function_exists("sha384")) {
function sha384($data) { return hash("sha384",$data); } }
-if(in_array("sha512",hash_algos())) {
+if(in_array("sha512",hash_algos())&&!function_exists("sha512")) {
function sha512($data) { return hash("sha512",$data); } }
-if(in_array("ripemd128",hash_algos())) {
+if(in_array("sha3-224",hash_algos())&&!function_exists("sha3224")) {
+function sha3224($data) { return hash("sha3-224",$data); } }
+if(in_array("sha3-256",hash_algos())&&!function_exists("sha3256")) {
+function sha3256($data) { return hash("sha3-256",$data); } }
+if(in_array("sha3-384",hash_algos())&&!function_exists("sha3384")) {
+function sha3384($data) { return hash("sha3-384",$data); } }
+if(in_array("sha3-512",hash_algos())&&!function_exists("sha3512")) {
+function sha3512($data) { return hash("sha3-512",$data); } }
+if(in_array("ripemd128",hash_algos())&&!function_exists("ripemd128")) {
function ripemd128($data) { return hash("ripemd128",$data); } }
-if(in_array("ripemd160",hash_algos())) {
+if(in_array("ripemd160",hash_algos())&&!function_exists("ripemd160")) {
function ripemd160($data) { return hash("ripemd160",$data); } }
-if(in_array("ripemd256",hash_algos())) {
+if(in_array("ripemd256",hash_algos())&&!function_exists("ripemd256")) {
function ripemd256($data) { return hash("ripemd256",$data); } }
-if(in_array("ripemd512",hash_algos())) {
+if(in_array("ripemd512",hash_algos())&&!function_exists("ripemd512")) {
function ripemd320($data) { return hash("ripemd320",$data); } } }
// Try and convert IPB 2.0.0 style passwords to iDB style passwords
function hash2xkey($data,$key,$hash1='md5',$hash2='md5') {
fwrite($cpfp, $contents);
fclose($cpfp);
return true; }
+
+// b64hmac hash function
+function neo_b64e_hmac($data,$key,$extdata,$hash='sha1',$blocksize=64) {
+ $extdata2 = hexdec($extdata); $key = $key.$extdata2;
+ return base64_encode(password_hash($data.$extdata, PASSWORD_BCRYPT)); }
+// b64hmac rot13 hash function
+function neo_b64e_rot13_hmac($data,$key,$extdata,$hash='sha1',$blocksize=64) {
+ $data = str_rot13($data);
+ $extdata2 = hexdec($extdata); $key = $key.$extdata2;
+ return base64_encode(password_hash($data.$extdata, PASSWORD_BCRYPT)); }
+
+if(!function_exists('password_hash')) {
+function bcrypt($data) { return password_hash($data,PASSWORD_BCRYPT); } }
+
+/* is_empty by s rotondo90 at gmail com at https://www.php.net/manual/en/function.hash-equals.php#119576*/
+if(!function_exists('hash_equals')) {
+ function hash_equals($known_string, $user_string) {
+ $ret = 0;
+
+ if (strlen($known_string) !== strlen($user_string)) {
+ $user_string = $known_string;
+ $ret = 1;
+ }
+
+ $res = $known_string ^ $user_string;
+
+ for ($i = strlen($res) - 1; $i >= 0; --$i) {
+ $ret |= ord($res[$i]);
+ }
+
+ return !$ret;
+ }
+}
+
/* str_ireplace for PHP below ver. 5 updated //
// by Kazuki Przyborowski - Cool Dude 2k //
// and upaded by Kazuki Przyborowski again */
if($type=="var_dump") { return var_dump(get_loaded_extensions()); }
if($type=="var_export") { return var_export(get_loaded_extensions()); } }
function count_extensions() { return count(get_loaded_extensions()); }
-?>
\ No newline at end of file
+// human_filesize by evgenij at kostanay dot kz
+// URL: https://www.php.net/manual/en/function.filesize.php#120250
+function human_filesize($bytes, $decimals = 2) {
+ $factor = floor((strlen($bytes) - 1) / 3);
+ if ($factor > 0) $sz = 'KMGT';
+ return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . ' ' . @$sz[$factor - 1] . 'B';
+}
+?>