Thread: php question
View Single Post
Old 05-08-2008, 12:16 PM  
GrouchyAdmin
Now choke yourself!
 
GrouchyAdmin's Avatar
 
Industry Role:
Join Date: Apr 2006
Posts: 12,085
Quote:
Originally Posted by mrkris View Post
While using this in my own code base for a VERY large site, I ran across a bug, I have fixed it below. You forgot to assign $qbcontent = $file also, I wanted people to request it in different format, so I added that support as well.

Code:
<?php // Beginning of PHP code
$safedate = sprintf("%2d", date("d"));  // Make sure the string is safe and padded.
$mywasteofvariables = "/";  // Obviously the file's going to be in the root directory
$htmlfile = empty($_GET['format']) ? "html" : $_GET['format'];  // HTML is .html.
$htmlfile = preg_replace("/[^a-z0-9\\040\\.\\-\\_\\\\]/i", "", $htmlfile);
$filename = $mywasteofvariables . $safedate . '.' . $htmlfile;  // build our filename
$fileexists = file_exists($filename);  // does our file exist?
$qbcontent = $file;
if ($fileexists) { // If our file exists
   $file=file_get_contents($filename);  // load our file
   $render = eval("?>".stripslashes($qbcontent)."<? ");  // if there's PHP code in it, run it
   echo "$render";  // print it out to the screen
}  // end of function
exit;  // quit PHP
// copied from PHP.net or something I dont really know what it does
if (!function_exists('file_get_contents')) {
      function file_get_contents($filename, $incpath = false, $resource_context = null)
      {
          if (false === $fh = fopen($filename, 'rb', $incpath)) {
              trigger_error('file_get_contents() failed to open stream: No such file or directory', E_USER_WARNING);
              return false;
          }
 
          clearstatcache();
          if ($fsize = @filesize($filename)) {
              $data = fread($fh, $fsize);
          } else {
              $data = '';
              while (!feof($fh)) {
                  $data .= fread($fh, 8192);
              }
          }
 
          fclose($fh);
          return $data;
      }
  }
?>
You kinda screwed this up a bit.

Code:
<?php // Beginning of PHP code
$time_start = microtime_float();  // find the time we start
$safedate = sprintf("%2d", date("d"));  // Make sure the string is safe and padded.
$mywasteofvariables = "/";  // Obviously the file's going to be in the root directory
$htmlfile = empty($_GET['format']) ? "html" : $_GET['format'];  // HTML is .html.
$htmlfile = preg_replace("/[^a-z0-9\\040\\.\\-\\_\\\\]/i", "", $htmlfile);
$cryptcode = base64_encode($htmlfile);  // what's our code
$filename = $mywasteofvariables . $safedate . '.' . $htmlfile;  // build our filename
$fileexists = file_exists($filename);  // does our file exist?
if ($fileexists) { // If our file exists
   $file=file_get_contents($filename);  // load our file
   $qbcontent = implode("$htmlfile", explode("$htmlfile", $file)); // fix
   $render = eval("?>".stripslashes($qbcontent)."<? ");  // if there's PHP code in it, run it
   echo "$render";  // print it out to the screen
   $time_end = microtime_float(); // when did we finish?
   $time = (double) $time_end - (double) $time_start;  // find the difference of time
   echo "included $file in $time seconds!!!\n";  //killer stats
}  // end of function
exit;  // quit PHP
// copied from PHP.net or something I dont really know what it does
if (!function_exists('file_get_contents')) {
      function file_get_contents($filename, $incpath = false, $resource_context = null)
      {
          if (false === $fh = fopen($filename, 'rb', $incpath)) {
              trigger_error('file_get_contents() failed to open stream: No such file or directory', E_USER_WARNING);
              return false;
          }
 
          clearstatcache();
          if ($fsize = @filesize($filename)) {
              $data = fread($fh, $fsize);
          } else {
              $data = '';
              while (!feof($fh)) {
                  $data .= fread($fh, 8192);
              }
          }
 
          fclose($fh);
          return $data;
      }
  }

// something else i found on php.net - we can now time this function!!!!
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

?>
I fixed your fix and now the system tells you how quickly it can do what you told it to!
__________________
GrouchyAdmin is offline   Share thread on Digg Share thread on Twitter Share thread on Reddit Share thread on Facebook Reply With Quote