Beberapa waktu lalu saya sempat melakukan bebrapa eksperimen melakukan scan and find dengan script php.
experimen ini bertujuan untuk menemukan file dengan memasukan keyword dan mencacokan dengan file dan path folder..
langkah pertama membuat html :
1. html:
<table>
<tbody>
<tr>
<td width="100%"><form action="search.php" method="get"> <strong>Telusuri Dokumen : </strong>
</form></td>
</tr>
</tbody>
</table>
html bisa di sesuaikan dengan kebutuhan anda…
langkah selanjutnya adalah memasukan php classnya
2. php class
<?php
class file_search{
var $found = array();
function parseWord($userDoc,$find)
{
$fileHandle = fopen($userDoc, "r");
$line = @fread($fileHandle, filesize($userDoc));
$lines = explode(chr(0x0D),$line);
$outtext = "";
foreach($lines as $thisline){
$pos = strpos($thisline, chr(0x00));
if (($pos !== FALSE)||(strlen($thisline)==0)){
}else{
$outtext .= $thisline." ";
}
}
$outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-@\/\_\(\)]/","",$outtext);
return $outtext;
}
function file_search($files, $dirs = './administrator/files', $sub = 1, $case = 0){
$dirs = (!is_array($dirs)) ? array($dirs) : $dirs;
foreach ($dirs as $dir){
$dir .= (!ereg('/$', $dir)) ? '/' : '';
$directory = @opendir($dir);
while (($file = @readdir($directory)) !== FALSE){
if ($file != '.' && $file != '..'){
if ($sub && is_dir($dir . $file)){
$this->file_search($files, $dir . $file, $sub, $case);
}else{
$files = (!is_array($files)) ? array($files) : $files;
foreach ($files as $target){
$tar_ext = strtolower(substr(strrchr($target, '.'), 1));
$tar_name = strtolower(substr($target, 0, strrpos($target, '.')));
$fil_ext = strtolower(substr(strrchr($file, '.'), 1));
$fil_name = strtolower(substr($file, 0, strrpos($file, '.')));
$doc = $dir.$file;
$extar_name = explode(" ",$tar_name);
$match = 0;
for($i=count($extar_name);$i>=0;$i--){
$ereg = ($case) ? 'ereg' : 'eregi';
if($ereg($extar_name[$i], $doc)){
$match++;
if ( eregi($tar_ext, $fil_ext)){
if( $fil_ext == "doc" ){
$txt = $this->parseWord($doc,$tar_name[$i]);
$one = ceil(strlen($txt)/16);
$two = ceil(strlen($txt)/8);
$txt = substr($txt,0,400);
}else{
$link = "<a href='".$doc."'><span style='font-size:18px;font-weight:bold;'>".$fil_name."</span></a>";
$txt = "NOT DOCUMENT FILE FORMAT";
}
$result[$i] = $doc;
if (array_search($doc, $result) == FALSE){
$show = "<b>".$fil_name."</b> - <br>".$txt."<br><br>";;
$this->found[] = $show;
}
}
}
}
}
}
}
}
}
}
}
?>
pada bagian "function file_search($files, $dirs = './file', $sub = 1, $case = 0){" silahkan di ganti dengan file repositori.
Untuk menampilkan result pencarian sisipkan kode berikut di dalam table. dan berikan paging di bawah result.
3. Result and Pagging
<?php
$btn_search = $_GET['btn_search'];
$in_search = $_GET['in_search'];
$page = $_GET['p'];
$x = $_GET['x'];
$y = $_GET['y'];
if($in_search == "")
echo "<meta http-equiv='REFRESH' content='0;url=./'>";
$find = array($in_search.".[^|exe|htm|ogg|btn|tns|jpg|inf|ser]",);
$search = new file_search($find);
$total = count($search->found);
$start = 0;
$end = 10;
echo "<div align='right'>Total : ".$total." Dokumen ditemukan"."</div><br><br>";
if($total > 10){
if($page != ""){
$end = $page*10;
$start = $end-10;
}
}elseif($total < 1){
echo "<h2><center>Dokumen Tidak Ditemukan</center></h2>";
}
for($i=$start; $i<$end; $i++){
echo $search->found[$i];
}
$total_page = ceil($total/10);
$next = "";
$prev = "";
if($total_page > 10){
$next = "Next>>";
if($page <= 10){
$end_page = 10;
$start_page = 1;
}elseif($page > 10){
$start_page = $page-5;
$end_page = $page+5;
if($end_page >= $total_page){
$start_page = $total_page-10;
$end_page = $total_page;
$next = "";
}
}else{
$start_page = 10-$page;
$end_page = 10+$page;
}
}else{
$end_page = $total_page;
if($page <= 10){
$end_page = $end_page;
$start_page = 1;
}elseif($page > 10){
$start_page = $page-5;
$end_page = $page+5;
if($end_page >= $total_page){
$start_page = $total_page-10;
$end_page = $total_page;
$next = "";
}
}else{
$start_page = 10-$page;
$end_page = 10+$page;
}
}
if($page > 10)
$prev = "<<Prev";
$prev_page = $start_page-1;
echo "<div align='center' style='padding-bottom:20px'>Halaman ";
echo "<a href='search.php?in_search=".$in_search."&btn_search=Search+Document&p=".$prev_page."'>".$prev."</a>";
for($p=$start_page; $p<=$end_page; $p++){
if($p != $page)
echo " <a href='search.php?in_search=".$in_search."&btn_search=Search+Document&p=".$p."'>".$p."</a> ";
else
echo " ".$p." ";
}
$next_page = $end_page+1;
echo "<a href='search.php?in_search=".$in_search."&btn_search=Search+Document&p=".$next_page."'>".$next."</a>";
echo "</div>";
?>
Screenshoot :

Download script:
Download Now