Intrebare script upload

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
Avatar utilizator
steell
Mesaje: 190

Intrebare script upload

salut. am luat scriptul acesta de upload de pe site

Cod: Selectaţi tot

<?php 
// 1. Creati intai directorul cu numele 'upload' (in acelasi director cu pagina dv. de upload) in care se vor copia fisierele
// 2. Acordati directorului 'upload' permisiuni CHMOD 0777
// 3. introduceti tot acest cod intr-un fisier .php 

// Aici puteti modifica numele directorului de upload (daca ati pus alt nume)
$uploadpath = "upload/";

// Aici este setata marimea maxima, in KiloBytes, care este permisa (dar marime maxima depinde si de setarile serverului)
$max_size = 300000;

// Aici puteti schimba tipul, extensia fisierelor permise pt. upload
$allowtype = array('bmp', 'flv', 'gif', 'jpg', 'jpeg', 'mp3', 'pdf', 'png', 'rar', 'zip', 'MPEG', 'exe', 'txt');

if(isset($_POST['submit'])) {
  if (isset ($_FILES['fisiere'])) {
    $uploadpath = $uploadpath . basename( $_FILES['fisiere']['name']);
    $type = end(explode(".", strtolower($_FILES['fisiere']['name'])));

    // Daca fisierul are extensia permisa
    if (in_array($type, $allowtype)) {
      // Verifica daca fisierul are marimea permisa
      if ($_FILES['fisiere']['size']<=$max_size*1000) {
        if(move_uploaded_file($_FILES['fisiere']['tmp_name'], $uploadpath)) { 
          echo "Fisierul:<b> ". basename( $_FILES['fisiere']['name']). "</b> a fost incarcat cu succes:"; 
          echo "<br />Tipul fisieului:<b> ". $_FILES['fisiere']['type'] ."</b>"; 
          echo "<br />Marime  (<i>in Bytes</i>): <b>". $_FILES['fisiere']['size'] ."</b><br /><br />";
          echo 'Link catre fisierul incarcat: <b>http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']).'/'.$uploadpath.'</b>';
        }
        else { 
          echo "<b>A aparut o eroare la urcarea fisierului pe server, <br /> posibil ca marimea fisierului sa depaseasca permisiunile setate de server.</b>"; 
        }
      }
      else { echo 'Fisierul <b>'. $_FILES['fisiere']['name']. '</b> depaseste marimea permisa de maxim <i><b>'. $max_size. 'KB</b></i>'; }
    }
    else { echo 'Fisierul <b>'. $_FILES['fisiere']['name']. '</b> nu are tipul de extensie permis'; }
  }
}
?>
problema e ca dupa ce incarc un fisier imi arat un \ in plus la linku fisierului uploadat imediat dupa localhost :
Fisierul: banana.jpg a fost incarcat cu succes:
Tipul fisieului: image/jpeg
Marime (in Bytes): 23293

Link catre fisierul incarcat: https://marplo.net\/upload/banana.jpg

Inca o intrebare: am gsit in formularul de upload acest cod

Cod: Selectaţi tot

enctype="multipart/form-data"
ce face?

MarPlo Mesaje: 4343
Salut
Multumesc pt. observatie, am corectat in script-ul de pe site ca sa nu mai apara "\" sau "/" in plus dupa numele domeniului.
Trebuie inlocuit codul:

Cod: Selectaţi tot

dirname($_SERVER['REQUEST_URI'])
Cu acesta:

Cod: Selectaţi tot

rtrim(dirname($_SERVER['REQUEST_URI']), '\\/')
- Sau descarci din nou scriptul.

Codul: enctype="multipart/form-data" se adaga in formularele folosite pt. upload ca sa poata fi transmis la server fisierul adaugat in formular si date despre el (cum ar fi: marimea, tipul), si specifica tipul de codare a datelor.
Fara acesta, formularul trimite doar datele /textul din casute, fara fisier.

Subiecte similare