Proof Loaded Files Scripts Page Headers

Proof Loaded Files is a PHP script can track and verify if pages files were loaded. It can generate URLs that for links and other page elemements for serving files dynamically.The script can keep track of linked and downloaded files using session variables, so it can verify if the user browser has really loaded the linked files.

 

 

<?php
/*******************************************
 * Author: Max Nowack                      *
 * Website: www.dasnov.de                  *
 * Classname: ProofLoadedFiles             *
 *******************************************
 * Description:                            *
 * The class proof which files are loaded  *
 * from the client. With this class your   *
 * can make forms or sites securer.        *
 * Example:                                *
 * The client must load all external files *
 * they liked in the script (stylesheets,  *
 * images, etc.). Otherwise the next site  *
 * will not open.                          *
 *******************************************/


session_start();    //Start the Session. If you also use sessions on your script, comment this line out.


define("SESSION_VAR_PREFIX",    "ProofLoadedFiles_");

class ProofLoadedFiles
{
 var $linkTo;        //link to the file that open the other files (images, stylesheets, etc.)
 var $pathTo;        //path to the other files (images, stylesheets, etc.)
 var $loadedFiles;    //array that contains the files opened by the script
 var $showedLinks;    //array that contains the files showed by the script
 var $numSitesInSession;    //number of the runtimes of the class in this session

 function __construct($linkTo,$pathTo)
 {
 //make the sessionvars local
 $this->loadedFiles = $this->getSessionVar("loadedFiles",array());
 $this->showedLinks = $this->getSessionVar("showedLinks",array());
 $this->numSitesInSession = $this->getSessionVar("numSitesInSession",0);

 //save the classparameters
 $this->linkTo = $linkTo;
 $this->pathTo = $pathTo;

 $this->numSitesInSession++;    //increase session site number
 }

 function __destruct()
 {
 //save the localvars into sessionvars
 $this->setSessionVar("loadedFiles",$this->loadedFiles);
 $this->setSessionVar("showedLinks",$this->showedLinks);
 $this->setSessionVar("numSitesInSession",$this->numSitesInSession);
 }

 function showLinkTo($file)
 {
 //this function returns the link to the file $file
 $this->showedLinks[$this->numSitesInSession][] = $file;
 if(strstr($this->linkTo,"?"))
 {
 return $this->linkTo.$file."&amp;x=".time();
 }
 else
 {
 return $this->linkTo.$file."?x=".time();
 }
 }

 function getMimeType($file)
 {
 //this function returns the mimetype of the file $file
 if(function_exists(finfo_open))    //tests finfo installation
 {
 $finfo = finfo_open(FILEINFO_MIME_TYPE);    // return mime type ala mimetype extension
 return finfo_file($finfo,$this->pathTo.$file);
 }
 else    //use the old function
 {
 return mime_content_type($this->pathTo.$file);
 }
 }

 function load($file)
 {
 //this function returns the content of the file $file
 //if the link to the file was never shown in this session or , the function will return false
 $this->numSitesInSession--;    //decrease session site number
 if($this->canLoadFile($file) &amp;&amp; file_exists($this->pathTo.$file))
 {
 $this->loadedFiles[$this->numSitesInSession][] = $file; //add the file to the loadedFiles-Array
 return file_get_contents($this->pathTo.$file); // return the file content
 }
 else
 {
 return false;
 }
 }

 function proof()
 {
 //this function proof the loaded files. If all files are loaded,
 //the function will return true. Otherwise the function return false
 if($this->numSitesInSession>1) //start just in sessions > 1
 {

 $lastSession = $this->numSitesInSession - 1; //get the last session

 //proof showed links and loaded files > 0
 if(count($this->loadedFiles[$lastSession])>0 &amp;&amp; count($this->showedLinks[$lastSession])>0)
 {
 //sort the arrays
 sort($this->loadedFiles[$lastSession]);
 sort($this->showedLinks[$lastSession]);

 if($this->loadedFiles[$lastSession]==$this->showedLinks[$lastSession])
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 elseif(count($this->loadedFiles[$lastSession])>0 xor count($this->showedLinks[$lastSession])>0)
 {
 return false;
 }
 else
 {
 return true;
 }

 }
 else
 {
 return true;
 }
 }

 function canLoadFile($file)
 {//this function return true if the file was allready shown
 $arr_str = json_encode($this->showedLinks);
 if(strstr($arr_str,$file))
 {
 return true;
 }
 else
 {
 return false;
 }
 }

 function getSessionVar($var,$init)
 {
 if(!isset($_SESSION[SESSION_VAR_PREFIX.$var]))
 {
 $this->setSessionVar($var,$init);
 }

 return $_SESSION[SESSION_VAR_PREFIX.$var];
 }

 function setSessionVar($var,$val)
 {
 $_SESSION[SESSION_VAR_PREFIX.$var] = $val;
 }
}
?>

&amp;nbsp;

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>