| 
<?phpdeclare(strict_types=1);
 ini_set('display_errors', '1');
 error_reporting(-1);
 # $_POST = [];
 
 # NOT REQUIED ON THIS PAGE
 include '_config.php';
 
 $TITLE = 'John_Betong\'s Website File Integrity Check';
 $DESC  = 'Simple PHP Class to monitor online file changes.'
 . 'Hacked servers can now be easily checked to prevent problems.';
 $DEMO  = 'http://johns-jokes.com/downloads/sp-a/detect-file-changes/ver-002/';
 $DEMO  = 'interrogator.php';
 $SITE  = NULL;
 if(LOCALHOST):
 $url   = 'https://johns-jokes.com/downloads/sp-a/detect-file-changes/';
 $SITE  = '<h6 class="flr ooo"><a href="' .$url .'">ONLINE</a></h6>';
 endif;
 $IMG_1    = 'imgs/screenshot-2018-01-28-31.3kb.png';
 
 # HIGHLIGHT FILES  #####################################
 $getParams = [
 'index.php',
 'interrogator.php',
 '_class-snapshot.php',
 '_config.php',
 '_style.css',
 ];
 $getParam = $_GET['getParam'] ?? $getParams[0];
 
 # STYLE SHEET INLINE ###################################
 $_CSS  = file_get_contents('_style.css');
 
 $hdr = <<< __TMP
 <!DOCTYPE HTML>
 <html lang="en-GB">
 <head>
 <title> $TITLE </title>
 <meta name="viewport"     content="width=device-width, initial-scale=1">
 <meta content="text/html; charset=utf-8" http-equiv="content-type">
 <meta name="description"  content="$DESC">
 <meta name="author"       content="John_Betong | [email protected]">
 <link rel="Shortcut Icon" href="favicon.ico" type="image/x-icon" />
 <style> $_CSS </style>
 </head>
 __TMP;
 # CRUNCH Header and Style sheet
 $hdr = str_replace('  ', ' ', $hdr);
 $hdr = str_replace(["\n","\t", "\r"], "", $hdr) ."\n";
 echo $hdr;
 
 ?>
 <body>
 <?= $SITE ?>
 <h1 class="ooo">
 <a class="tdn" href="?"> <?= $TITLE ?> </a>
 </h1>
 <h5 class='flr ooo '>
 <a class='btn tdn bgl' href="$FORUM">SitePoint Forum</a>
 </h5>
 <div class="tac">
 Inspired by:
 <a href='http://phpmaster.com/monitoring-file-integrity/'>
 Martin Psinas
 </a>
 <sup>blog</sup>
 </div>
 <hr>
 
 <div class="tac fwb">
 <?php # PAGES =============================
 $pages = [
 'Introduction'  => 'index.php',
 'Source files'  => 'index.php?get',
 ];
 foreach($pages as $title => $url):
 echo "\n" .'<a class="btn bge tdn" href="' .$url .'">'
 .$title
 .'</a>';
 endforeach;
 ?>
 </div>
 
 <div class="w88 mga">
 <fieldset class="bgs tal">
 
 <?php if( count($_GET) ): #=========== SOURCE FILES =================?>
 <legend class="fsl fwb"> Source Files: </legend>
 <div class="tac fss">
 <?php
 foreach( $getParams as $id => $file):
 echo "\n" .'<b class="btn bgl ">'
 .   '<a class="tdn" href="?getParam='
 .     $file .'">' .$file .'</a>'
 .'</b>';
 endforeach;
 ?>
 </div>
 
 <h2 class="w99 bge bd1"> <b>Source:   </b> <?= $getParam ?> </h2>
 <div class="fss">
 <?php highlight_file( $getParam); ?>
 </div>
 <br>
 
 <?php else: //===================================== ?>
 <legend class="fsl fwb w99">Introduction:</legend>
 <div class="p42">
 Have you ever wondered what files have been newly created, last modified or even deleted?
 <br>
 <h3 class="ooo"> Look no further - this is the App' for that :) </h3>
 <br>
 </div>
 
 <h2 class="ooo"> File Integrity Class </h2>
 <div class="p42">
 A simple Class that interrogates all files in a site path.
 <br>
 File contents are hashed and a "snapshot" saved to a dynamically created database table.
 <br>
 <i class="fss"> Unfortunately folder names must be "fixed" to in order to conform :) </i>
 <br>
 Any time afterwards the "snapshot" can be compared against the current files.
 <br>
 All discrepancies are shown which facilitates finding problematic files.
 <br>
 A new "snapshot" can be created once all discrepances have been resolved.
 <br><br>
 </div>
 
 <h2 class="ooo"> Results of Interrogation: </h2>
 <ol>
 <li>Amended files </li>
 <li>Deleted files </li>
 <li>New files </li>
 </ol>
 
 <h2 class="ooo">Installation: </h2>
 <ol>
 <li>
 Download and extract any of the following zip files into a new LOCALHOST "folder-name":
 <br>
 <a class="btn bge tdn" href="zips/ver-002.zip">source.zip</a>
 <a class="btn bge tdn" href="zips/ver-002.tar.xz">source.tar.xz</a>
 <a class="btn bge tdn" href="zips/ver-002.7z">source.7z</a>
 </li>
 <li>
 Use PhpMyAdmin to create a "DB_HOST" Database named "DB_NAME"
 <br>
 Set Database permissions for:
 <ul>
 <li> "DB_USER" </li>
 <li> "DB_PWD"  </li>
 </ul>
 </li>
 <li>
 Edit:   <b> _config.php</b>
 <br>
 <ul>
 <li> Set Database values for: DB_HOST, DB_USER, DB_PWD, DB_NAME</li>
 <li>  <i class="fss"> More paths may be added to the "folder-name" path and its parent </i></li>
 <li> Browse to "folder-name"/index.php</li>
 <li> Test thoroughly and once satisfied upload to your online site.</li>
 </ul>
 </li>
 </ol>
 
 <dl>
 <dt>
 <a class="btn tdn bgl fsl" href="<?= $DEMO ?>">Online Demo</a>
 </dt>
 <dd class="tac">
 <a href="<?= $DEMO ?>">
 <img src="<?= $IMG_1 ?>" width="420" alt="Screenshot" />
 </a>
 </dd>
 </dl>
 
 
 <?php endif; ?>
 </fieldset>
 </div>
 
 <p>   </p>
 <div class="POF tac bga w99 p42">
 <a class="fll tdn" href="https://validator.w3.org/nu/">HTML check</a>
 <a class="flr tdn" href="https://jigsaw.w3.org/css-validator/">CSS check</a>
 Wonderful place for a footer
 </div>
 </body>
 </html>
 
 |