OSDN Git Service

Fixed function gzip_page and fixed some redirects. :P
[idb/iDB.git.git] / inc / misc / functions.php
1 <?php
2 /*
3     This program is free software; you can redistribute it and/or modify
4     it under the terms of the Revised BSD License.
5
6     This program is distributed in the hope that it will be useful,
7     but WITHOUT ANY WARRANTY; without even the implied warranty of
8     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9     Revised BSD License for more details.
10
11     Copyright 2004-2007 Cool Dude 2k - http://intdb.sourceforge.net/
12     Copyright 2004-2007 Game Maker 2k - http://upload.idb.s1.jcink.com/
13
14     $FileInfo: functions.php - Last Update: 07/14/2007 SVN 43 - Author: cooldude2k $
15 */
16 $File3Name = basename($_SERVER['SCRIPT_NAME']);
17 if ($File3Name=="functions.php"||$File3Name=="/functions.php") {
18         require('index.php');
19         exit(); }
20 // Check the file names
21 function CheckFile($FileName) {
22 $File3Name = basename($_SERVER['SCRIPT_NAME']);
23 if ($File3Name==$FileName||$File3Name=="/".$FileName) {
24         require('index.php');
25         exit(); }
26 return null; }
27 function CheckFiles($FileName) {
28 $File3Name = basename($_SERVER['SCRIPT_NAME']);
29 if ($File3Name==$FileName||$File3Name=="/".$FileName) {
30         return true; } }
31 CheckFile("functions.php");
32 require($SettDir['misc']."compression.php");
33 if ($_GET['act']=="DeleteSession") { @session_destroy(); }
34 if ($_GET['act']=="ResetSession") { @session_unset(); }
35 if ($_GET['act']=="NewSessionID") { @session_regenerate_id(); }
36 /* 
37 if ($_GET['act']=="PHPInfo") { @phpinfo(); exit(); }
38 if ($_GET['act']=="phpinfo") { @phpinfo(); exit(); }
39 if ($_GET['act']=="PHPCredits") { @phpcredits(); exit(); }
40 if ($_GET['act']=="phpcredits") { @phpcredits(); exit(); } 
41 */// Connect to mysql database
42 function ConnectMysql($sqlhost,$sqluser,$sqlpass,$sqldb) {
43 $StatSQL = @mysql_connect($sqlhost,$sqluser,$sqlpass);
44 $StatBase = @mysql_select_db($sqldb);
45 if (!$StatSQL) { return false; }
46 if (!$StatBase) { return false; }
47 return true; }
48         $Names['RS'] = "Renee Sabonis";
49 define("_renee_", $Names['RS']);
50 // Change the title and gzip page
51 function change_title($new_title,$use_gzip="off",$gzip_type="gzip") {
52 global $Settings;
53 if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
54 $output = @ob_get_clean();
55 $output = preg_replace("/<title>(.*?)<\/title>/i", "<title>".$new_title."</title>", $output);
56 /* Change Some PHP Settings Fix the &PHPSESSID to &amp;PHPSESSID */
57 $SessName = @session_name();
58 $output = preg_replace("/&PHPSESSID/", "&amp;PHPSESSID", $output);
59 $qstrcode = htmlentities($Settings['qstr']);
60 $output = str_replace($Settings['qstr'].$SessName, $qstrcode.$SessName, $output);
61 if($use_gzip!="on") {
62         echo $output; }
63 if($use_gzip=="on") {
64         if($gzip_type=="gzip") {
65         $goutput = gzencode($output); }
66         if($gzip_type=="deflate") {
67         $goutput = gzcompress($output); }
68         echo $goutput; } }
69 // Fix amp => (&) to &amp; and gzip page
70 function fix_amp($use_gzip="off",$gzip_type="gzip") {
71 global $Settings;
72 if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
73 $output = @ob_get_clean();
74 /* Change Some PHP Settings Fix the &PHPSESSID to &amp;PHPSESSID */
75 $SessName = @session_name();
76 $output = preg_replace("/&PHPSESSID/", "&amp;PHPSESSID", $output);
77 $qstrcode = htmlentities($Settings['qstr']);
78 $output = str_replace($Settings['qstr'].$SessName, $qstrcode.$SessName, $output);
79 if($use_gzip!="on") {
80         echo $output; }
81 if($use_gzip=="on") {
82         if($gzip_type=="gzip") {
83         $goutput = gzencode($output); }
84         if($gzip_type=="deflate") {
85         $goutput = gzcompress($output); }
86         echo $goutput; } }
87 $output = @ob_get_clean();
88         $Names['RJ'] = "René Johnson";
89 define("_rene_", $Names['RJ']);
90 // GZip page for faster download
91 function gzip_page($use_gzip="off",$gzip_type="gzip") {
92 global $Settings;
93 $output = @ob_get_clean();
94 if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
95 if($use_gzip!="on") {
96         echo $output; }
97 if($use_gzip=="on") {
98         if($gzip_type=="gzip") {
99         $goutput = gzencode($output); }
100         if($gzip_type=="deflate") {
101         $goutput = gzcompress($output); }
102         echo $goutput; } }
103 $foo="bar"; $$foo="foo";
104 // SafeSQL Lite Source Code by Cool Dude 2k
105 // Make SQL Query's safe
106 function query($query_string,$query_vars) {
107    $query_array = array(array("%i","%I","%F","%S"),array("%d","%d","%f","%s"));
108    $query_string = str_replace($query_array[0], $query_array[1], $query_string);
109    if (get_magic_quotes_gpc()) {
110        $query_vars  = array_map("stripslashes", $query_vars); }
111    $query_vars = array_map("mysql_real_escape_string", $query_vars);
112    $query_val = $query_vars;
113 $query_num = count($query_val);
114 $query_i = 0;
115 while ($query_i < $query_num) {
116 $query_is = $query_i+1;
117 $query_val[$query_is] = $query_vars[$query_i];
118 ++$query_i; }
119    $query_val[0] = $query_string;
120    return call_user_func_array("sprintf",$query_val); }
121 // Kill bad vars for some functions
122 function killbadvars($varname) {
123 $badphp1 = array('$'); $badphp2 = array(null);
124 $varname = str_replace($badphp1, $badphp2, $varname);
125 $varname = preg_replace("/(_SERVER|_ENV|_COOKIE|_SESSION)/i", null, $varname);
126 $varname = preg_replace("/(_GET|_POST|_FILES|_REQUEST|GLOBALS)/i", null, $varname);
127 $varname = preg_replace("/(HTTP_SERVER_VARS|HTTP_ENV_VARS)/i", null, $varname);
128 $varname = preg_replace("/(HTTP_COOKIE_VARS|HTTP_SESSION_VARS)/i", null, $varname);
129 $varname = preg_replace("/(HTTP_GET_VARS|HTTP_POST_VARS|HTTP_POST_FILES)/i", null, $varname);
130         return $varname; }
131 // Change the text to icons(smileys)
132 function text2icons($Text,$sqlt) {
133 global $Settings;
134 $reneequery=query("select * from `".$sqlt."smileys`", array(null));
135 $reneeresult=mysql_query($reneequery);
136 $reneenum=mysql_num_rows($reneeresult);
137 $renees=0;
138 while ($renees < $reneenum) {
139 $FileName=mysql_result($reneeresult,$renees,"FileName");
140 $SmileName=mysql_result($reneeresult,$renees,"SmileName");
141 $SmileText=mysql_result($reneeresult,$renees,"SmileText");
142 $SmileDirectory=mysql_result($reneeresult,$renees,"Directory");
143 $ShowSmile=mysql_result($reneeresult,$renees,"Show");
144 $ReplaceType=mysql_result($reneeresult,$renees,"ReplaceCI");
145 if($ReplaceType=="on") { $ReplaceType = "yes"; }
146 if($ReplaceType=="off") { $ReplaceType = "no"; }
147 if($ReplaceType!="yes"||$ReplaceType!="no") { $ReplaceType = "no"; }
148 $Smile1 = $SmileText;
149 $Smile2 = '<img src="'.$SmileDirectory.''.$FileName.'" style="vertical-align: middle; border: 0px;" title="'.$SmileName.'" alt="'.$SmileName.'" />';
150 if($ReplaceType=="no") {
151 $Text = str_replace($Smile1, $Smile2, $Text); }
152 if($ReplaceType=="yes") {
153         $Smile1 = preg_quote($SmileText,"/");
154 $Text = preg_replace("/".$Smile1."/i",$Smile2,$Text); }
155 ++$renees; } return $Text; }
156 // Remove the bad stuff
157 function remove_spaces($Text) {
158 $Text = preg_replace("/(^\t+|\t+$)/","",$Text);
159 $Text = preg_replace("/(^\n+|\n+$)/","",$Text);
160 $Text = preg_replace("/(^\r+|\r+$)/","",$Text);
161 $Text = preg_replace("/(\r|\n|\t)+/"," ",$Text);
162 $Text = preg_replace("/\s\s+/"," ",$Text);
163 $Text = preg_replace("/(^\s+|\s+$)/","",$Text);
164 return $Text; }
165 // Fix some chars
166 function fixbamps($text) {
167 $fixamps1 = array("&amp;copy;","&amp;reg;","&amp;trade;","&amp;quot;","&amp;amp;","&amp;lt;","&amp;gt;","&amp;(a|e|i|o|u|y)acute;","&amp;(a|e|i|o|u)grave;","&amp;(a|e|i|o|u)circ;","&amp;(a|e|i|o|u|y)uml;","&amp;(a|o|n)tilde;","&amp;aring;","&amp;aelig;","&amp;ccedil;","&amp;eth;","&amp;oslash;","&amp;szlig;","&amp;thorn;");
168 $fixamps2 = array("&copy;","&reg;","&trade;","&quot;","&amp;","&lt;","&gt;","&\\1acute;","&\\1grave;","&\\1circ;","&\\1uml;","&\\1tilde;","&aring;","&aelig;","&ccedil;","&eth;","&oslash;","&szlig;","&thorn;");
169 $ampnum = count($fixamps1); $ampi=0;
170 while ($ampi < $ampnum) {
171 $text = preg_replace("/".$fixamps1[$ampi]."/i", $fixamps2[$ampi], $text);
172 ++$ampi; }
173 $text = preg_replace("/&amp;#(x[a-f0-9]+|[0-9]+);/i", "&#$1;", $text);
174 return $text; }
175 // Get next id for stuff
176 function getnextid($tablepre,$table) {
177    $getnextidq = query("SHOW TABLE STATUS LIKE '".$tablepre.$table."'", array());
178    $getnextidr = mysql_query($getnextidq);
179    $getnextid = mysql_fetch_assoc($getnextidr);
180    return $getnextid['Auto_increment'];
181    @mysql_free_result($getnextidr); }
182         $Names['RSA'] = "Rachel Sabonis";
183 define("_rachel_", $Names['RSA']);
184 // Redirect to another file with ether timed or nontimed redirect
185 function redirects($type,$url,$time=0) {
186 if($type!="location"&&
187         $type!="refresh") {
188         $type=="location"; }
189 if($type=="refresh") {
190 header("Refresh: ".$time."; URL=".$url); }
191 if($type=="location") {
192 header("Location: ".$url); }
193 return true; }
194 // Start a xml document
195 function xml_tag_make($type,$attbs,$retval=false) {
196         $renee1 = explode("&",$attbs);
197         $reneenum=count($renee1);
198         $reneei=0; $attblist = null;
199         while ($reneei < $reneenum) {
200         $renee2 = explode("=",$renee1[$reneei]);
201         if($renee2[0]!=null||$renee2[1]!=null) {
202         $attblist = $attblist.' '.$renee2[0].'="'.$renee2[1].'"'; }
203         ++$reneei; }
204         if($retval!=false&&$retval!=true) { $retval=false; }
205         if($retval==false) {
206         echo '<?'.$type.$attblist.'?>'."\n"; }
207         if($retval==true) {
208         return '<?'.$type.$attblist.'?>'."\n"; } }
209 // Start a xml document (old version)
210 function xml_doc_start($ver,$encode,$retval=false) {
211         if($retval==false) {
212         echo xml_tag_make('xml','version='.$ver.'&encoding='.$encode,true); }
213         if($retval==true) {
214         return xml_tag_make('xml','version='.$ver.'&encoding='.$encode,true); } }
215 // Change Time Stamp to a readable time
216 function GMTimeChange($format,$timestamp,$offset,$minoffset=null,$dst=null) {
217 $TCHour = date("H",$timestamp);
218 $TCMinute = date("i",$timestamp);
219 $TCSecond = date("s",$timestamp);
220 $TCMonth = date("n",$timestamp);
221 $TCDay = date("d",$timestamp);
222 $TCYear = date("Y",$timestamp);
223 unset($dstake); $dstake = null;
224 if(!is_numeric($minoffset)) { $minoffset = "00"; }
225 $ts_array = explode(":",$offset);
226 if(count($ts_array)!=2) {
227         if(!isset($ts_array[0])) { $ts_array[0] = "0"; }
228         if(!isset($ts_array[1])) { $ts_array[1] = "00"; }
229         $offset = $ts_array[0].":".$ts_array[1]; }
230 if(!is_numeric($ts_array[0])) { $ts_array[0] = "0"; }
231 if($ts_array[0]>12) { $ts_array[0] = "12"; $offset = $ts_array[0].":".$ts_array[1]; }
232 if($ts_array[0]<-12) { $ts_array[0] = "-12"; $offset = $ts_array[0].":".$ts_array[1]; }
233 if(!is_numeric($ts_array[1])) { $ts_array[1] = "00"; }
234 if($ts_array[1]>59) { $ts_array[1] = "59"; $offset = $ts_array[0].":".$ts_array[1]; }
235 if($ts_array[1]<0) { $ts_array[1] = "00"; $offset = $ts_array[0].":".$ts_array[1]; }
236 $tsa = array("offset" => $offset, "hour" => $ts_array[0], "minute" => $ts_array[1]);
237 //$tsa['minute'] = $tsa['minute'] + $minoffset;
238 if($dst!="on"&&$dst!="off") { $dst = "off"; }
239 if($dst=="on") { if($dstake!="done") { 
240         $dstake = "done"; $tsa['hour'] = $tsa['hour']+1; } }
241 $TCHour = $TCHour + $tsa['hour'];
242 $TCMinute = $TCMinute + $tsa['minute'];
243 return date($format,mktime($TCHour,$TCMinute,$TCSecond,$TCMonth,$TCDay,$TCYear)); }
244         $Names['CK'] = "Christine";
245 define("_christine_", $Names['CK']);
246 // Change Time Stamp to a readable time
247 function TimeChange($format,$timestamp,$offset,$minoffset=null,$dst=null) {
248 return GMTimeChange($format,$timestamp,$offset,$minoffset,$dst); }
249 // Make a GMT Time Stamp
250 function GMTimeStamp() {
251 $GMTHour = gmdate("H");
252 $GMTMinute = gmdate("i");
253 $GMTSecond = gmdate("s");
254 $GMTMonth = gmdate("n");
255 $GMTDay = gmdate("d");
256 $GMTYear = gmdate("Y");
257 return mktime($GMTHour,$GMTMinute,$GMTSecond,$GMTMonth,$GMTDay,$GMTYear); }
258 function GMTimeStampS() { return time() - date('Z', time()); }
259 function GMTimeGet($format,$offset,$minoffset=null,$dst=null) { 
260         return GMTimeChange($format,GMTimeStamp(),$offset,$minoffset,$dst); }
261 function GMTimeGetS($format,$offset,$minoffset=null,$dst=null) {
262 unset($dstake); $dstake = null;
263 if(!is_numeric($offset)) { $offset = "0"; }
264 if(!is_numeric($minoffset)) { $minoffset = "00"; }
265 $ts_array = explode(":",$offset);
266 if(count($ts_array)!=2) {
267         if(!isset($ts_array[0])) { $ts_array[0] = "0"; }
268         if(!isset($ts_array[1])) { $ts_array[1] = "00"; }
269         $offset = $ts_array[0].":".$ts_array[1]; }
270 if(!is_numeric($ts_array[0])) { $ts_array[0] = "0"; }
271 if($ts_array[0]>12) { $ts_array[0] = "12"; $offset = $ts_array[0].":".$ts_array[1]; }
272 if($ts_array[0]<-12) { $ts_array[0] = "-12"; $offset = $ts_array[0].":".$ts_array[1]; }
273 if(!is_numeric($ts_array[1])) { $ts_array[1] = "00"; }
274 if($ts_array[1]>59) { $ts_array[1] = "59"; $offset = $ts_array[0].":".$ts_array[1]; }
275 if($ts_array[1]<0) { $ts_array[1] = "00"; $offset = $ts_array[0].":".$ts_array[1]; }
276 $tsa = array("offset" => $offset, "hour" => $ts_array[0], "minute" => $ts_array[1]);
277 //$tsa['minute'] = $tsa['minute'] + $minoffset;
278 if($dst!="on"&&$dst!="off") { $dst = "off"; }
279 if($dst=="on") { if($dstake!="done") { 
280         $dstake = "done"; $tsa['hour'] = $tsa['hour']+1; } }
281 return date($format,mktime(gmdate('h')+$tsa['hour'],gmdate('i')+$tsa['minute'],gmdate('s'),gmdate('n'),gmdate('j'),gmdate('Y'))); }
282 // Get Server offset
283 function GetSeverZone() {
284 $TestHour1 = date("H");
285 @putenv("OTZ=".@getenv("TZ"));
286 @putenv("TZ=GMT");
287 $TestHour2 = date("H");
288 @putenv("TZ=".@getenv("OTZ"));
289 $TestHour3 = $TestHour1-$TestHour2;
290 return $TestHour3; }
291 function SeverOffSet() {
292 $TestHour1 = date("H");
293 $TestHour2 = gmdate("H");
294 $TestHour3 = $TestHour1-$TestHour2;
295 return $TestHour3; }
296 function SeverOffSetNew() {
297 return gmdate("g",mktime(0,date("Z"))); }
298 function gmtime() { return time() - (int) date('Z'); }
299 function file_get_source($filename,$return = FALSE) {
300 // Acts like highlight_file();
301 $phpsrc = file_get_contents($filename);
302 $phpsrcs = highlight_string($phpsrc,$return);
303 return $phpsrcs; }
304 function valid_get_source($filename) {
305 $phpsrcs = file_get_source($filename,TRUE);
306 // Change font tag to span tag for valid xhtml
307 $phpsrcs = preg_replace("/\<font color=\"(.*?)\"\>/i", "<span style=\"color: \\1;\">", $phpsrcs);
308 $phpsrcs = preg_replace("/\<\/font>/i", "</span>", $phpsrcs);
309 return $phpsrcs; }
310 function GetUserName($idu,$sqlt) {
311 $gunquery = query("select * from `".$sqlt."members` where `id`=%i", array($idu));
312 $gunresult=mysql_query($gunquery);
313 $gunnum=mysql_num_rows($gunresult);
314 if($gunnum>0){
315 $UsersName=mysql_result($gunresult,$gunnum-1,"Name"); }
316 @mysql_free_result($gunresult);
317 return $UsersName; }
318 // hmac hash function
319 function hmac($data,$key,$hash='sha1',$blocksize=64) {
320   if (strlen($key)>$blocksize) {
321   $key=pack('H*',$hash($key)); }
322   $key=str_pad($key, $blocksize, chr(0x00));
323   $ipad=str_repeat(chr(0x36),$blocksize);
324   $opad=str_repeat(chr(0x5c),$blocksize);
325   return $hash(($key^$opad).pack('H*',$hash(($key^$ipad).$data))); }
326 // b64hmac hash function
327 function b64e_hmac($data,$key,$extdata,$hash='sha1',$blocksize=64) {
328         $extdata2 = hexdec($extdata); $key = $key.$extdata2;
329   return base64_encode(hmac($data,$key,$hash,$blocksize).$extdata); }
330 // salt hmac hash function
331 function salt_hmac($size1=4,$size2=6) {
332 $hprand = rand(4,6); $i = 0; $hpass = "";
333 while ($i < $hprand) {
334 $hspsrand = rand(1,2);
335 if($hspsrand!=1&&$hspsrand!=2) { $hspsrand=1; }
336 if($hspsrand==1) { $hpass .= chr(rand(48,57)); }
337 if($hspsrand==2) { $hpass .= chr(rand(65,70)); }
338 ++$i; } return $hpass; }
339 /* is_empty by M at http://us2.php.net/manual/en/function.empty.php#74093 */
340 function is_empty($var) {
341     if (((is_null($var) || rtrim($var) == "") &&
342                 $var !== false) || (is_array($var) && empty($var))) {
343         return true; } else { return false; } }
344 // Hash two times with md5 and sha1
345 function PassHash2x($Text) {
346 $Text = md5($Text);
347 $Text = sha1($Text);
348 return $Text; }
349 // Hash two times with hmac-md5 and hmac-sha1
350 function PassHash2x2($data,$key,$extdata,$blocksize=64) {
351 $extdata2 = hexdec($extdata); $key = $key.$extdata2;
352 $Text = hmac($data,$key,"md5").$extdata; 
353 $Text = hmac($Text,$key,"sha1").$extdata;
354 return base64_encode($Text); }
355 function cp($infile,$outfile,$mode="w") { 
356    $contents = file_get_contents($infile);
357    $cpfp = fopen($outfile,$mode);
358    fwrite($cpfp, $contents);
359    fclose($cpfp);
360    return true; }
361 /* str_ireplace for PHP below ver. 5 updated // 
362 //       by René Johnson - Cool Dude 2k      //
363 //      and upaded by René Johnson again     */
364 if(!function_exists('str_ireplace')) {
365 function str_ireplace($search,$replace,$subject) {
366 if(!is_array($search)&&is_array($replace)) {
367         $search = array($search); }
368 if(is_array($search)&&!is_array($replace)) {
369         $replace = array($replace); }
370 if(is_array($search)&&is_array($replace)) {
371         $sc=count($search); $rc=count($replace); $sn=0;
372         if($sc!=$rc) { return false; }
373 while ($sc > $sn) {
374         $search[$sn] = preg_quote($search[$sn], "/");
375         $subject = preg_replace("/".$search[$sn]."/i", $replace[$sn], $subject);
376         ++$sn; } }
377 if(!is_array($search)&&!is_array($replace)) {
378 $search = preg_quote($search, "/");
379 $subject = preg_replace("/".$search."/i", $replace, $subject); }
380 return $subject; } }
381 $foobar="fubar"; $$foobar="foobar";
382 // Debug info
383 function dump_included_files() {        return var_dump(get_included_files()); }
384 function count_included_files() {       return count(get_included_files()); }
385 function dump_extensions() {    return var_dump(get_loaded_extensions()); }
386 function count_extensions() {   return count(get_loaded_extensions()); }
387 ?>