IT.COM

PHP Upload Script

Spaceship Spaceship
Watch

NetworkTown.Net

Account Closed
Impact
2
Hi i need a php upload script please, i need it simply explaind so i can understand it thanks need it in php quick
 
0
•••
The views expressed on this page by users and staff are their own, not those of NamePros.
You can get the ip address of your visitor using the following:

$_SERVER["HTTP_X_FORWARDED_FOR"]
$_SERVER["REMOTE_ADDR"]
$_SERVER["HTTP_CLIENT_IP"]

They may or may not all be filled in depending on whether the user is behind a firewall and the settings of the firewall. Also, I believe the first can be a comma separated list of ip addresses. eg 111.222.333.444,222.333.444.555

Usually it is enough to use REMOTE_ADDR.

Remember to grab the date and time as well if you are thinking of tracing back to the image uploader. If the visitor is on a dynamic IP their ISP will need to know this in order to trace the user on that IP at that time.

Once you have the IP address and date and time, you need to save it somewhere. As has been suggested, this would usually be in a database or a text file of some sort.

HTH,

Mike
 
0
•••
this is what i use
Code:
$resource = fopen("log/views.txt","a");
  fwrite($resource,date("Y"."/"."m"."/"."d h:i:s")." - view - $_REQUEST[id] - $_SERVER[REMOTE_ADDR]\n");
  fclose($resource);
the id is file i pass throw
like www.imghosted.net/view.php?id=file.jpg
the $_REQUEST[id] get's that file.jpg and then i save it on this format:
2005/10/13 11:50:20 - view - Untitled-1.jpg - 193.136.77.119
date - time - type of acess - filename - remote ip
hope it helps you
 
0
•••
wouldn't it better to record it in mysql?
 
0
•••
$_SERVER["REMOTE_ADDR"]

This is what i use!
 
0
•••
Wybe said:
wouldn't it better to record it in mysql?

Maybe ... but there is nothing wrong with putting it in a text file. It depends on your application and facilities (ie is mysql available?)

Mike
 
0
•••
i use it on txt file because it's a litle faster, no latency of mysql.
 
0
•••
I think mysql would be the faster and easier way. Also, it makes things a little bit less cluttered without tons of files for every file uploaded.
 
0
•••
Would anyone know how to edit the script before to give a message like "Please wait, Uploading..." to tell their user the file is uploading?
 
0
•••
iNod said:
Try this..


PHP:
<?php
if($_POST[finshed] == '1') {
//The directory to upload the images - Must be writable CHMOD 777
$upload_dir = "images/";
//100kb - What size do you want to allow to be uploaded
$max_size = 100000;

if(is_uploaded_file($_FILES['image']['tmp_name']))
{
  $size = $_FILES['image']['size'];

  if($size > $max_size)
  {
    echo "File Too Large. File must be no larger than <b>$max_size</b> bytes.";
    exit();
  }
  $filename = $_FILES['image']['name'];

  if(file_exists($upload_dir.$filename))
  {
    echo "Error: The file named <b>$filename</b> already exists.";
    exit();
  }

  if(move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir.$filename))
  {
    echo "Your image uploaded successfully! Can be found here: <a href='/".$upload_dir.$filename."'>".$upload_dir.$filename."</a>";
    exit();
  }
  else
  {
    echo "There was a problem uploading your file. Please try again.";
    exit();
  }
}
}else{
?>
<html>
<head>
<title>Image upload</title>
</head>

<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="finshed" value="1">
Image: <input type="file" name="image" size="20"> 
<input type="submit" name="submit" value="Upload">
</form>
</body>
</html> 
<?php } ?>


iNod.

Dose this show the link after upload and
SecondVersion said:
You could always...

PHP:
<?php

//30 seconds is the default in php.ini
ini_set('max_execution_time', '30'); 
//2M (megabytes) is the default in php.ini
ini_set('upload_max_filesize', '2M';

?>

More settings:
http://us2.php.net/manual/en/ini.php#ini.list

More info on ini_set:
http://us2.php.net/ini_set
Whats this? what do i name the files ect

edit: just tested the script as show above and it redirects to upload.php but i have not made one i am going to but what do i put in upload.php
 
0
•••
0
•••
As for it refreshing to "upload.php" that's the form action..and yes, it shows a link to the file....anyway:

PHP:
<html>
<head>
<title>Image upload</title>
</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Image: <input type="file" name="image" size="20"> <input type="submit" name="submit" value="Upload">
</form>

<?php

if(isset($_POST['submit']) && $_POST['submit'] != "")
{
  //The directory to upload the images - Must be writable CHMOD 777
  $upload_dir = "images/";
  //100kb - What size do you want to allow to be uploaded
  $max_size = 100000;

  if(is_uploaded_file($_FILES['image']['tmp_name']))
  {
    $size = $_FILES['image']['size'];

    if($size > $max_size)
    {
      echo 'File Too Large. File must be no larger than <b>'.$max_size.'</b> bytes.';
      exit;
    }
    $filename = $_FILES['image']['name'];

    if(file_exists($upload_dir.$filename))
    {
      echo 'Error: The file named <b>'.$filename.'</b> already exists.';
      exit;
    }
    if(move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir.$filename))
    {
      echo 'Your image uploaded successfully! Can be found here: <a target="_blank" href="/'.$upload_dir.$filename.'">'.$filename.'</a>';
    }
    else
    {
      echo 'There was a problem uploading your file. Please try again.';
    }
  }
}
?>

</body>
</html>
 
0
•••
SecondVersion said:
As for it refreshing to "upload.php" that's the form action..anyway:

PHP:
<html>
<head>
<title>Image upload</title>
</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Image: <input type="file" name="image" size="20"> <input type="submit" name="submit" value="Upload">
</form>

<?php

if(isset($_POST['submit']) && $_POST['submit'] != "")
{
  //The directory to upload the images - Must be writable CHMOD 777
  $upload_dir = "images/";
  //100kb - What size do you want to allow to be uploaded
  $max_size = 100000;

  if(is_uploaded_file($_FILES['image']['tmp_name']))
  {
    $size = $_FILES['image']['size'];

    if($size > $max_size)
    {
      echo 'File Too Large. File must be no larger than <b>'.$max_size.'</b> bytes.';
      exit;
    }
    $filename = $_FILES['image']['name'];

    if(file_exists($upload_dir.$filename))
    {
      echo 'Error: The file named <b>'.$filename.'</b> already exists.';
      exit;
    }
    if(move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir.$filename))
    {
      echo 'Your image uploaded successfully! Can be found here: <a target="_blank" href="/'.$upload_dir.$filename.'">'.$filename.'</a>';
    }
    else
    {
      echo 'There was a problem uploading your file. Please try again.';
    }
  }
}
?>

</body>
</html>

As for it refreshing to "upload.php" that's the form action..and yes, it shows a link to the file....anyway:

PHP:
<html>
<head>
<title>Image upload</title>
</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Image: <input type="file" name="image" size="20"> <input type="submit" name="submit" value="Upload">
</form>

<?php

if(isset($_POST['submit']) && $_POST['submit'] != "")
{
  //The directory to upload the images - Must be writable CHMOD 777
  $upload_dir = "images/";
  //100kb - What size do you want to allow to be uploaded
  $max_size = 100000;

  if(is_uploaded_file($_FILES['image']['tmp_name']))
  {
    $size = $_FILES['image']['size'];

    if($size > $max_size)
    {
      echo 'File Too Large. File must be no larger than <b>'.$max_size.'</b> bytes.';
      exit;
    }
    $filename = $_FILES['image']['name'];

    if(file_exists($upload_dir.$filename))
    {
      echo 'Error: The file named <b>'.$filename.'</b> already exists.';
      exit;
    }
    if(move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir.$filename))
    {
      echo 'Your image uploaded successfully! Can be found here: <a target="_blank" href="/'.$upload_dir.$filename.'">'.$filename.'</a>';
    }
    else
    {
      echo 'There was a problem uploading your file. Please try again.';
    }
  }
}
?>

</body>
</html>

Is there a way of changing it so it shows the url on another page? and is there a way that it shows the url and now the /images/filename.gif and is it possible to show the image too.
 
0
•••
0
•••
PHP:
<html>
<head>
<title>Image upload</title>
</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Image: <input type="file" name="image" size="20"> <input type="submit" name="submit" value="Upload">
</form>

<?php

if(isset($_POST['submit']) && $_POST['submit'] != "")
{
  //The directory to upload the images - Must be writable CHMOD 777
  $upload_dir = "images/";
  //100kb - What size do you want to allow to be uploaded
  $max_size = 100000;

  if(is_uploaded_file($_FILES['image']['tmp_name']))
  {
    $size = $_FILES['image']['size'];

    if($size > $max_size)
    {
      echo 'File Too Large. File must be no larger than <b>'.$max_size.'</b> bytes.';
      exit;
    }
    $filename = $_FILES['image']['name'];

    if(file_exists($upload_dir.$filename))
    {
      echo 'Error: The file named <b>'.$filename.'</b> already exists.';
      exit;
    }
    if(move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir.$filename))
    {
      echo 'Your image uploaded successfully!<br /><br />Preview: <br /><img src="'.$upload_dir.$filename.'" border="0"><br /><br >Link to your image: <a target="_blank" href="/'.$upload_dir.$filename.'">'.$filename.'</a>';
    }
    else
    {
      echo 'There was a problem uploading your file. Please try again.';
    }
  }
}
?>

</body>
</html>
 
0
•••
SecondVersion said:
PHP:
<html>
<head>
<title>Image upload</title>
</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Image: <input type="file" name="image" size="20"> <input type="submit" name="submit" value="Upload">
</form>

<?php

if(isset($_POST['submit']) && $_POST['submit'] != "")
{
  //The directory to upload the images - Must be writable CHMOD 777
  $upload_dir = "images/";
  //100kb - What size do you want to allow to be uploaded
  $max_size = 100000;

  if(is_uploaded_file($_FILES['image']['tmp_name']))
  {
    $size = $_FILES['image']['size'];

    if($size > $max_size)
    {
      echo 'File Too Large. File must be no larger than <b>'.$max_size.'</b> bytes.';
      exit;
    }
    $filename = $_FILES['image']['name'];

    if(file_exists($upload_dir.$filename))
    {
      echo 'Error: The file named <b>'.$filename.'</b> already exists.';
      exit;
    }
    if(move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir.$filename))
    {
      echo 'Your image uploaded successfully!<br /><br />Preview: <br /><img src="'.$upload_dir.$filename.'" border="0"><br /><br >Link to your image: <a target="_blank" href="/'.$upload_dir.$filename.'">'.$filename.'</a>';
    }
    else
    {
      echo 'There was a problem uploading your file. Please try again.';
    }
  }
}
?>

</body>
</html>

how do i make it so it shows the url too not just file name hyperlinked to it and so it randomizes the file name
 
0
•••
...

PHP:
<html>
<head>
<title>Image upload</title>
</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Image: <input type="file" name="image" size="20"> <input type="submit" name="submit" value="Upload">
</form>

<?php

if(isset($_POST['submit']) && $_POST['submit'] != "")
{
  //The directory to upload the images - Must be writable CHMOD 777
  $upload_dir = "images/";
  //100kb - What size do you want to allow to be uploaded
  $max_size = 100000;

  if(is_uploaded_file($_FILES['image']['tmp_name']))
  {
    $size = $_FILES['image']['size'];

    if($size > $max_size)
    {
      echo 'File Too Large. File must be no larger than <b>'.$max_size.'</b> bytes.';
      exit;
    }
    $filename = $_FILES['image']['name'];

    if(file_exists($upload_dir.$filename))
    {
      echo 'Error: The file named <b>'.$filename.'</b> already exists.';
      exit;
    }
    if(move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir.$filename))
    {
      echo 'Your image uploaded successfully!<br /><br />Preview: <br /><img src="'.$upload_dir.$filename'" border="0"><br /><br >Link to your image: <input type="text" value="http://www.mydomain.com/'.$upload_dir.$filename.'">';
    }
    else
    {
      echo 'There was a problem uploading your file. Please try again.';
    }
  }
}
?>

</body>
</html>

???
 
0
•••
dose not work it shows a blank page
 
0
•••
0
•••
Simple PHP Upload

Simple PHP Upload Script. It has only one .php file. You can limit file size, and file MIME type.


Code:
<?php
//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//   You may change maxsize, and allowable upload file types.
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//Mmaximum file size. You may increase or decrease.
$MAX_SIZE = 2000000;
                            
//Allowable file ext. names. you may add more extension names.            
$FILE_EXTS  = array('.zip','.jpg','.png','.gif','.doc'); 

//Allow file delete? no, if only allow upload only
$DELETABLE  = true;                               


//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//   Do not touch the below if you are not confident.
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/************************************************************
 *     Setup variables
 ************************************************************/
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
$url_this =  "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

$upload_dir = "files/";
$upload_url = $url_dir."/files/";
$message ="";

/************************************************************
 *     Create Upload Directory
 ************************************************************/
if (!is_dir("files")) {
  if (!mkdir($upload_dir))
  	die ("upload_files directory doesn't exist and creation failed");
  if (!chmod($upload_dir,0755))
  	die ("change permission to 755 failed.");
}

/************************************************************
 *     Process User's Request
 ************************************************************/
if ($_REQUEST[del] && $DELETABLE)  {
  $resource = fopen("log.txt","a");
  fwrite($resource,date("Ymd h:i:s")."DELETE - $_SERVER[REMOTE_ADDR]"."$_REQUEST[del]\n");
  fclose($resource);
  
  if (strpos($_REQUEST[del],"/.")>0);                  //possible hacking
  else if (strpos($_REQUEST[del],$upload_dir) === false); //possible hacking
  else if (substr($_REQUEST[del],0,6)==$upload_dir) {
    unlink($_REQUEST[del]);
    print "<script>window.location.href='$url_this?message=deleted successfully'</script>";
  }
}
else if ($_FILES['userfile']) {
  $resource = fopen("log.txt","a");
  fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]"
            .$_FILES['userfile']['name']." "
            .$_FILES['userfile']['type']."\n");
  fclose($resource);

  $file_type = $_FILES['userfile']['type']; 
  $file_name = $_FILES['userfile']['name'];
  $file_ext = strtolower(substr($file_name,strrpos($file_name,".")));

  //File Size Check
  if ( $_FILES['userfile']['size'] > $MAX_SIZE) 
     $message = "The file size is over 2MB.";
  //File Extension Check
  else if (!in_array($file_ext, $FILE_EXTS))
     $message = "Sorry, $file_name($file_type) is not allowed to be uploaded.";
  else
     $message = do_upload($upload_dir, $upload_url);
  
  print "<script>window.location.href='$url_this?message=$message'</script>";
}
else if (!$_FILES['userfile']);
else 
	$message = "Invalid File Specified.";

/************************************************************
 *     List Files
 ************************************************************/
$handle=opendir($upload_dir);
$filelist = "";
while ($file = readdir($handle)) {
   if(!is_dir($file) && !is_link($file)) {
      $filelist .= "<a href='$upload_dir$file'>".$file."</a>";
      if ($DELETABLE)
        $filelist .= " <a href='?del=$upload_dir".urlencode($file)."' title='delete'>x</a>";
      $filelist .= "<sub><small><small><font color=grey>  ".date("d-m H:i", filemtime($upload_dir.$file))
                   ."</font></small></small></sub>";
      $filelist .="<br>";
   }
}

function do_upload($upload_dir, $upload_url) {

	$temp_name = $_FILES['userfile']['tmp_name'];
	$file_name = $_FILES['userfile']['name']; 
  $file_name = str_replace("\\","",$file_name);
  $file_name = str_replace("'","",$file_name);
	$file_path = $upload_dir.$file_name;

	//File Name Check
  if ( $file_name =="") { 
  	$message = "Invalid File Name Specified";
  	return $message;
  }

  $result  =  move_uploaded_file($temp_name, $file_path);
  if (!chmod($file_path,0777))
   	$message = "change permission to 777 failed.";
  else
    $message = ($result)?"$file_name uploaded successfully." :
     	      "Somthing is wrong with uploading a file.";
  return $message;
}

?>

<center>
   <font color=red><?=$_REQUEST[message]?></font>
   <br>
   <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
     Upload File <input type="file" id="userfile" name="userfile">
     <input type="submit" name="upload" value="Upload">
   </form>
   
   <br><b>My Files</b>
   <hr width=70%>
   <?=$filelist?>
   <hr width=70%>
   <small><sup>Developed By 
   <a style="text-decoration:none" href="http://www.namepros.com">namepros.com</a>
   </sup></small>
</center>
 
0
•••
  • The sidebar remains visible by scrolling at a speed relative to the page’s height.
Back