Jump to content

Searching through and listing a remote directory (directory listings enabled)


ThermalSloth

Recommended Posts

Hi guys,

 

I've been working on a script for a while now,

and I'm sure it doesn't look great and all, and it's probably really messed up..

But right now I've finally got it working!

There's only 1 thing I'd really like to add..

Searching through & listing of remote directories!

The directories I'm trying to list have directory listings enabled,

and I think it *should* be possible.

I just have no clue how.

 

Here's my current code in a beautiful mix of HTML and PHP:

 

<?
$border_size = "0";

function returner($what) {
$what=explode("/",$what);
$tps=count($what);
$what=$what[$tps-1];
return $what;
}

$page_url= "";
$home_url=returner(__FILE__);
if(isset($_GET['q'])) {
$qtext=$_GET['q'];
} else {
$qtext="";
}
function getdirsize($directory, $format=FALSE) {
$size = 0;
if(substr($directory,-1) == '/') {
	$directory = substr($directory,0,-1);
}
if(!file_exists($directory) || !is_dir($directory) || !is_readable($directory)) {
	return -1;
}
if($handle = opendir($directory)) {
	while(($file = readdir($handle)) !== false) {
		$path = $directory.'/'.$file;
		if($file != '.' && $file != '..') {
			if(is_file($path)) {
				$size += filesize($path);
			}
			elseif(is_dir($path)) {
				$handlesize = getdirsize($path);
				if($handlesize >= 0) {
					$size += $handlesize;
				} else {
					return -1;
				}
			}
		}
	}
	closedir($handle);
}
if($format == TRUE) {
	if($size / 1048576 > 1) {
		return round($size / 1048576, 1).' MB';
	}
	elseif($size / 1024 > 1) {
		return round($size / 1024, 1).' KB';
	} else {
		return round($size, 1).' bytes';
	}
} else {
return $size;
}
}

if(isset($_GET['type'])){
  $type=$_GET['type'];
} else {
  $type="new";
}

$textures=0;
$models=0;
$avatars=0;
$seqs=0;
$sounds=0;

foreach (glob("textures/*.jpg") as $texture){
$textures++;
}
foreach (glob("models/*.zip") as $model){
$models++;
}
foreach (glob("avatars/*.zip") as $avatar){
$avatars++;
}
foreach (glob("seqs/*.zip") as $seq){
$seqs++;
}
foreach (glob("sounds/*.zip") as $sound){
$sounds++;
}
?>
<!DOCTYPE html>
<html>
<head>
	<title>ObjectPath Search</title>
	<style type="text/css">
		#wrapper {
			width: 850px;
			margin: 30px auto 30px auto;
			padding: 10px;
		}

		body 
		{
			color:#C6C6C6;
			background:#1E1E1E;
			/* margin:0; padding:0; */
			overflow-x:hidden;
		}

		#tabs {
			font: 85% "Trebuchet MS", sans-serif;
		}

		.left {
			float: left;
		}

		.right {
			float: right;
		}

		a:link, a:visited, a:active {
			color: #3DB015;
			text-decoration: none;
		}

		a:hover {
			color: #00E0FF;
		}

		h2 {
			color: #3DB015;
			padding-bottom: 0.2em;
			font-size: 110%;
		}
		ul#icon {margin: 0; padding: 0;}
		ul#icon li {margin: 1px; position: relative; padding: 1px 0; cursor: pointer; float: left;  list-style: none;}
		ul#icon span.ui-icon {float: left; margin: 0 1px;}
	</style>
	<link type="text/css" href="http://objects.jk-hosting.com/search/css/black-tie/jquery-ui-1.8.2.custom.css" rel="stylesheet" />
	<script type="text/javascript" src="http://objects.jk-hosting.com/search/js/jquery-1.4.2.min.js"></script>
	<script type="text/javascript" src="http://objects.jk-hosting.com/search/js/jquery-ui-1.8.2.custom.min.js"></script>
	<script type="text/javascript">
		function formHandler(form){
			var URL = document.form.site.options[document.form.site.selectedIndex].value;
			window.location.href = URL;
		};

		$(function(){
			// Tabs
			$('#tabs').tabs();
		});
	</script>
</head>
<body>
	<div id="wrapper">
		<div id="tabs"> <!-- Tabs start -->
			<ul>
				<li><a href="#tab-search">Search</a></li>
				<li><a href="#tab-list">List Objects</a></li>
				<li><a href="#tab-info">OP info</a></li>
			</ul>

			<div id="tab-search"><!-- Searchtab start -->
				Please enter a string to search for, and choose a folder to search in. <br /><br />
				<form name="Search">
				<input type='hidden' value='search' name='type'>
				<input value='<? print $qtext; ?>' type='text' name='q'> 
				<select name='map'>
				<option selected='selected' value='models'>Models</option>
				<option value='avatars'>Avatars</option>
				<option value='textures'>Textures</option>
				<option value='seqs'>Seqs</option>
				<option value='sounds'>Sounds</option></select> <input type='submit' value='Search'>
				</form>
			</div> <!-- Searchtab end -->

			<div id="tab-list"><!-- Listtab start -->
				Please pick a folder to browse. <br /><br />
				<form name="form">
					<select name="site" onChange="javascript:formHandler()">
					<option value="#">Look in folder...</option>
					<option value="<? print $page_url; ?>?type=list&map=models">Models</option>
					<option value="<? print $page_url; ?>?type=list&map=avatars">Avatars</option>
					<option value="<? print $page_url; ?>?type=list&map=textures">Textures</option>
					<option value="<? print $page_url; ?>?type=list&map=seqs">Seqs</option>
					<option value="<? print $page_url; ?>?type=list&map=sounds">Sounds</option>
					</select>
				</form>
			</div> <!-- Listtab end -->

			<div id="tab-info"><!-- Info tab start -->  
				The OP currently contains: <br /><br />
				<table>
					<tr><td><b><? echo $models; ?></b></td> <td>Models</td></tr>
					<tr><td><b><? echo $avatars; ?></b></td> <td>Avatars</td></tr>
					<tr><td><b><? echo $textures; ?></b></td> <td>Textures</td></tr>
					<tr><td><b><? echo $seqs; ?></b></td> <td>Seqs</td></tr>
					<tr><td><b><? echo $sounds; ?></b></td> <td>Sounds</td></tr>
				</table>
			</div> <!-- Info tab end -->
		</div> <!-- Tabs end -->
	</div>

<!-- Start PHP generated content -->

<?
if($type=="search" || $type=="list") {
$M=$_GET['map'];
if($type=="search") {
	$Q=$_GET['q'];
	$empty="Nothing found with <b>\"" . $Q . "\"</b> in it's name.<br />\nPlease make a more general search query, or try a different folder.\n\n";
} else {
	$Q="";
	$empty='This folder is empty';
}
if($M=="textures") {
	$ext="jpg";
} else {
	$ext="zip";
}
$i=0;
print "<hr>\n";
$endfile=array();
$endsize=array();
$endsize2=array();
    foreach (glob($M."/*".$Q."*.".$ext) as $filename) {
	$filename = explode(".", $filename);
	$filename=$filename[0];
	$filename = explode("/", $filename);
	$filename=$filename[1];
	$i++;
	$endfile[$i]=$filename;
	if($ext=="jpg") {
		$endfile[$i]="<a name='".$endfile[$i]."' href='".$pageurl."?type=view&name=".$endfile[$i]."&folder=".$M."&from=".$type."&addon=".$Q."'>".$endfile[$i]."</a>";
	}
	$endsize[$i]=$size;
	$endsize2[$i]=$size2;
}
if($i != 1) {
	print "<b>".$i."</b> items were found.\n<hr>\n";
} else {
	print "<b>".$i."</b> item was found.\n<hr>\n";
}
    echo("<table width='100%' border='" . $border_size . "' cellspacing='0' cellpadding='0' >\n");
if($i!=0) {
	for ($t = 1; $t < $i; $t++) {
		$thumbfile = $M."/".$endfile[$t].'.jpg';
		if(file_exists($thumbfile)) {
			$thumbnail = "<a name='".$endfile[$t]."' href='".$page_url."?type=view&name=".$endfile[$t]."&folder=".$M."&from=".$type."&addon=".$Q."'><ul id='icon'><li class='ui-state-default ui-corner-all' title='".$endfile[$t]."'><span class='ui-icon ui-icon-image'></span></li></ul></a>";
		} else {
			$thumbnail = "";
		}
		if($t=="1") {	
			echo("<tr><td width='10%'>Number</td><td width='3%'><ul id='icon'><li class='ui-state-default ui-corner-all' title='".$endfile[$t]."'><span class='ui-icon ui-icon-image'></span></li></ul></td><td width='60%'>Name</td></tr>\n");
		}
		echo("<tr><td>" . $t . "</td><td>".$thumbnail."</td><td>" . $endfile[$t] . "</td></tr>\n");
		flush();
	}
	$thumbfile = $M."/".$endfile[$t].'.jpg';
	if(file_exists($thumbfile)) {
		$thumbnail = "<a name='".$endfile[$t]."' href='".$page_url."?type=view&name=".$endfile[$t]."&folder=".$M."&from=".$type."&addon=".$Q."'><ul id='icon'><li class='ui-state-default ui-corner-all' title='".$endfile[$t]."'><span class='ui-icon ui-icon-image'></span></li></ul></a>";
	} else {
		$thumbnail = "";
	}
	echo("<tr><td>" . $t . "</td><td>".$thumbnail."</td><td>" . $endfile[$t] . "</td></tr>\n");
}
print "</table>\n";     
if($i=="0") {
	print $empty;
}
} elseif($type=="view") {
$filename=$_GET['name'];
$folder=$_GET['folder'];
  
if($_GET['from']=="list"){
	$addon="?type=list&map=".$folder."#".$filename;
}

if($_GET['from']=="search"){
	$addon="?type=search&q=".$filename."&map=".$folder."#".$filename;
}
print"<center><a href='".$home_url."'>Home</a></center>";
print "<hr>\n<center><img src='".$folder."/".$filename.".jpg'></img></center>\n<hr>\n<br />\n<a href='".$page_url."".$addon."'>Previous Page</a>\n";
}
$htmlshow="";
if($_GET['type']=="returnOPfile") {
if(isset($_GET['split'])) {
	$splitter=$_GET['split'];
} else {
	$splitter=" | ";
}
if(isset($_GET['html'])) {
	$htmlshow="<br />";
}
foreach (glob("textures/*.jpg") as $texture){
	if(isset($_GET['size'])) {
		$size=$splitter.filesize($texture);
	}
   		$texture = explode("/", $texture);
	$texture=$texture[1];
	print "textures".$splitter.$texture.$size."\n".$htmlshow;
}
  
foreach (glob("models/*.zip") as $model){
	if(isset($_GET['size'])) {
		$size=$splitter.filesize($model);
	}
   		$model = explode("/", $model);
	$model=$model[1];
	print "models".$splitter.$model.$size."\n".$htmlshow;
}
  
foreach (glob("avatars/*.zip") as $avatar){
	if(isset($_GET['size'])) {
		$size=$splitter.filesize($avatar);
	}
   		$avatar = explode("/", $avatar);
	$avatar=$avatar[1];
	print "avatars".$splitter.$avatar.$size."\n".$htmlshow;
}
  
foreach (glob("seqs/*.zip") as $seq){
	if(isset($_GET['size'])) {
		$size=$splitter.filesize($seq);
	}
   		$seq = explode("/", $seq);
	$seq=$seq[1];
	print "seqs".$splitter.$seq.$size."\n".$htmlshow;
}
    foreach (glob("sounds/*.zip") as $sound){
	if(isset($_GET['size'])) {
		$size=$splitter.filesize($sound);
	}
     	$sound = explode("/", $sound);
	$sound=$sound[1];
	print "sounds".$splitter.$sound.$size."\n".$htmlshow;
}
}
?>

<!-- End PHP generated content -->

</body>
</html>

 

So right now my question to you PHP freaks is,

can you please help me edit my script so I can search through a remote directory?

 

*This* is one of the directories I wish to be able to search through & list..

 

Thanks in advance.  :)

 

Edit;

It might help if you know what the site currently looks like. :)

*Click*

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.