(Don't know if this is the right place for this, but. . . )
At long last, here is my version of FTP Uploading with PHP.
FEATURES: Uploads content, saves info in a table, zip's EXE files, uploads only filetypes you deem safe, simple anti-overwrite feature . . .
TO SET UP:
FILE: form.php
CONTENTS:
FILE: upload.phpCode:<?php function showform(){ if($_GET['error'] == 1){ $error = '<h3><u>ERROR:</u> You must put a title.</h3>'; }elseif($_GET['error'] == 2){ $error = '<h3><u>ERROR:</u> That file format is not supported.</h3>'; }elseif($_GET['error'] == 3){ $error = '<h3><u>ERROR:</u> Your file failed to load.</h3>'; }elseif($_GET['error'] == 'x'){ $error = '<h3><u>UPLOAD:</u> Your file has been uploaded to the server.</h3>'; } print " <html> <head> <style type='text/css'> body{ text-align: center; }div#left, div#right{ float: left; width: 300px; height: 300px; }div#base{ float: left; width: 600px; border-style: solid; border-color: #000000; border-width: 1 0 1 0; text-align: center; }p{ text-align: justify; text-indent: 30px; margin: 0; }div#terms{ width: 600px; margin-right: auto; margin-left: auto; }div#form{ width: 600px; display: none; text-align: left; margin: auto; } </style> <script type='text/javascript'> <!-- function agree(){ document.getElementById('terms').style.display = 'none'; document.getElementById('form').style.display = 'block'; } //--> </script> </head> <body> <div id='terms'> <!--========================================//--> <div style='width:600px; margin:auto; font-size:1px;'>$error</div> <h2><p style='text-align: center'>TERMS OF USE:</p></h2> <hr></hr> <p>YOUR TERMS OF USE GO HERE</p> <p style='text-align: center'>I agree:<input type='radio' onclick=agree() name='1'> I disagree:<input type='radio' onclick='javascript:history.back()' name='1'></p> <!--========================================//--> </div> <div id='form'> <form name='upload' enctype='multipart/form-data' action='upload.php' method='POST'> <h2>Submit Information</h2> <div id='left'> File To Upload:<br> <input type='file' name='up_file'><br> Title:<br> <input type='text' name='title'><br> Description:<br> <textarea name='discription'></textarea><br> </div> <div id='right'> Notes:<br> <textarea name='notes'></textarea><br> Copyright:<br> <input type='text' name='copyright'><br> </div> <div id='base'> <input type='submit' name='Submit' value='Submit'> <input type='reset' value='Reset'> <input type=hidden name=box value=''> </div> </form> </div> Script by: Jason Mace 2007 </body> </html>"; } ?>
(NOTE THAT THIS IS THE FILE THAT SHOULD BE VIEWED)
CONTENTS:
There is a little more work to set it up. These files should be in a folder called "information", and you need to create a folder inside "information" called "upload". Make sure that you have the PHP_zip option enabled in your ini file. The fastest way to do that is to click the wamp server quicklink on the taskbar>> PHP Settings >> Extensions >> PHP_zip. You will also need to download and set up an FTP Server as well. This is VERY easy to do. I am using FileZilla Server. Lastly, you also need to put this line of code into your .htaccess file:Code:<?php $Connection = MySQL_Connect($host, $name, $pass) or die ('NO CONNECTION TO MySQL'); if (!MySQL_Select_db('Files')){ print 'Create DB: '. mysql_query('CREATE DATABASE Files'); print '<br>Select DB: '.MySQL_Select_db('Files'); print '<br>Create Table: '. MySQL_query("CREATE TABLE files ( num SERIAL, path VARCHAR(150), title VARCHAR(100), filetype VARCHAR(20), disc VARCHAR(500), provider VARCHAR(50), notes VARCHAR(500), copyright VARCHAR(150) );"); }else{} if ($_POST['Submit'] == 'Submit'){ if($_POST['title'] == ''){ header("Location: ./upload.php?error=1"); }else{ set_time_limit(0); $conn_id = ftp_connect($host) or die("Couldn't connect"); $login_result = ftp_login($conn_id, $ftpName, $ftpPass) or die("ERROR IN FTP CONNECTION"); $theFile = $_FILES['up_file']; $source = $theFile['tmp_name']; $file_destination = $_FILES['up_file']['name']; $allowedTYPES = array('JPEG','JPG','AVI','MPEG','WMV','PDF','DOC','DOCX','TXT','EXE','ZIP'); $filetype = pathinfo($_FILES['up_file']['name']); $filetype = strtoupper($filetype['extension']); if(array_search($filetype, $allowedTYPES)){ ftp_chdir($conn_id, "/information/"); ftp_chdir($conn_id, "upload"); $path = './information/upload/'; $i = 0; while(is_file('./upload/'.$file_destination) == 1){ $file_destination = $i.$file_destination; $i++; } $path2= '/upload/'.$file_destination; $upload = ftp_put($conn_id, $file_destination, $source, FTP_BINARY); if($filetype == 'EXE'){ $zip = new ZipArchive; $res = $zip->open("./upload/$file_destination.zip", ZipArchive::CREATE); if ($res === TRUE) { $zip->addFile("./upload/$file_destination", $file_destination); $zip->close(); unlink("./upload/$file_destination"); $path2 .= '.zip'; } else { $upload = false; } }else{} if($upload){ $title = $_POST['title']; $disc = $_POST['discription']; $provider = $_SESSION['username']; $notes = $_POST['notes']; $copyright = $_POST['copyright']; MySQL_Query("INSERT INTO files VALUES( NULL, '$path2', '$title', '$filetype', '$style', '$disc', '$sugrank', '$provider', '$notes', '$copyright' )"); header("Location: ./upload.php?error=x"); }else{ header("Location: ./upload.php?error=3"); } }else{ header("Location: ./upload.php?error=2&filetype=$filetype");} MySQL_Close($Connection); ftp_close($conn_id); } } else { showform(); } ?>
This controls the max filesize your script will allow. Note that if you do not add this to your .htaccess, it will only DL things as big as JPEG files.Code:php_value upload_max_filesize 50M
*All the things in red should be changed.
If you have any questions, feel free to post them. And, I did spend several months creating this, so an "Upload Script by Jason Mace" somewhere on the site would be great-- You don't have to, of course. . .



Reply With Quote



(:
Bookmarks