Click here to download the source file.

<?php
error_reporting
(-1); // ALL messages 
ini_set('display_errors''On');

//################################################
//########### STRING UPLOAD ######################
//################################################

$params "No params";
$entityBody file_get_contents('php://input');
if (isset(
$_POST["postparam"]))
{
    
$params "Params : ";
    foreach (
$_POST["postparam"] as $_item)
    {
        
$params .= htmlspecialchars($_item).", ";
    }
}


//################################################
//########### FILE UPLOAD ########################
//################################################

$FilesUploaded "No file received";
$upload_dir 'upload/';

if(isset(
$_FILES['file']))
{
    
$file basename($_FILES['file']['name']);
    
$max_size 1000000;
    
$file_size filesize($_FILES['file']['tmp_name']);
    
$allowed_extensions = array('.txt''.jpg''.jpeg','.txt','.csv','.png');
    
$extension strrchr($_FILES['file']['name'], '.');

    if (
$file != ""//could occur if no file is uploaded from HTML form
    
{
        if(!
in_array($extension$allowed_extensions)) //Check extension
             
$FilesUploaded 'Only extension txt, jpg, jpeg, txt, csv and png are allowed (Extension used ' .$extension ').' ;

        
//if($file_size>$max_size)
            // $FilesUploaded = 'File too big';

        
if($FilesUploaded == "No file received"//If no error, start upload
        
{
             
//format file name
             
$file strtr($file,
                  
'����������������������������������������������������',
                  
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
             
$file preg_replace('/([^.a-z0-9]+)/i''-'$file);

             if(
move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir $_SERVER['REMOTE_ADDR']."_".$file)) //If true is returned -> it worked
             
{
                  
$FilesUploaded " File uploaded :"$file." (Click <a href='upload/".$_SERVER['REMOTE_ADDR']."_".$file."'>here</a> to access the file)";
                  echo 
"File Uploaded successfully";
             }
             else {
//if false, upload has failed
                  
echo "File Upload failed (eWON return code : POSTERROR)";
             }
        }
        else {
             echo 
$FilesUploaded." (eWON return code : POSTERROR)";
        }

    }
}

//################################################
//########### LOG RESULT #########################
//################################################

 //remove uploaded file and log file if filesize > 3 kb
if (file_exists('postresults.txt'))
{
    if (
filesize('postresults.txt') > 3000)
        
clearAll();
}

//Log headers
$fp fopen($upload_dir.$_SERVER['REMOTE_ADDR'].'_headers.txt''a');
fwrite($fp"####### ".date('Y-m-d H:m:s')."#######\n");
foreach (
getallheaders() as $name => $value) {
    
fwrite($fp"$name$value\n");
}
fwrite($fp$entityBody."\n");
fwrite($fp"#####################################\r\n");
fclose($fp);
$headerLink "(View <a href='".$upload_dir.$_SERVER['REMOTE_ADDR']."_headers.txt'/>headers</a>)";

//log result in file
$fp fopen('postresults.txt''a');
    
fwrite($fpdate('Y-m-d H:m:s')." [".$_SERVER['REMOTE_ADDR']."]"." : ".$params." ".$FilesUploaded." ".$headerLink."\r\n");
fclose($fp);

//remove uploaded file and log file on demand
if (isset($_POST["clearlist"]))
    
clearAll();

    
//redirect to main page
    //header('Location: index.php');
    
echo '<meta http-equiv="refresh" content="0;URL=/post">';


function 
clearAll()
{
    try
    {
      
deleteDir('upload');
      
mkdir('upload');
      
unlink('postresults.txt');
    }
    catch(
Exception $e)
    {}
}

function 
deleteDir($dirPath) {
    if (! 
is_dir($dirPath)) {
        throw new 
InvalidArgumentException("$dirPath must be a directory");
    }
    if (
substr($dirPathstrlen($dirPath) - 11) != '/') {
        
$dirPath .= '/';
    }
    
$files glob($dirPath '*'GLOB_MARK);
    foreach (
$files as $file) {
        if (
is_dir($file)) {
            
$this::deleteDir($file);
        } else {
            
unlink($file);
        }
    }
    
rmdir($dirPath);
}

?>