3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the Revised BSD License.
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.
11 Copyright 2004-2008 Cool Dude 2k - http://idb.berlios.de/
12 Copyright 2004-2008 Game Maker 2k - http://intdb.sourceforge.net/
14 $FileInfo: functions.php - Last Update: 5/08/2009 SVN 251 - Author: cooldude2k $
16 $File3Name = basename($_SERVER['SCRIPT_NAME']);
17 if ($File3Name=="functions.php"||$File3Name=="/functions.php") {
20 // Check the file names
21 function CheckFile($FileName) {
22 $File3Name = basename($_SERVER['SCRIPT_NAME']);
23 if ($File3Name==$FileName||$File3Name=="/".$FileName) {
27 function CheckFiles($FileName) {
28 $File3Name = basename($_SERVER['SCRIPT_NAME']);
29 if ($File3Name==$FileName||$File3Name=="/".$FileName) {
31 CheckFile("functions.php");
32 require($SettDir['misc']."compression.php");
34 if ($_GET['act']=="DeleteSession") { @session_destroy(); }
35 if ($_GET['act']=="ResetSession") { @session_unset(); }
36 if ($_GET['act']=="NewSessionID") { @session_regenerate_id(); }
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,$retlink=false) {
43 if($retlink!==true) { $retlink = false; }
44 $StatSQL = @mysql_connect($sqlhost,$sqluser,$sqlpass);
45 $StatBase = @mysql_select_db($sqldb);
46 if (!$StatSQL) { return false; }
47 if (!$StatBase) { return false; }
48 if($retlink===true) { return $StatSQL; }
49 if($retlink===false) { return true; } }
50 $Names['RS'] = "Renee Sabonis";
51 define("_renee_", $Names['RS']);
52 // Change the title and gzip page
53 function change_title($new_title,$use_gzip="off",$gzip_type="gzip") {
55 if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
56 $output = @ob_get_clean();
57 $output = preg_replace("/<title>(.*?)<\/title>/i", "<title>".$new_title."</title>", $output);
58 /* Change Some PHP Settings Fix the &PHPSESSID to &PHPSESSID */
59 $SessName = @session_name();
60 $output = preg_replace("/&PHPSESSID/", "&PHPSESSID", $output);
61 $qstrcode = htmlentities($Settings['qstr'], ENT_QUOTES, $Settings['charset']);
62 $output = str_replace($Settings['qstr'].$SessName, $qstrcode.$SessName, $output);
66 if($gzip_type=="gzip") {
67 $goutput = gzencode($output); }
68 if($gzip_type=="deflate") {
69 $goutput = gzcompress($output); }
71 // Fix amp => (&) to & and gzip page
72 function fix_amp($use_gzip="off",$gzip_type="gzip") {
74 if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
75 $output = @ob_get_clean();
76 /* Change Some PHP Settings Fix the &PHPSESSID to &PHPSESSID */
77 $SessName = @session_name();
78 $output = preg_replace("/&PHPSESSID/", "&PHPSESSID", $output);
79 $qstrcode = htmlentities($Settings['qstr'], ENT_QUOTES, $Settings['charset']);
80 $output = str_replace($Settings['qstr'].$SessName, $qstrcode.$SessName, $output);
84 if($gzip_type=="gzip") {
85 $goutput = gzencode($output); }
86 if($gzip_type=="deflate") {
87 $goutput = gzcompress($output); }
89 $Names['RJ'] = "Kazuki Przyborowski";
90 define("_rene_", $Names['RJ']);
91 // GZip page for faster download
92 function gzip_page($use_gzip="off",$gzip_type="gzip") {
94 $output = @ob_get_clean();
95 if($gzip_type!="gzip") { if($gzip_type!="deflate") { $gzip_type = "gzip"; } }
99 if($gzip_type=="gzip") {
100 $goutput = gzencode($output); }
101 if($gzip_type=="deflate") {
102 $goutput = gzcompress($output); }
104 $foo="bar"; $$foo="foo";
105 // SafeSQL Lite Source Code by Cool Dude 2k
106 // Make SQL Query's safe
107 function query($query_string,$query_vars) {
108 $query_array = array(array("%i","%I","%F","%S"),array("%d","%d","%f","%s"));
109 $query_string = str_replace($query_array[0], $query_array[1], $query_string);
110 if (get_magic_quotes_gpc()) {
111 $query_vars = array_map("stripslashes", $query_vars); }
112 $query_vars = array_map("mysql_real_escape_string", $query_vars);
113 $query_val = $query_vars;
114 $query_num = count($query_val);
116 while ($query_i < $query_num) {
117 $query_is = $query_i+1;
118 $query_val[$query_is] = $query_vars[$query_i];
120 $query_val[0] = $query_string;
121 return call_user_func_array("sprintf",$query_val); }
122 $Names['KP'] = "Kazuki Przyborowski";
123 define("_kazuki_", $Names['KP']);
124 // Kill bad vars for some functions
125 function killbadvars($varname) {
126 $badphp1 = array('$'); $badphp2 = array(null);
127 $varname = str_replace($badphp1, $badphp2, $varname);
128 $varname = preg_replace("/(_SERVER|_ENV|_COOKIE|_SESSION)/i", null, $varname);
129 $varname = preg_replace("/(_GET|_POST|_FILES|_REQUEST|GLOBALS)/i", null, $varname);
130 $varname = preg_replace("/(HTTP_SERVER_VARS|HTTP_ENV_VARS)/i", null, $varname);
131 $varname = preg_replace("/(HTTP_COOKIE_VARS|HTTP_SESSION_VARS)/i", null, $varname);
132 $varname = preg_replace("/(HTTP_GET_VARS|HTTP_POST_VARS|HTTP_POST_FILES)/i", null, $varname);
134 // Trying to fix this bug. ^_^
135 // http://xforce.iss.net/xforce/xfdb/49697
136 if(!isset($Settings['DefaultTheme'])) {
137 $Settings['DefaultTheme'] = "iDB"; }
138 $BoardTheme = $Settings['DefaultTheme'];
139 function chack_themes($theme) {
141 if(!isset($theme)) { $theme = null; }
142 require('settings.php');
143 $ckskindir = dirname(realpath("settings.php"))."/".$SettDir['themes'];
144 if ($handle = opendir($ckskindir)) { $dirnum = null;
145 while (false !== ($ckfile = readdir($handle))) {
146 if ($dirnum==null) { $dirnum = 0; }
147 if (file_exists($ckskindir.$ckfile."/info.php")) {
148 if ($ckfile != "." && $ckfile != "..") {
149 include($ckskindir.$ckfile."/info.php");
150 $cktheme[$dirnum] = $ckfile;
152 closedir($handle); asort($cktheme); }
153 $theme=preg_replace("/(.*?)\.\/(.*?)/", $BoardTheme, $theme);
154 if(!in_array($theme,$cktheme)||strlen($theme)>26) {
155 $theme = $BoardTheme; } return $theme; }
156 // Change the text to icons(smileys)
157 function text2icons($Text,$sqlt) {
159 $reneequery=query("SELECT * FROM `".$sqlt."smileys`", array(null));
160 $reneeresult=mysql_query($reneequery);
161 $reneenum=mysql_num_rows($reneeresult);
163 while ($renees < $reneenum) {
164 $FileName=mysql_result($reneeresult,$renees,"FileName");
165 $SmileName=mysql_result($reneeresult,$renees,"SmileName");
166 $SmileText=mysql_result($reneeresult,$renees,"SmileText");
167 $SmileDirectory=mysql_result($reneeresult,$renees,"Directory");
168 $ShowSmile=mysql_result($reneeresult,$renees,"Show");
169 $ReplaceType=mysql_result($reneeresult,$renees,"ReplaceCI");
170 if($ReplaceType=="on") { $ReplaceType = "yes"; }
171 if($ReplaceType=="off") { $ReplaceType = "no"; }
172 if($ReplaceType!="yes"||$ReplaceType!="no") { $ReplaceType = "no"; }
173 $Smile1 = $SmileText;
174 $Smile2 = '<img src="'.$SmileDirectory.''.$FileName.'" style="vertical-align: middle; border: 0px;" title="'.$SmileName.'" alt="'.$SmileName.'" />';
175 if($ReplaceType=="no") {
176 $Text = str_replace($Smile1, $Smile2, $Text); }
177 if($ReplaceType=="yes") {
178 $Smile1 = preg_quote($SmileText,"/");
179 $Text = preg_replace("/".$Smile1."/i",$Smile2,$Text); }
180 ++$renees; } return $Text; }
181 // Removes the bad stuff
182 function remove_bad_entities($Text) {
183 //HTML Entities Dec Version
184 $Text = preg_replace("/‮/isU","",$Text);
185 $Text = preg_replace("/ /isU","",$Text);
186 $Text = preg_replace("/ /isU","",$Text);
187 $Text = preg_replace("/ /isU","",$Text);
188 $Text = preg_replace("/‌/isU","",$Text);
189 $Text = preg_replace("/‍/isU","",$Text);
190 $Text = preg_replace("/‎/isU","",$Text);
191 $Text = preg_replace("/‏/isU","",$Text);
192 //HTML Entities Hex Version
193 $Text = preg_replace("/‮/isU","",$Text);
194 $Text = preg_replace("/ /isU","",$Text);
195 $Text = preg_replace("/ /isU","",$Text);
196 $Text = preg_replace("/ /isU","",$Text);
197 $Text = preg_replace("/‌/isU","",$Text);
198 $Text = preg_replace("/‍/isU","",$Text);
199 $Text = preg_replace("/‎/isU","",$Text);
200 $Text = preg_replace("/‏/isU","",$Text);
201 //HTML Entities Name Version
202 $Text = preg_replace("/ /isU","",$Text);
203 $Text = preg_replace("/ /isU","",$Text);
204 $Text = preg_replace("/ /isU","",$Text);
205 $Text = preg_replace("/‌/isU","",$Text);
206 $Text = preg_replace("/‍/isU","",$Text);
207 $Text = preg_replace("/‎/isU","",$Text);
208 $Text = preg_replace("/‏/isU","",$Text);
210 // Remove the bad stuff
211 function remove_spaces($Text) {
212 $Text = preg_replace("/(^\t+|\t+$)/","",$Text);
213 $Text = preg_replace("/(^\n+|\n+$)/","",$Text);
214 $Text = preg_replace("/(^\r+|\r+$)/","",$Text);
215 $Text = preg_replace("/(\r|\n|\t)+/"," ",$Text);
216 $Text = preg_replace("/\s\s+/"," ",$Text);
217 $Text = preg_replace("/(^\s+|\s+$)/","",$Text);
218 $Text = @remove_bad_entities($Text);
221 function fixbamps($text) {
222 $fixamps1 = array("&copy;","&reg;","&trade;","&quot;","&amp;","&lt;","&gt;","&(a|e|i|o|u|y)acute;","&(a|e|i|o|u)grave;","&(a|e|i|o|u)circ;","&(a|e|i|o|u|y)uml;","&(a|o|n)tilde;","&aring;","&aelig;","&ccedil;","&eth;","&oslash;","&szlig;","&thorn;");
223 $fixamps2 = array("©","®","™",""","&","<",">","&\\1acute;","&\\1grave;","&\\1circ;","&\\1uml;","&\\1tilde;","å","æ","ç","ð","ø","ß","þ");
224 $ampnum = count($fixamps1); $ampi=0;
225 while ($ampi < $ampnum) {
226 $text = preg_replace("/".$fixamps1[$ampi]."/i", $fixamps2[$ampi], $text);
228 $text = preg_replace("/&#(x[a-f0-9]+|[0-9]+);/i", "&#$1;", $text);
230 // Get next id for stuff
231 function getnextid($tablepre,$table) {
232 $getnextidq = query("SHOW TABLE STATUS LIKE '".$tablepre.$table."'", array());
233 $getnextidr = mysql_query($getnextidq);
234 $getnextid = mysql_fetch_assoc($getnextidr);
235 return $getnextid['Auto_increment'];
236 @mysql_free_result($getnextidr); }
237 function getnumrows($tablepre,$table) {
238 $getnextidq = query("SHOW TABLE STATUS LIKE '".$tablepre.$table."'", array());
239 $getnextidr = mysql_query($getnextidq);
240 $getnextid = mysql_fetch_assoc($getnextidr);
241 return $getnextid['Rows'];
242 @mysql_free_result($getnextidr); }
243 $Names['K'] = "Katarzyna";
244 define("_katarzyna_", $Names['K']);
245 // Change Time Stamp to a readable time
246 function GMTimeChange($format,$timestamp,$offset,$minoffset=null,$dst=null) {
247 $TCHour = date("H",$timestamp);
248 $TCMinute = date("i",$timestamp);
249 $TCSecond = date("s",$timestamp);
250 $TCMonth = date("n",$timestamp);
251 $TCDay = date("d",$timestamp);
252 $TCYear = date("Y",$timestamp);
254 if(!is_numeric($minoffset)) { $minoffset = "00"; }
255 $ts_array = explode(":",$offset);
256 if(count($ts_array)!=2) {
257 if(!isset($ts_array[0])) { $ts_array[0] = "0"; }
258 if(!isset($ts_array[1])) { $ts_array[1] = "00"; }
259 $offset = $ts_array[0].":".$ts_array[1]; }
260 if(!is_numeric($ts_array[0])) { $ts_array[0] = "0"; }
261 if($ts_array[0]>12) { $ts_array[0] = "12"; $offset = $ts_array[0].":".$ts_array[1]; }
262 if($ts_array[0]<-12) { $ts_array[0] = "-12"; $offset = $ts_array[0].":".$ts_array[1]; }
263 if(!is_numeric($ts_array[1])) { $ts_array[1] = "00"; }
264 if($ts_array[1]>59) { $ts_array[1] = "59"; $offset = $ts_array[0].":".$ts_array[1]; }
265 if($ts_array[1]<0) { $ts_array[1] = "00"; $offset = $ts_array[0].":".$ts_array[1]; }
266 $tsa = array("offset" => $offset, "hour" => $ts_array[0], "minute" => $ts_array[1]);
267 //$tsa['minute'] = $tsa['minute'] + $minoffset;
268 if($dst!="on"&&$dst!="off") { $dst = "off"; }
269 if($dst=="on") { if($dstake!="done") {
270 $dstake = "done"; $tsa['hour'] = $tsa['hour']+1; } }
271 $TCHour = $TCHour + $tsa['hour'];
272 $TCMinute = $TCMinute + $tsa['minute'];
273 return date($format,mktime($TCHour,$TCMinute,$TCSecond,$TCMonth,$TCDay,$TCYear)); }
274 $Names['CK'] = "Christine";
275 define("_christine_", $Names['CK']);
276 // Change Time Stamp to a readable time
277 function TimeChange($format,$timestamp,$offset,$minoffset=null,$dst=null) {
278 return GMTimeChange($format,$timestamp,$offset,$minoffset,$dst); }
279 // Make a GMT Time Stamp
280 function GMTimeStamp() {
281 $GMTHour = gmdate("H");
282 $GMTMinute = gmdate("i");
283 $GMTSecond = gmdate("s");
284 $GMTMonth = gmdate("n");
285 $GMTDay = gmdate("d");
286 $GMTYear = gmdate("Y");
287 return mktime($GMTHour,$GMTMinute,$GMTSecond,$GMTMonth,$GMTDay,$GMTYear); }
288 function GMTimeStampS() { return time() - date('Z', time()); }
289 function GMTimeGet($format,$offset,$minoffset=null,$dst=null) {
290 return GMTimeChange($format,GMTimeStamp(),$offset,$minoffset,$dst); }
291 function GMTimeGetS($format,$offset,$minoffset=null,$dst=null) {
293 if(!is_numeric($offset)) { $offset = "0"; }
294 if(!is_numeric($minoffset)) { $minoffset = "00"; }
295 $ts_array = explode(":",$offset);
296 if(count($ts_array)!=2) {
297 if(!isset($ts_array[0])) { $ts_array[0] = "0"; }
298 if(!isset($ts_array[1])) { $ts_array[1] = "00"; }
299 $offset = $ts_array[0].":".$ts_array[1]; }
300 if(!is_numeric($ts_array[0])) { $ts_array[0] = "0"; }
301 if($ts_array[0]>12) { $ts_array[0] = "12"; $offset = $ts_array[0].":".$ts_array[1]; }
302 if($ts_array[0]<-12) { $ts_array[0] = "-12"; $offset = $ts_array[0].":".$ts_array[1]; }
303 if(!is_numeric($ts_array[1])) { $ts_array[1] = "00"; }
304 if($ts_array[1]>59) { $ts_array[1] = "59"; $offset = $ts_array[0].":".$ts_array[1]; }
305 if($ts_array[1]<0) { $ts_array[1] = "00"; $offset = $ts_array[0].":".$ts_array[1]; }
306 $tsa = array("offset" => $offset, "hour" => $ts_array[0], "minute" => $ts_array[1]);
307 //$tsa['minute'] = $tsa['minute'] + $minoffset;
308 if($dst!="on"&&$dst!="off") { $dst = "off"; }
309 if($dst=="on") { if($dstake!="done") {
310 $dstake = "done"; $tsa['hour'] = $tsa['hour']+1; } }
311 return date($format,mktime(gmdate('h')+$tsa['hour'],gmdate('i')+$tsa['minute'],gmdate('s'),gmdate('n'),gmdate('j'),gmdate('Y'))); }
313 function GetSeverZone() {
314 $TestHour1 = date("H");
315 @putenv("OTZ=".@getenv("TZ"));
317 $TestHour2 = date("H");
318 @putenv("TZ=".@getenv("OTZ"));
319 $TestHour3 = $TestHour1-$TestHour2;
321 function SeverOffSet() {
322 $TestHour1 = date("H");
323 $TestHour2 = gmdate("H");
324 $TestHour3 = $TestHour1-$TestHour2;
326 function SeverOffSetNew() {
327 return gmdate("g",mktime(0,date("Z"))); }
328 function gmtime() { return time() - (int) date('Z'); }
329 function file_get_source($filename,$return = FALSE) {
330 // Acts like highlight_file();
331 $phpsrc = file_get_contents($filename);
332 $phpsrcs = highlight_string($phpsrc,$return);
334 function valid_get_source($filename) {
335 $phpsrcs = file_get_source($filename,TRUE);
336 // Change font tag to span tag for valid xhtml
337 $phpsrcs = preg_replace("/\<font color=\"(.*?)\"\>/i", "<span style=\"color: \\1;\">", $phpsrcs);
338 $phpsrcs = preg_replace("/\<\/font>/i", "</span>", $phpsrcs);
340 function GetUserName($idu,$sqlt) {
341 $gunquery = query("SELECT * FROM `".$sqlt."members` WHERE `id`=%i", array($idu));
342 $gunresult=mysql_query($gunquery);
343 $gunnum=mysql_num_rows($gunresult);
345 $UsersName=mysql_result($gunresult,0,"Name"); }
346 @mysql_free_result($gunresult);
348 // hmac hash function
349 function hmac($data,$key,$hash='sha1',$blocksize=64) {
350 if (strlen($key)>$blocksize) {
351 $key=pack('H*',$hash($key)); }
352 $key=str_pad($key, $blocksize, chr(0x00));
353 $ipad=str_repeat(chr(0x36),$blocksize);
354 $opad=str_repeat(chr(0x5c),$blocksize);
355 return $hash(($key^$opad).pack('H*',$hash(($key^$ipad).$data))); }
356 // b64hmac hash function
357 function b64e_hmac($data,$key,$extdata,$hash='sha1',$blocksize=64) {
358 $extdata2 = hexdec($extdata); $key = $key.$extdata2;
359 return base64_encode(hmac($data,$key,$hash,$blocksize).$extdata); }
360 // salt hmac hash function
361 function salt_hmac($size1=4,$size2=6) {
362 $hprand = rand(4,6); $i = 0; $hpass = "";
363 while ($i < $hprand) {
364 $hspsrand = rand(1,2);
365 if($hspsrand!=1&&$hspsrand!=2) { $hspsrand=1; }
366 if($hspsrand==1) { $hpass .= chr(rand(48,57)); }
367 if($hspsrand==2) { $hpass .= chr(rand(65,70)); }
368 ++$i; } return $hpass; }
369 /* is_empty by M at http://us2.php.net/manual/en/function.empty.php#74093 */
370 function is_empty($var) {
371 if (((is_null($var) || rtrim($var) == "") &&
372 $var !== false) || (is_array($var) && empty($var))) {
373 return true; } else { return false; } }
374 // Hash two times with md5 and sha1
375 function PassHash2x($Text) {
379 // Hash two times with hmac-md5 and hmac-sha1
380 function PassHash2x2($data,$key,$extdata,$blocksize=64) {
381 $extdata2 = hexdec($extdata); $key = $key.$extdata2;
382 $Text = hmac($data,$key,"md5").$extdata;
383 $Text = hmac($Text,$key,"sha1").$extdata;
384 return base64_encode($Text); }
385 function cp($infile,$outfile,$mode="w") {
386 $contents = file_get_contents($infile);
387 $cpfp = fopen($outfile,$mode);
388 fwrite($cpfp, $contents);
391 /* str_ireplace for PHP below ver. 5 updated //
392 // by Kazuki Przyborowski - Cool Dude 2k //
393 // and upaded by Kazuki Przyborowski again */
394 if(!function_exists('str_ireplace')) {
395 function str_ireplace($search,$replace,$subject) {
396 if(!is_array($search)&&is_array($replace)) {
397 $search = array($search); }
398 if(is_array($search)&&!is_array($replace)) {
399 $replace = array($replace); }
400 if(is_array($search)&&is_array($replace)) {
401 $sc=count($search); $rc=count($replace); $sn=0;
402 if($sc!=$rc) { return false; }
404 $search[$sn] = preg_quote($search[$sn], "/");
405 $subject = preg_replace("/".$search[$sn]."/i", $replace[$sn], $subject);
407 if(!is_array($search)&&!is_array($replace)) {
408 $search = preg_quote($search, "/");
409 $subject = preg_replace("/".$search."/i", $replace, $subject); }
411 /* Adds mysql_set_charset to PHP below Ver. 5.2.3 - by: Janez R. //
412 // http://us.php.net/manual/en/function.mysql-set-charset.php#77565 */
413 if (!function_exists('mysql_set_charset')) {
414 function mysql_set_charset($charset) {
415 return mysql_query("set names $charset"); } }
416 /* Adds httponly to PHP below Ver. 5.2.0 //
417 // by Kazuki Przyborowski - Cool Dude 2k */
418 function http_set_cookie($name,$value=null,$expire=null,$path=null,$domain=null,$secure=false,$httponly=false) {
419 $mkcookie = null; $expireGMT = null;
420 if(!isset($name)) { echo "Error: You need to enter a name for cookie."; return false; }
421 if(!isset($expire)) { echo "Error: You need to enter a time for cookie to expire."; return false; }
422 $expireGMT = gmdate("D, d-M-Y H:i:s \G\M\T", $expire);
423 if(!isset($value)) { $value = null; }
424 if(!isset($httponly)||$httponly==false) {
425 setcookie($name, $value, $expire, $path, $domain, $secure); return true; }
426 if(version_compare(PHP_VERSION,"5.2.0",">=")&&$httponly==true) {
427 setcookie($name, $value, $expire, $path, $domain, $secure, $httponly); return true; }
428 if(version_compare(PHP_VERSION,"5.2.0","<")&&$httponly==true) {
429 $mkcookie = "Set-Cookie: ".rawurlencode($name)."=".rawurlencode($value);
430 $mkcookie = $mkcookie."; expires=".$expireGMT;
431 if(isset($path)&&$path!=null) { $mkcookie = $mkcookie."; path=".$path; }
432 if(isset($domain)&&$domain!=null) { $mkcookie = $mkcookie."; domain=".$domain; }
433 if(isset($secure)&&$secure===true) { $mkcookie = $mkcookie."; secure"; }
434 if(isset($httponly)&&$httponly===true) { $mkcookie = $mkcookie."; HttpOnly"; }
435 header($mkcookie, false); return true; } }
436 $foobar="fubar"; $$foobar="foobar";
438 function dump_included_files() { return var_dump(get_included_files()); }
439 function count_included_files() { return count(get_included_files()); }
440 function dump_extensions() { return var_dump(get_loaded_extensions()); }
441 function count_extensions() { return count(get_loaded_extensions()); }