jump to content

Smart-aleck warning

Don't try running the script on this page and then emailing me that it doesn't work on this page :-)

Related

<?
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modifieed: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0");
header("Cache-Control: max-age=0");
header("Pragma: no-cache");
/*
|| Takes the referrer document, only prints the content
|| works only with documents on the same server. good enough :-)
|| Vattekkat Satheesh Babu (vsbabu-removethis@vsbabu.org).
||
|| I put an HTML comment called "document_starts_here" before
|| content starts and another one "document_ends_here" after
|| the content. If you have been following some standard like
|| that, it could be useful.
|| 
|| Installation instructions
|| 1. Copy paste the code here to your favourite editor, and save it as some php3 file
|| 2. The file name doesn't matter. I call it printit.php3 
|| 3. From your other web pages make a link to printit.php3
|| 4. Test it out by clicking on the links in those pages
||
*/
if ($HTTP_REFERER)
    $myURL = $HTTP_REFERER;
else
    $myURL = "http://vsbabu.csoft.net/";

// here is the starting comment for your content
$START_CONT="document_starts_here";
// here is the ending comment for your content
$END_CONT = "document_ends_here";

$parsed_url = parse_url($myURL);
$myServer = $parsed_url['host'];
$document = $parsed_url['path'];
if($document[strlen($document)-1]=='/') $document = "$document/index.html";
$base_url = dirname($document);

$fp=fsockopen($myServer,80,&$errno,&$errstr,30);

// if you've name based virtual hosting
$request = "GET $document HTTP/1.1\r\n"; 
$request .= "Host: $myServer\r\n\r\n";
/* if you've normal old type servers, 
comment out the previous two lines and
use the next line instead
*/
//$request = "GET $document HTTP/1.0\r\n\r\n";


if(!$fp) {
  echo "$errstr ($errno)<br>\n";
} else {
  fputs($fp,$request); 
  $content=0;
  $in_title=0;
?>
<HTML>
<HEAD>
<BASE HREF="<? echo "http://$myServer$base_url/"; ?>">
<STYLE TYPE="TEXT/CSS">
<!--
body,p {
    background: #FFFFFF;
    font-family: Verdana, Arial, Helvetica, sans-serif; 
    font-size: 10pt;
    margin-left: 5px; 
    margin-top: 5px;
    margin-right: 5px; 
    margin-bottom: 5px;
    color: #000000;
    text-align: justify;
  }

TH.headerrow {
    background-color: #CDC8B1;
    font-family: verdana,courier;
    font-size: 10pt;
    color: black;
}
TD.datarow {
    font-family: verdana,courier;
    font-size: 10pt;
    color: black;
}
//-->
</STYLE>
<?
  while(!feof($fp)) {
    $line=fgets($fp,4096);  
    // this is the stupid part - get the title
    // python makes this so easy :-)
    if(eregi("<title>",$line)){ $in_title=1; }
    if ($in_title==1) $title.=$line;
    if(eregi("</title>",$line)){
        $in_title=0;
        if(!eregi("<title>",$line))
            $title.=$line;
    }
    if(ereg($START_CONT,$line)) {
        $title = eregi_replace("</title>","",eregi_replace("<title>","",$title));
        echo "<TITLE>$title</TITLE>\n</HEAD>\n<BODY>\n";
        $content=1;
    }
    if(ereg($END_CONT,$line)) $content=0;
    if($content==1)echo $line;
}
fclose($fp);
?>
<HR>
<CENTER>
<SMALL>Copyright &copy; <U>Vattekkat Satheesh Babu</U>. All rights reserved.</SMALL><BR>
<?echo "<A HREF=\"$myURL\"><SMALL><I>$myURL</I></SMALL></A>\n";?>
</CENTER>
</BODY>
</HTML>
<?
}
?>

[2002.03.21] Debbie Sontag contributed a solution if the page that you are trying to get printer-friendly is password protected using HTTP authentication:

REPLACE THIS LINE:
$request = "GET $document  HTTP/1.0\r\n\r\n";

WITH THIS:
$request="GET $document HTTP/1.0\r\n";
$request.="Authorization: basic  ".base64_encode("username:password")."
\r\n\r\n";
Thanks Debbie!