Jump to content

Recommended Posts

Posted

Let's you copy multiple urls to any directory you select. Uses cURL:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Multi Curl Copier</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
 background: #ffffff;
 font-family: 'Trebuchet MS', Arial, sans-serif;
 color: #000060;
 font-size: 15px;
}

h1, h2, h3, h4, h5 {
 font-family: Georgia, 'Times New Roman', serif;
}

h1 {
 color: #000060;
 font-size: 24px;
 text-align: center;
}

table {
 margin-left: auto;
 margin-right: auto;
}

.tablmain {
 width: 600px;
 margin-left: auto;
 margin-right: auto;
 font-size: 14px;
}

.center {
 text-align: center;
}

select {
 width: 130px;
}

.note {
 font-size: 12px;
 text-align: center;
}

#urls {
 margin-left: 10px;
 text-align: left;
}

#folder {
 font-size: 19px;
 text-align: center;
}

.fail {
 color: #cc0000;
}

.success {
 color: #00ff00;
}

-->
</style>
</head>
<body>
<?php
# error_reporting(0);
if ( $_POST[files] )
{
$files = $_POST[files];
$Sdir = $_POST[sdir];

$array_1 = explode( "\n", $files);
# filter out obvious non-URL's & trim trailing spaces
foreach ($array_1 as $temp)
{
if ( preg_match("@^http@i", $temp) )
{ $array_2[] = trim($temp); }
}

echo "<br><br>\n";
echo "<div id=\"urls\">\n";
echo "<div id=\"folder\">Folder: $Sdir</div><br><br>\n";

foreach($array_2 as $urls)
{
# get hostname
$url_part1 = parse_url($urls);
$host = ($url_part1['host']);

# get extension name
$url_part2 = pathinfo($urls);
$new_name = ($url_part2['basename']);

# user agent, cookie file
$agent = $_SERVER[HTTP_USER_AGENT];
$cook_file = "cookie_file.txt";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urls);
curl_setopt($ch, CURLOPT_REFERER, "http://$host");
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cook_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cook_file);
$result = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$bytes = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD);
curl_close($ch);

# if connection good, write files
if($httpcode >= 200 && $httpcode < 303)
{

# fix file names
$new_name = rawurlencode($new_name);
$new_name = str_replace("%","_",$new_name);

# write files
file_put_contents("$Sdir/$new_name", $result);

# remove root from file name to display link
$Ldir = preg_replace("@$_SERVER[DOCUMENT_ROOT]@", "", $Sdir);

# display links
echo "<span class=\"success\">Saved:</span> $urls<br>As: <a href=\"http://$_SERVER[sERVER_NAME]$Ldir/$new_name\">http://$_SERVER[sERVER_NAME]$Ldir/$new_name</a><br>";
echo "You transfered $bytes bytes<br><br>";
}
else
{
echo "<span class=\"fail\">Failed:</span> $urls<br><br>";
}
}
# delete cookie file
if (file_exists($cook_file)) {
unlink($cook_file);
}
echo "</div>";
}
?>

<table class="tablmain" cellpadding="15" cellspacing="0" border="0">
<tr>
<td align="center">
<br>
<hr>
<h1>Multi Curl Copier</h1>
<hr>
<br>
<form action="" method="post">
<table align="center" cellpadding="0" cellspacing="2" border="0">
<tr>
<td align="center">
<span class="note">(Use your Return key to start each url on a new line.)</span><br>
<textarea name="files" cols="60" rows="10"><?php echo $_POST[files]; ?></textarea>
<br>
<select onchange=form.Sdir.value=this.value; name="Sdir" width="130">
<option value="">Directory</option>
<option value="<?=$_SERVER[DOCUMENT_ROOT];?>">Root</option>
<?php
$root = "$_SERVER[DOCUMENT_ROOT]";
$iterator = new RecursiveDirectoryIterator($root);
foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::CHILD_FIRST) as $dir) 
{
if (is_dir($dir)) {

## remove document root ##
$dir = preg_replace("@$_SERVER[DOCUMENT_ROOT]/@", "", $dir);

$dirs[] = $dir;
}
}
## loop through files ##
asort($dirs);

foreach($dirs as $value)
{
echo "<option value=\"$root/$value\">$value</option>";
}
?>
</select>

<input type="submit" name="Submit" value="Copy Files">
</td>
</tr>
</table>
</form>
<br><br>
</body>
</html>

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...