Byron Posted August 25, 2012 Posted August 25, 2012 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>
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now