Newsgroup: it.lavoro.professioni.webmaster
Titolo: basename() in php

Ciao.
Perchè se faccio così:
$path = "dir/index.php";
$file = basename ("$path");
echo $file;
ottengo cose del genere:
phpA3.tmp , phpA4.tmp , ecc.?
Non dovrei ottenere:
index.php ?
Grazie.

 $file = basename ($path);
se $path l'hai dichiarata implicitamente già stringa?
Credo che questa cosa con il problema non c'entri na mazza... però prova.
In ultimo, prova a vedere se c'e' qualche settaggio da mettere apposto sul
php.ini o al limite sull'httpd.conf di apache... se stai usando apache...
:-)
Buon lavoro
Mauro Cecamore
----------------------------------
http://www.digitalavenues.org
----------------------------------

 php.ini o al limite sull'httpd.conf di apache... se stai usando apache...
Ad essere sincero non saprei dove mettere mano per modificare un parametro
che
abbia a che fare col mio problema.
Ma ho scoperto anche che se scelgo un file da form con un input="file",
il percorso c:\programmi\easyphp\www\sito\images\img.jpg
mi viene trasformato in: c\programmi\easyphp\tmp\phpf9.tmp
e nella pagina ottenuta con phpinfo() si legge:
upload_tmp_dir = c:\programmi\easyphp\tmp\
Ma la variabile che io mando da form è il percorso del mio file
non quello di upload_tmp_dir!
Mah!!!

 Mah!!!
Questo infatti e' corretto.
Guarda che il campo <input type="file"> e' un campo utilizzato per fare
l'upload dei file, ed i file uploadati vengono in principio copiati
nella cartella di upload impostata nel php.ini.
Successivamente per sposrati e rinominarli e' necessario utilizzare le
funzioni per la gestione dell'upload di PHP, nel manuiale c'e' una
sezione dedicata solo a quello.
-- 
I'am what I'am, I do what I can

 sezione dedicata solo a quello.
Ok ...
Questo è il codice che stavo scrivendo per l'upload:
$path="download/";
$nome_file=basename($file);    \\ $file = percorso del file inviato da form
if ( ! is_dir($path) ) {
if ( ! @mkdir ($path, 0777) )
{ echo "Impossibile creare la directory 'download'"; }
}
if ( ! copy ($file, $path.$nome_file) ) {
echo "Impossibile fare l'upload del file";
}
Succede che mi copia il file ma me lo rinomina:
per esempio, se $nome_file è index.php , me lo copia
ma lo rinomina phpA3.tmp
E questo non riesco a capire perchè!

 E questo non riesco a capire perchh!
Allo, quando fai l'upload il php salva il file temporaneamente nella
cartella definita come uploaddir, e gli da un nome TEMPORANEO univoco,
in modo da scongiurare la possibilita' che vada a sovrascrivere un file
gia' presente.
Copio paro paro dal manuale del PHP
<?php 
// In PHP 4.1.0 or later, $_FILES should be used instead of
$HTTP_POST_FILES.
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
    copy($HTTP_POST_FILES['userfile']['tmp_name'],
"/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack. Filename: " .
$HTTP_POST_FILES['userfile']['name'];
}
/* ...or... */
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],
"/place/to/put/uploaded/file");
?>
 
Come puoi vedere viene utilizzato
$HTTP_POST_FILES['userfile']['tmp_name'] ( o
$_FILES['userfile']['tmp_name'] per PHP 4.1.0 e successivi) che e'
esattamente il nome del file temporaneo salvato.
Ti suggerisco di utilizzare la funzione move_uploaded_file al posto di
copy in quanto questa non funziona se safe_mode e' impostato ad on.
Per una domanda cosi' tecnica ti suggerisco di utilizzare un newsgroup
piu' specifico ( es it.comp.www.php )
Saluti.
P.S.
Per risolvere il tuo "problema" era sufficiente una letta al manuale.
Ti suggerisco di scaricarti la versione CHM dal sito del PHP.


 Ti suggerisco di scaricarti la versione CHM dal sito del PHP.
Letto ma forse con troppa fretta :)

 echo $file;
Non so a cosa serve quella funzione esattametne, ma se ti serve solamente di
estrarre il nome del file da un percorso:
function get_filename($PATH){
  $L=strlen($PATH);
  $C=0;
  $F="";
  while ($C<$L) {
    $CH=substr($PATH,$L-$C-1,1);
    if (($CH!="\\")&&($CH!="/")) $F=$CH.$F;
      else $C=$L;
    $C++;
  }
  return $F;
}
Questo dovrebbe funzionare.
Ciao.

 Non mi ha risposto nessuno :(
Tieni conto che siamo in pieno periodo di ferie e che la tua domanda e'
errata e di difficile interpretazione.
