file is /var/www/isaacschlueter.com/public/download/show_save and ext is phparray(34) { ["USER"]=> string(8) "www-data" ["PATH"]=> string(8) "/usr/bin" ["PHP_FCGI_CHILDREN"]=> string(2) "15" ["PHP_FCGI_MAX_REQUESTS"]=> string(4) "1000" ["FCGI_ROLE"]=> string(9) "RESPONDER" ["QUERY_STRING"]=> string(0) "" ["REQUEST_METHOD"]=> string(3) "GET" ["CONTENT_TYPE"]=> string(0) "" ["CONTENT_LENGTH"]=> string(0) "" ["SCRIPT_NAME"]=> string(23) "/download/show_save.php" ["SCRIPT_FILENAME"]=> string(57) "/var/www/isaacschlueter.com/public/download/show_save.php" ["PATH_INFO"]=> string(0) "" ["PATH_TRANSLATED"]=> string(34) "/var/www/isaacschlueter.com/public" ["REQUEST_URI"]=> string(23) "/download/show_save.php" ["DOCUMENT_URI"]=> string(23) "/download/show_save.php" ["DOCUMENT_ROOT"]=> string(34) "/var/www/isaacschlueter.com/public" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_SOFTWARE"]=> string(12) "nginx/0.7.62" ["REMOTE_ADDR"]=> string(12) "50.193.14.69" ["REMOTE_PORT"]=> string(5) "50214" ["SERVER_ADDR"]=> string(14) "173.203.97.118" ["SERVER_PORT"]=> string(2) "80" ["SERVER_NAME"]=> string(18) "isaacschlueter.com" ["HTTP_REFERER"]=> string(54) "http://isaacschlueter.com/plugins/i-made/code-display/" ["HTTP_USER_AGENT"]=> string(24) "Wget/1.14 (darwin12.5.0)" ["HTTP_ACCEPT"]=> string(3) "*/*" ["HTTP_HOST"]=> string(18) "isaacschlueter.com" ["HTTP_CONNECTION"]=> string(10) "Keep-Alive" ["HTTP_COOKIE"]=> string(21) "schlueterica_toppic=7" ["PHP_SELF"]=> string(23) "/download/show_save.php" ["REQUEST_TIME"]=> int(1448046927) ["argv"]=> array(0) { } ["argc"]=> int(0) } Showing Source of /download/show_save.php

Showing Source of /download/show_save.php

  1.  <?php
  2.  
  3.  // include_once( dirname(__FILE__) . '/../wp-content/plugins/ref-karma/referrer-karma.php' );
  4.  // if( function_exists('check_referrer') ) check_referrer();
  5.  
  6.  /***********
  7.   * Isaac's Script Downloading/Showing Utility.
  8.   * /download/script_name - show script_name.* all pretty-like
  9.   * /code/script_name - show script_name.* plain-text
  10.   * /download/script_name/save - save script_name.* to your computer
  11.   *
  12.   * If you have an extension, it'll try to get a file with that extension.
  13.   * If not found or no extension, it'll try to get a file with the same basename.
  14.   *
  15.   * Subdirs now supported.
  16.   *
  17.   * For seamless integration, put these rules in your root .htaccess:
  18.   *
  19.  RewriteCond %{REQUEST_FILENAME} !-d [NC]
  20.  RewriteCond %{REQUEST_FILENAME} !show_save.php [NC]
  21.  RewriteRule ^download/(.+)$ /download/show_save.php?file=$1 [QSA,L]
  22.  
  23.  RewriteCond %{REQUEST_URI} show_save.php/save/?$ [NC]
  24.  RewriteRule ^download/show_save.php?file=show_save.php/save [QSA,L]
  25.  
  26.   *
  27.   * Then, in your download folder, put this script file, and add these .htaccess rules:
  28.   *
  29.  IndexOptions FancyIndexing FoldersFirst SuppressLastModified SuppressHTMLPreamble IconsAreLinks
  30.  IndexIgnore .htaccess
  31.  ReadmeName /download/README.html
  32.  HeaderName /download/HEADER.html
  33.  
  34.  #one of these lines for each file in the folder.
  35.  AddDescription "Some Description" filename.ext
  36.  
  37.  AddIcon (IMG,/icons/text.gif) .php
  38.  
  39.   *
  40.   * Have fun!
  41.   *  -- Isaac Z. Schlueter, 2005-10-18
  42.   ***********/
  43.  
  44.  
  45.  
  46.  $file = '';
  47.  if( $_GET['file'] )
  48.  {
  49.    $file = $_GET['file'];
  50.    $save = false;
  51.  }
  52.  else
  53.  {
  54.    $file = __FILE__;
  55.    if( preg_match('#/save/?$#',$_SERVER['REQUEST_URI']) )
  56.    {
  57.      $save = true;
  58.    }
  59.  }
  60.  
  61.  
  62.  clean_file();
  63.  
  64.  $textonly = (isset($_GET['textonly']) && $_GET['textonly']) ? true : false;
  65.  
  66.  // now do it!
  67.  if( $textonly ) show_plain_text($file);
  68.  elseif( $save ) save_file($file);
  69.  else show_pretty_code($file);
  70.  
  71.  
  72.  
  73.  // below be the functions.
  74.  
  75.  function clean_file()
  76.  {
  77.    global $save, $ext, $file;
  78.   
  79.    $file = $_SERVER['REQUEST_URI'];
  80.    $showscript = __FILE__;
  81.    $allowed_folder = dirname($showscript);
  82.    $file = preg_replace('#(^|/)\.+#', '', $file); // no dot-files.
  83.   
  84.    $file = $_SERVER['DOCUMENT_ROOT'] . '/' . $file;
  85.    $file = preg_replace('~/{2,}~','/', $file);
  86.    $file = preg_replace("#^$allowed_folder#", "", $file);
  87.    $file = $allowed_folder . $file;
  88.   
  89.    if( preg_match('#/save/?$#',$file) && !$save )
  90.    {
  91.      // want to save the file
  92.      $file = preg_replace('#/save/?$#','',$file);
  93.      $save = true;
  94.    }
  95.  
  96.    if( preg_match('#\.([^\/.]+)$#',$file,$matches) )
  97.    {
  98.      $ext = $matches[1];
  99.    }
  100.    else
  101.    {
  102.      $ext = '';
  103.    }
  104.  
  105.    // strip extensions.  note that this also prevents .htpasswd, .htaccess, etc.
  106.    $file = preg_replace('#\.([^.\/]+)$#','',$file);
  107.  
  108.    // remove any .blah folders from the filename.
  109.    // many hosts (spec. dreamhost) use symlinks to organize their directory structure.
  110.    $file = preg_replace('#\/\.([^/])+\/#','/',$file);
  111.  
  112.    echo ' file is ' . $file . ' and ext is ' . $ext;
  113.    var_dump($_SERVER);
  114.  }
  115.  function color_the_color($hex)
  116.  {
  117.    if(strlen($hex) == 3) {
  118.      $hexarr = array(substr($hex,0,1) . substr($hex,0,1), substr($hex,1,1).substr($hex,1,1), substr($hex,2,1).substr($hex,2,1));
  119.    } elseif(strlen($hex) == 6) {
  120.      $hexarr = array(substr($hex,0,2) , substr($hex,2,2) , substr($hex,4,2));
  121.    } else {
  122.      return '<span class="hl-var">#' . $hex . '</span>';
  123.    }
  124.  
  125.  
  126.    $bgarr = array();
  127.    foreach($hexarr as $k => $v) {
  128.      $bg = dechex(255 - hexdec($v));
  129.      if(strlen($bg) < 2) {
  130.        $bg = '0' . $bg;
  131.      }
  132.      $bgarr[] = $bg;
  133.    }
  134.  
  135.    return '<span title="#' . $hex . '" style="color:#' . join('',$bgarr) . ';background-color:#' . $hex . '">#' .
  136.      $hex . '</span>';
  137.  }
  138.  function w3c_css_link($word,$end=false)
  139.  {
  140.    @include_once 'Text/cssreserved.php';
  141.    global $css_properties;
  142.    $str = '';
  143.    $word = str_replace(':','',$word);
  144.    if( isset($css_properties[strtolower($word)]) )
  145.    {
  146.      $str = '<a href="' . $css_properties[strtolower($word)] . '" title="Look up \'' . $word . '\' on w3.org">';
  147.    }
  148.    if($str && $end) return '</a>';
  149.    else return $str;
  150.  }
  151.  
  152.  function wdg_html_link($word,$end=false)
  153.  {
  154.    @include_once 'Text/htmlreserved.php';
  155.    global $html_elements;
  156.    $str = '';
  157.    if( isset($html_elements[strtoupper($word)]) )
  158.    {
  159.      $str = '<a href="' . $html_elements[strtoupper($word)] . '" title="Look up \'' . $word . '\' on htmlhelp.com">';
  160.    }
  161.    if($str && $end) return '</a>';
  162.    else return $str;
  163.  }
  164.  
  165.  function php_dot_net_link($word, $end=false)
  166.  {
  167.    @include_once 'Text/phpreserved.php';
  168.    global $php_words, $php_vars, $php_altsyntax;
  169.  
  170.    $str = '';
  171.    // echo $word . ' ' . $php_words[$word] . ' ' . $php_vars[$word] . ' ';
  172.    //print_r($php_vars);
  173.    $word = strtolower($word);
  174.  
  175.    if( $word == 'function' )
  176.    {
  177.      $str = '<a href="http://php.net/language.functions" title="\'function\' on php.net">';
  178.    }
  179.    elseif( isset($php_altsyntax[$word]) )
  180.    {
  181.      $str = '<a href="http://us2.php.net/control-structures.alternative-syntax" title="Alternative syntax for control structures">';
  182.    }
  183.    elseif( isset($php_vars[$word]) )
  184.    {
  185.      $str = '<a href="http://php.net/variables.predefined" title="Pre-Defined PHP Variables">';
  186.    }
  187.    elseif( isset($php_words[$word]) )
  188.    {
  189.      $str = '<a href="http://php.net/' . $word . '" title="Look up \'' . $word . '\' on php.net">';
  190.    }
  191.  
  192.    if($str && $end) return '</a>';
  193.    else return $str;
  194.  }
  195.  
  196.  function hilite($str, $ext, $number = true)
  197.  {
  198.    require_once dirname(__FILE__) . '/Text/Highlighter.php';
  199.    if(!class_exists('Text_Highlighter'))
  200.    {
  201.      echo 'no hilighter!';
  202.    }
  203.  
  204.    $options = array(
  205.        'numbers' => $number ? HL_NUMBERS_LI : 0,
  206.        'tabsize' => 2,
  207.      );
  208.  
  209.    if($_GET['ext']) $ext = $_GET['ext'];
  210.  
  211.    $ext = strtolower($ext);
  212.  
  213.    if( $ext == 'js' ) $ext = 'javascript';
  214.    elseif( $ext == 'htm' ) $ext = 'html';
  215.    elseif( $ext == 'pl' ) $ext = 'perl';
  216.    elseif( $ext == 'py' ) $ext = 'python';
  217.    elseif( $ext == 'c' ) $ext = 'cpp';
  218.  
  219.    if( !$ext ) $ext = 'php';
  220.  
  221.    $hl =& Text_Highlighter::factory($ext,$options);
  222.    if( $hl->message == 'Highlighter for ' . strtoupper($ext) . ' not found' )
  223.    {
  224.      $ext = 'php';
  225.      $hl =& Text_Highlighter::factory('php',$options);
  226.    }
  227.  
  228.    /**
  229.    * TODO:
  230.    * If the ext is ASP, then strip out everything between %> and <%, and highlight as HTML.
  231.    * If the ext is PHP, then strip out everything between ?> and <?php, and highlight as HTML
  232.    * If the ext is HTML, then strip out everything between <style[^>]+> and </style> and highlight as CSS
  233.    * If the ext is HTML, then strip out everything between <script[^>]+> and <script> and highlight as JavaScript
  234.    *
  235.    * Get the newly highlighted bits, and cut/paste appropriately.
  236.    *
  237.    * You'll have to extract the non-php bits from a php file, and somehow figure out where to put them back in.
  238.    * What happens when a JavaScript bit occurs within a HTML bit, and then a PHP bit within the JavaScript?
  239.    * Very, very tricky.
  240.    **/
  241.  
  242.    $str = $hl->highlight($str);
  243.  
  244.    // remove empty spans
  245.    $str = preg_replace('#<span class="[^"]+"></span>#','',$str);
  246.  
  247.    $str = preg_replace('#<span class="hl-url">([^@<]+)@([^<]+)</span>#','<em class="hl-url">[email hidden]</em>',$str);
  248.    $str = preg_replace('#<span class="hl-url">([^<]+)</span>#','<a href="$1"><span class="hl-url">$1</span></a>', $str);
  249.  
  250.    $str = preg_replace('#<li>(.*)</li>\n<li>(.*)</li>#', "<li>$1</li>\n<li class=\"alt\">$2</li>", $str);
  251.  
  252.    if( $ext == 'html' )
  253.    {
  254.      $str = preg_replace('#<span class="hl-reserved">([^<]+)</span>#e',
  255.        "wdg_html_link('\\1') . '<span class=\"hl-reserved\">\\1</span>' . wdg_html_link('\\1', true)", $str);
  256.    }
  257.    elseif( $ext == 'css' )
  258.    {
  259.      $str = preg_replace('#<span class="hl-reserved">([^<]+)</span>#e',
  260.        "w3c_css_link('\\1') . '<span class=\"hl-reserved\">\\1</span>' . w3c_css_link('\\1', true)", $str);
  261.      $str = preg_replace('#url\(([^\)]+)\)#','url(<a href="$1">$1</a>)',$str);
  262.      $str = preg_replace('~<span class="hl-var">#([a-fA-F0-9]+)</span>~e',
  263.        "color_the_color('\\1')",$str);
  264.      /*
  265.      $str = preg_replace('~<span class="hl-var">rgb\(([^\)]+)\)</span>~e',
  266.        "color_the_color(hexify('\\1'))", $str);
  267.      */
  268.  
  269.    }
  270.    elseif($ext == 'php')
  271.    {
  272.      $str = preg_replace('#<span class="hl-(reserved|identifier|var)">([^<]+)</span>#e',
  273.        "php_dot_net_link('\\2') . '<span class=\"hl-\\1\">\\2</span>' . php_dot_net_link('\\2', true)",$str);
  274.    }
  275.  
  276.    return $str;
  277.  }
  278.  
  279.  
  280.  
  281.  function read_file($file)
  282.  {
  283.    // file is going to be an absolute filename, but without any extension
  284.    // it won't be a directory, because that's handled by the .htaccess rules.
  285.    // anyway, if it is a directory, then that'll fail.
  286.  
  287.    global $ext;
  288.  
  289.    $str = '';
  290.  
  291.    $base = basename($file);
  292.    $dir = dirname($file);
  293.  
  294.    $e = '';
  295.    if(is_dir($dir))
  296.    {
  297.      if($d = opendir($dir))
  298.      {
  299.        while( ( $f = readdir($d) ) !== false)
  300.        {
  301.        //  echo "<br />checking: $f ...";
  302.          if( strpos($f, $base) === 0 )
  303.          {
  304.          //  echo " [$base] is in there ...";
  305.            if( preg_replace('/\.[^.]*$/','',$f) == $base )
  306.            {
  307.            //  echo " found a match! Now try to read from {$dir}/$f";
  308.              // found a match.  try to read the file and return it.
  309.              if( $str = file_get_contents($dir . '/' . $f) )
  310.              {
  311.                // see if it's the right extension.  if not, keep going, but keep this one in case there's no other match.
  312.                if( $ext )
  313.                {
  314.                  $e = preg_replace('/^(.*?)\.([^.\/]+)$/', '$2', $f);
  315.                  if($e == $f) $e = '';
  316.                  if( $ext == $e ) break;
  317.                }
  318.                else
  319.                {
  320.                  // just take the first one!
  321.                  // set it for later use.
  322.                  $e = preg_replace('/^(.*?)\.([^.\/]+)$/', '$2', $f);
  323.                  if($e == $f) $e = '';
  324.                  break;
  325.                }
  326.              }
  327.            }
  328.          }
  329.        }
  330.      }
  331.    }
  332.    if( $e && $e != $ext ) $ext = $e;
  333.  
  334.    global $textonly;
  335.    if($textonly)
  336.    {
  337.      // no need to do this for highlighted output, since the hilite function does it in a simpler way.
  338.      $str = remove_emails($str);
  339.    }
  340.  
  341.    return $str;
  342.  }
  343.  
  344.  function remove_emails($str)
  345.  {
  346.    preg_match_all('#\b([^\s.\t<>]+?)@(.+?)\.(.+?)\b#',$str,$matches,PREG_PATTERN_ORDER);
  347.  
  348.    if($matches)
  349.    {
  350.      foreach($matches[0] as $match)
  351.      {
  352.        if(is_valid_email_address($match)) $str = str_replace($match,'[email hidden]',$str);
  353.      }
  354.    }
  355.  
  356.    return $str;
  357.  }
  358.  
  359.  // lifted from http://iamcal.com/publish/articles/php/parsing_email/
  360.  // Thanks very much, Cal Henderson!
  361.  function is_valid_email_address($email)
  362.  {
  363.    $qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
  364.    $dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
  365.    $atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
  366.    $quoted_pair = '\\x5c[\\x00-\\x7f]';
  367.    $domain_literal = "\\x5b($dtext|$quoted_pair)*\\x5d";
  368.    $quoted_string = "\\x22($qtext|$quoted_pair)*\\x22";
  369.    $domain_ref = $atom;
  370.    $sub_domain = "($domain_ref|$domain_literal)";
  371.    $word = "($atom|$quoted_string)";
  372.    $domain = "$sub_domain(\\x2e$sub_domain)*";
  373.    $local_part = "$word(\\x2e$word)*";
  374.    $addr_spec = "$local_part\\x40$domain";
  375.    return preg_match("!^$addr_spec$!", $email) ? true : false;
  376.  }
  377.  
  378.  
  379.  function oops( $show_html_head = false )
  380.  {
  381.  
  382.    global $ext, $file;
  383.  
  384.    if( $show_html_head )
  385.    {
  386.      ?><html><head><title>Oops! File Not Found or Not Readable!</title></head>
  387.      <body>
  388.      <?php
  389.    }
  390.    ?>
  391.    <p>Something went wrong! I couldn't read <code><?php echo $file . ($ext ? '.' . $ext : '') ?></code>.</p>
  392.  
  393.    <p>Most likely, the filename is something that's just not here.</p>
  394.  
  395.    <p>Try <a href="/download/">checking the index</a> and looking for the file you're
  396.    after, or <a href="javascript:history.back()">going back</a> to proceed forth
  397.    with greater care.</p>
  398.  
  399.    <p>If you are really stuck, you can <a href="/contact/">tell the management</a> and
  400.    we may help you out if we're feeling generous today.</p>
  401.    <?php
  402.  
  403.  }
  404.  
  405.  
  406.  
  407.  function save_file($file)
  408.  {
  409.    $str = read_file($file);
  410.    global $ext;
  411.  
  412.    if($ext) $e = '.' . $ext;
  413.    else $e = '';
  414.  
  415.    if($str)
  416.    {
  417.      // liberally inspired by http://elouai.com/force-download.php
  418.  
  419.      // required for IE, otherwise Content-disposition is ignored
  420.      if(ini_get('zlib.output_compression'))
  421.        ini_set('zlib.output_compression', 'Off');
  422.  
  423.      header('Content-Disposition: attachment; filename="' . basename($file) . $e . '"');
  424.      header("Content-Encoding: SomethingIEDoesntKnowAsdfaSdfasDfasdF");
  425.  
  426.      header('Content-Type: application/x-httpd-php-source');
  427.  
  428.      header("Pragma: public"); // required
  429.      header("Expires: 0");
  430.      header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  431.      header("Cache-Control: private",false); // required for certain browsers
  432.      header("Content-Transfer-Encoding: binary");
  433.      header("Content-Length: " . strlen($str));
  434.  
  435.      echo $str;
  436.    }
  437.    else show_pretty_code($file); // make the "oops" page pretty with adsense and CSS
  438.  
  439.    die();
  440.  }
  441.  
  442.  
  443.  function show_plain_text($file)
  444.  {
  445.    $str = read_file($file);
  446.    global $ext;
  447.    if($str)
  448.    {
  449.      if( $ext == 'js' ) header('Content-Type: text/javascript');
  450.      elseif($ext == 'css') header('Content-Type: text/css');
  451.      else header("Content-Type: text/plain");
  452.      echo $str;
  453.    }
  454.    else show_pretty_code($file); // make the "oops" page pretty with adsense and whatnot
  455.  
  456.    die();
  457.  }
  458.  
  459.  function get_link_lists($full_request_file)
  460.  {
  461.    $l = '<li><a href="' . preg_replace('/\.php$/','',$full_request_file) . '/save" title="Download the file, instead of showing it.">Save this file.</a></li>'
  462.      . '<li><a href="' . preg_replace('#^/download/#','/code/',$full_request_file) . '">No formatting</a></li>'
  463.      . '<li>Choose another file in:<ul>';
  464.  
  465.    for( $uri_crawler = dirname($full_request_file); strlen($uri_crawler) > 1$uri_crawler = dirname($uri_crawler) )
  466.    {
  467.      $l .= '<li><a href="'
  468.        . $uri_crawler . '/" title="Go up to the '
  469.        . basename($uri_crawler)
  470.        . ' directory">'
  471.        . $uri_crawler
  472.        . '/</a></li>';
  473.    }
  474.  
  475.    $l .= '</ul></li>'
  476.      . '<li><a href="/plugins/i-made/code-display/" title="The page that describes the code display script">See how this is done</a></li>';
  477.  
  478.    return $l;
  479.  }
  480.  
  481.  function show_pretty_code($file)
  482.  {
  483.    $str = read_file($file);
  484.    global $ext;
  485.    @header("Content-Type: text/html; charset=utf-8");
  486.    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  487.    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  488.    <head><title>Showing Source of <?php echo str_replace($_SERVER['DOCUMENT_ROOT'], '', $file); if($ext) echo '.' . $ext; ?></title>
  489.    <link rel="stylesheet" type="text/css" href="/code/code-hilight.css" />
  490.  
  491.    </head>
  492.    <body><div id="o">
  493.    <?php
  494.  
  495.    $full_request_file = $file;
  496.  
  497.    //echo $full_request_file . ' - ' . str_replace($_SERVER['DOCUMENT_ROOT'], '', $full_request_file);
  498.  
  499.  
  500.    $full_request_file = str_replace($_SERVER['DOCUMENT_ROOT'], '', $full_request_file) . ($ext ? ('.' . $ext) : '');
  501.  
  502.  
  503.    ?>
  504.    <h1>Showing Source of <code><?php echo $full_request_file ?></code></h1>
  505.  
  506.  <!-- Yahoo! Search -->
  507.  <form method="get" class="yahoo search" action="http://search.yahoo.com/search">
  508.  <fieldset><legend>Search Schlueterica</legend>
  509.  <div>
  510.    <input type="text" class="text" name="p" size="31" />
  511.    <input type="submit" class="search_button" value="Search" />
  512.    <input type="hidden" name="fr" value="yscpb" />
  513.  </div>
  514.  <div class="radios">
  515.    <input type="radio" name="vs" id="search_me" value="isaacschlueter.com" checked="checked" /><label for="search_me">isaacschlueter.com</label><br />
  516.    <input type="radio" name="vs" value="" id="search_web" /><label for="search_web">web</label>
  517.  </div>
  518.  <p class="poweredby">
  519.    <a title="Powered by Yahoo!" href="http://search.yahoo.com/"><img alt="Powered by Yahoo!" src="http://us.i1.yimg.com/us.yimg.com/i/us/search/ysan/ysanlogo.gif" /></a>
  520.  </p>
  521.  </fieldset></form>
  522.  <!-- End Yahoo! Search -->
  523.  
  524.  
  525.  <?php if(0) { // begin hiding google search ?>
  526.  <!-- SiteSearch Google
  527.  <form method="get" action="http://www.google.com/custom" id="search_sidebar" class="search">
  528.  <fieldset><legend>Search Schlueterica</legend>
  529.  <div>
  530.  <input class="text" type="text" name="q" size="31" maxlength="255" value="" />
  531.  <input type="submit" name="sa" id="search_sidebar_submit" class="search_button" value="Search" />
  532.  </div>
  533.  
  534.  <div class="radios">
  535.  <input type="radio" id="sidebar_search_me" name="domains" checked="checked" value="isaacschlueter.com" /><label for="sidebar_search_me">isaacschlueter.com</label><br />
  536.  <input type="radio" id="sidebar_search_web" name="domains" value="" /><label for="sidebar_search_web">world</label>
  537.  </div>
  538.  <p class="poweredby">
  539.  <a href="http://www.google.com">Powered By<span> Google</span></a>
  540.  </p>
  541.  
  542.  <input type="hidden" name="sitesearch" value="isaacschlueter.com" />
  543.  <input type="hidden" name="client" value="pub-7488499800567318" />
  544.  <input type="hidden" name="forid" value="1" />
  545.  <input type="hidden" name="ie" value="ISO-8859-1" />
  546.  <input type="hidden" name="oe" value="ISO-8859-1" />
  547.  <input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:FFFFFF;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:100;LW:100;L:http://isaacschlueter.com/images/schlueterica.png;S:http://isaacschlueter.com/;LP:1;FORID:1;" />
  548.  <input type="hidden" name="hl" value="en" />
  549.  </fieldset>
  550.  </form>
  551.  --><!-- SiteSearch Google -->
  552.  <?php } // end hiding google search ?>
  553.  
  554.  
  555.    <ul class="top">
  556.      <?php echo $link_lists = get_link_lists($full_request_file) ?>
  557.    </ul>
  558.    <div class="gb-outer"><div class="gb"><div class="gb-inner"><script type="text/javascript">
  559.  ctxt_ad_partner = "3816160440";
  560.  ctxt_ad_section = "34610";
  561.  ctxt_ad_bg = "";
  562.  ctxt_ad_width = 728;
  563.  ctxt_ad_height = 90;
  564.  ctxt_ad_bc = "336699";
  565.  ctxt_ad_cc = "FFFFFF";
  566.  ctxt_ad_lc = "0000DE";
  567.  ctxt_ad_tc = "333333";
  568.  ctxt_ad_uc = "339933";
  569.  </script>
  570.  <script src="http://ypn-js.overture.com/partner/js/ypn.js"></script></div></div></div>
  571.    <div style="margin:1em"><?php
  572.  
  573.    if( $str ) echo hilite($str,$ext);
  574.    else oops(false);
  575.  
  576.    ?></div>
  577.    <div class="gb-outer"><div class="gb"><div class="gb-inner"><script type="text/javascript">
  578.  ctxt_ad_partner = "3816160440";
  579.  ctxt_ad_section = "34610";
  580.  ctxt_ad_bg = "";
  581.  ctxt_ad_width = 728;
  582.  ctxt_ad_height = 90;
  583.  ctxt_ad_bc = "336699";
  584.  ctxt_ad_cc = "FFFFFF";
  585.  ctxt_ad_lc = "0000DE";
  586.  ctxt_ad_tc = "333333";
  587.  ctxt_ad_uc = "339933";
  588.  </script>
  589.  <script src="http://ypn-js.overture.com/partner/js/ypn.js"></script></div></div></div>
  590.    <ul>
  591.      <?php echo $link_lists; ?>
  592.    </ul>
  593.    </div></body></html>
  594.    <?php
  595.  }
  596.  
  597.  ?>