» »

Problem pri php upload skripti

Problem pri php upload skripti

mason6 ::

Zdravo. Potrebujem php skripto, ki omogoča nalaganje datotek na nek direktorij. To seveda ni problem, ampak iščem še nekaj takega, da bi mi po prenosu datoteke na strežnik, spodaj izpisalo seznam datotek, ki so bile naložene, po možnosti z brisanjem.
Eno takšno skripto sem sicer našel, ki naj bi omogočala vse kar hočem, vendar ne deluje prikaz datotek na strani, posledično pa tudi ne deluje brisanje. Podatke sicer skripta beleži v log file, ampak rad bi, da jih prikaže na strani.
Prosim za pomoč.

Koda:
<?php

//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

//   You may change maxsize, and allowable upload file types.

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

//Mmaximum file size. You may increase or decrease.

$MAX_SIZE = 10000000;

                            

//Allowable file ext. names. you may add more extension names.            

$FILE_EXTS  = array('.zip','.jpg','.png','.gif','.doc','.xls','.pdf','.psd','.png','.txt'); 



//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 10MB.";

  //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> - URL: <b>$upload_url$file</b>";

      if ($DELETABLE)

        

      $filelist .= " Added at  ".date("d-m H:i", filemtime($upload_dir.$file))

                   ."";

$filelist .= " <a style='text-decoration:none; font-weight:bold'  href='?del=$upload_dir".urlencode($file)."' title='delete'>x</a>";

      $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 was uploaded successfully." :

               "Something is wrong with uploading the file.";

  return $message;

}



?>





<html>

<head>

<title>Simple uploader</title>

<link rel=stylesheet href=style.css>

</head>

<body>

<br><br>

<center>

   <font color=red><?=$_REQUEST[message]?></font>

   <br>

   <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">

     Objavi datoteko <input type="file" id="userfile" name="userfile">

     <input type="submit" name="upload" value="Objavi">

   </form>

   

   <br><b><u>Objavljene datoteke:</b></u><br><br>



   <?=$filelist?><br>

   <a style="text-decoration:none" </a>

   </sup></small>

</center>

Tody ::

Tole kar piše v 279 vrstici niti v sanjah ne more biti prav :) Probaj kak echo če ne drugega

paco ::

Zakaj ne?

Ti mogoče javi kakšno napako?
Poskusi v php.ini nastaviti vrednost short_open_tag na On.
It iz aj.

MrBrdo ::

Tody še nisi videl
<?=

taga? :) Ne pisat "niti v sanjah" če nisi prepričan hehe.

Drgač pa @OP, se bo treba naučit programirat, ane ;)
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

Tody ::

ja sem se spomnu na to opcijo ko sem pritisnu send... jeba pač ne sledim trendom :)

se posipam s pepelom če komu to pomaga :D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

2 ftp serverja

Oddelek: Omrežja in internet
111686 (1281) knesz
»

Ftp batch jobs - preglednost

Oddelek: Programska oprema
6625 (558) psychoshorty
»

Odkrita nova Flash ranljivost, ki ugrabi odložišče (strani: 1 2 )

Oddelek: Novice / Varnost
538944 (4749) r0b3rt
»

[PHP] Zend engine?

Oddelek: Programiranje
81617 (1462) Gandalfar
»

forum...

Oddelek: Izdelava spletišč
101124 (898) nemesis

Več podobnih tem