Upload script - eroare end()

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
onu
Mesaje: 11

Upload script - eroare end()

am si eu o problema la scriptul pentru upload , adica merge dar imi da o eroare .
+ am editat putin scriptul - Upload in director + alte foldere din director
Eroare: on line 30 - mai exact $type = end(explode(".", strtolower($_FILES['fisiere']['name'])));

aici aveti tot scriptul.

Cod: Selectaţi tot

&nbsp;&nbsp;Ubload in fisierul <b>Sound</b>
 <br/>
  &nbsp;&nbsp;<b>Extensi Permise:</b>  mp3 , wav , txt
<?php 
@error_reporting(E_STRICT);
// Script de la https://marplo.net/php-mysql/ (Transfera fisiere pe server)

// 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)

if($_POST['upload_in'] != "sound") { 
$uploadpath = "cstrike/sound/";
// Aici este setata marimea maxima, in KiloBytes, care este permisa (dar marime maxima depinde si de setarile serverului)
$max_size = 99999999999999;
// Aici puteti schimba tipul, extensia fisierelor permise pt. upload
$allowtype = array( 'mp3' , 'wav','txt');
} else {
$uploadpath = "cstrike/";
// Aici este setata marimea maxima, in KiloBytes, care este permisa (dar marime maxima depinde si de setarile serverului)
$max_size = 99999999999999;
// Aici puteti schimba tipul, extensia fisierelor permise pt. upload
$allowtype = array('mp3','wav','txt');
}

if(isset($_POST['submit'])) {
  if (isset ($_FILES['fisiere']) AND (isset($_POST['upload_in']))) {
    $uploadpath = $uploadpath . $_POST['upload_in'] . "/" .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 "<br/><br/> Fisierul a fost uploadat in ".$_POST['upload_in'];
          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'; }
  }
}
?> 

<div style="width:333px; text-align:center;">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data"> 
<b>Upload Fisier:</b>
<input type="file" name="fisiere" /> <br />Uploadeaza fisier in : 
<select name="upload_in">
<option value="sound">Folder Root</option>
<option value="ambience">ambience</option>
<option value="de_torn">de_torn</option>
<option value="events">events</option>
<option value="hostage">hostage</option>
<option value="misc">misc</option>
<option value="plats">plats</option>
<option value="player">player</option>
<option value="radio">radio</option>
<option value="weapons">weapons</option>
<option value="items">items</option>
<option value="storm">storm</option>
<option value="zombie_plague">zombie_plague</option>
<option value="wpnmod">wpnmod</option>
<option value="warcraft3">warcraft3</option>
<option value="purchasemod">purchasemod</option>
<option value="miscz">miscz</option>
<option value="killing_floor">killing_floor</option>
<option value="Killing Floor">Killing Floor</option>
<option value="djeyl">djeyl</option>
<option value="chainsaw">chainsaw</option>
<option value="biohazard">biohazard</option>
</select>
<input type="submit" name='submit' value="Upload" /> 
</form>
</div>
Ajutatima va rog .
Multumesc Anticipat

MarPlo Mesaje: 4343
Salut,
Acea eroare e de la un "bug" PHP, https://bugs.php.net/bug.php?id=48937" target="_blank .
Se poate rezolva inlocuind linia de cod:

Cod: Selectaţi tot

$type = end(explode(".", strtolower($_FILES['fisiere']['name'])));
Cu:

Cod: Selectaţi tot

$ar_type = explode(".", strtolower($_FILES['fisiere']['name']));
$type = end($ar_type);

onu Mesaje: 11
Multumesc foarte mult !
nu mai da eroare

poti pune scriptul si pe site , mie 1 mia dat cv batai de cap si mi se pare f.bun scriptul

Script:

Cod: Selectaţi tot

&nbsp;&nbsp;Ubload in fisierul <b>Sound</b>
 <br/>
  &nbsp;&nbsp;<b>Extensi Permise:</b>  mp3 , wav , txt
<?php 
@error_reporting(E_STRICT);
// Script de la https://marplo.net/php-mysql/ (Transfera fisiere pe server)

// 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)

if($_POST['upload_in'] != "sound") { 
$uploadpath = "cstrike/sound/";
// Aici este setata marimea maxima, in KiloBytes, care este permisa (dar marime maxima depinde si de setarile serverului)
$max_size = 99999999999999;
// Aici puteti schimba tipul, extensia fisierelor permise pt. upload
$allowtype = array( 'mp3' , 'wav','txt');
} else {
$uploadpath = "cstrike/";
// Aici este setata marimea maxima, in KiloBytes, care este permisa (dar marime maxima depinde si de setarile serverului)
$max_size = 99999999999999;
// Aici puteti schimba tipul, extensia fisierelor permise pt. upload
$allowtype = array('mp3','wav','txt');
}

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

    
    // 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 "<br/><br/> Fisierul a fost uploadat in ".$_POST['upload_in'];
          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'; }
  }
}
?> 

<div style="width:333px; text-align:center;">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data"> 
<b>Upload Fisier:</b>
<input type="file" name="fisiere" /> <br />Uploadeaza fisier in : 
<select name="upload_in">
<option value="sound">Folder Root</option>
<option value="folder1">folder1</option>
<option value="folder2">folder2</option>
<option value="folder3">folder3</option>
</select>
<input type="submit" name='submit' value="Upload" /> 
</form>
</div>

Subiecte similare