• User

    errore strano

    salve a tutti, in questi giorni sto creando uno script in php tramite un prescript, per scaricare i file dall'interno del mio ftp senza dover linkare i vari file su una pagina in html.

    riscontro questo errore:

    Warning: basename() expects parameter 1 to be string, array given in /web/htdocs/localhost/home/download/index.php on line 74

    Vi riporto di seguito le line di prog:

    
    linea 73  {
    linea 74  $unit = basename($dir_unit);
    linea 75  $dots = dots($dir_unit);
    linea 76  if (is_file($dir_unit) && is_readable($dir_unit)) //if it's a _readable_ file
    linea 77 {
    
    

    Spero che qualcuno di voi possa aiutarmi a risolvere il problema.
    Grazie a tutti in anticipo


  • User Attivo

    Cosa c'è il $dir_unit???
    Sembra che gli passi un array e lui si aspetta una stringa.

    Semmai posta dove lo inizializzi!


  • User

    il problema è che lo script l'ho preso già pronto, c'è la possibilità di usarlo con db e senza e io ho scelto di uttilizzarlo senza, quindi vi dovrai postare tutta la pagina?? è lunghissima.!!! :bho:

    <?php
    $DIR_NAME  = dirname($PHP_SELF);
    $FILE_NAME = basename($PHP_SELF);
    //where the 2 gif files (dir.gif and file.gif) are stored. Modify as you want
    $BASE = "../supportotecnico/assets";
    $DIRECT_GIF  = "$BASE/direct.gif";
    $DIR_GIF     = "$BASE/dir.gif";
    $FILE_GIF    = "$BASE/file.gif";
    $MAX = 60;
    //thanks to Ly0n
    if (!isset($dir))
    {
     if(!isset($HTTP_GET_VARS['dir']))  $dir=".";
     else        $dir = $HTTP_GET_VARS['dir'];
    }
    if (empty($dir)) $dir=".";
    //Ly0n's ultrafast security patch. Many thanks for that.
    if (!($dir{0} == '.' && stristr($dir, '..') == false))
    {
     die('hacking attempt');
    }
    //thanks to Ly0n
    if(!is_dir($dir))
    {
     die("$dir is not a valid dir");
    }
    $cwd = preg_replace("/\/\./","","$DIR_NAME/$dir");
    print <<< END
    <table>
    <tr><td valign="absmiddle"><h1 class="tgtitre">$title</h1></td></tr>
    <tr><td  valign="center"><h1 class="tgtexte">Ti trovi nella cartella: $cwd</h1></td></tr>
    </table>
    <hr>
    END;
    print "<pre><table>";
    print_parent_dir();
    $handle = @opendir($dir);
    //thanks to Ly0n
    if(!handle)
    {
     die("there was an error opening the dir $dir");
    }
    $unitsArray[] = array(); //directory entries: files and directories
    while (false !== ($unit = readdir($handle))) 
    { 
     $dir_unit = "$dir/$unit";
     if ($unit != "." && $unit != ".." && $unit != $FILE_NAME && $unit !="common.inc" && $unit !="config.inc" && $unit !="connect.inc" && $unit !="errors.inc" &&  $unit !="login_form.inc" && $unit !="access_control.inc" && $unit !="assets" && $unit !="admin" && $unit !="_do_not_delete")
     {
      $unitsArray[] = $dir_unit;
     } 
    }
    closedir($handle);
    sort($unitsArray);
    reset($unitsArray);
    foreach ($unitsArray as $dir_unit)
    {
    ** $unit = basename($dir_unit);**
     $dots = dots($dir_unit);
     if (is_file($dir_unit) && is_readable($dir_unit)) //if it's a _readable_ file
     {
      $file_size = file_size_to_str(filesize($dir_unit));
      print <<< END
      <tr onmouseover="this.style.backgroundColor = '#D4D4D4'" onmouseout="this.style.backgroundColor = ''">
       <td><img src="$FILE_GIF" alt="[FILE]" align="absmiddle"> <a href="$dir_unit"><font class="parent1">$unit</a>$dots [ $file_size bytes ]</font></td>
      </tr>
    END;
     }
     elseif (is_dir($dir_unit) && @opendir($dir_unit)) //if it's a dir. and could be opened
     {
      if (file_exists("$dir_unit/$FILE_NAME")) $dir_link="$dir_unit/$FILE_NAME";
      else $dir_link = "$PHP_SELF?dir=$dir_unit";
      print <<< END
      <tr onmouseover="this.style.backgroundColor = '#D4D4D4'" onmouseout="this.style.backgroundColor = ''">
       <td><img src="$DIR_GIF" alt="[DIR] " align="absmiddle"> <a href="$dir_link"><font class="parent1">$unit</font></a>$dots [ DIR ]</font></td>
      </tr>
    END;
     }
    }
    print "</table></p>";
    function print_parent_dir()
    {
     global $dir; global $FILE_NAME; global $PHP_SELF; global $DIR_GIF; global $cwd; global $DIRECT_GIF;
     preg_match("/(.*)\/(.*)$/",$dir,$matches);
     $parent_dir  = $matches[1];
     if ($dir=="." && !file_exists("../$FILE_NAME")) return;
     //else
     
     if (strcmp($dir,".")) // !=
     {
      print "<tr><td><img src=\"$DIRECT_GIF\" alt=\"[DIR] \" align=\"absmiddle\"> <a class=\"parent2\" href=\"$PHP_SELF?dir=$parent_dir\">Parent Directory</a></td></tr>\n";
     }
    }
    function dots($file)
    {
     global $MAX;
     $length = strlen($file);
     $dot = 1;
     for ($i=0; $i<$MAX-$length; ++$i)
     {
      $dot==1 ? $line.='.' : $line.=' ';
      $dot = 1 - $dot;
     }
     return strrev($line);
    }
    function file_size_to_str($size)
    {
     $str = "$size";
     $str = strrev($str);
     for ($i=0; $i<strlen($str); ++$i)
     {
      if ($i%3==0 && $i!=0) $new_str.=',';
      $new_str.=$str*;
     }
     return strrev($new_str);
    }
    ?>
    

    ho evidenziato di rosso la stringa che vi ho postato prima così avete un punto di partenza. Grazie a tutti per l'aiuto Senamion, sei molto gentile.;)


  • User

    ho risolto, è bastato togliere questa stringa: $unitsArray[] = array(); //directory entries: files and directories

    Grazie mille 😉