Presentazione e piccolo aiuto

franch82

Nuovo Utente
5 Ott 2014
16
0
1
Salve a tutti,
Sono un novellino in campo php, ho creato qualche sito anni fà ed ora mi è venuta voglia di smanettare un pò...
Spero di aver inserito la discussione nel posto giusto, nel caso sia già stata scritta chiedo agli amministratori di eliminarla.
Ho una pagina download.php che mi fà comparire i file di una cartella in ordine di inserimento ecc... l'unico problema è che non me li fà scaricare, cioè compare il nome del file cliccabile ma non parte il download... qualcuno sà dirmi come posso fare?

Grazie mille

Ps. Modifico il messaggio aggiungendo il codice che ho eseguito

PHP:
<?php

$dir = "dir/";

if (is_dir($dir)) {

if ($oggetto_dir = opendir($dir)) {

while (($file = readdir($oggetto_dir)) !== false) {

if ( $file != "." && $file != ".." && !is_dir($file)) {

echo "<a href=\"{$fileName}\">{$file}</a> - {$file}<br>";

}

}

closedir($oggetto_dir);

}

}

?>
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, hai scritto $fileName al posto di $file, in più credo dovresti indicare anche la directory
PHP:
echo "<a href=\"$dir/$file\">{$file}</a> - {$file}<br>";
le graffe non servono
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
Eccomi di nuovo qui, non vi arrabiate se sbaglio... :crying:

PHP:
<?php
require ('files_upload.inc');

#seting class;
#images_upload(upload directory, max filesize, files info - filename);

$upload = new images_upload('upload/', 100000, 'info.dat');
?>
<a href="files_list.php">files list</a> 

<HTML>
<FORM action="" method="post" enctype="multipart/form-data">
<INPUT type="file" name="up_file">
<INPUT type="text" name="up_file_desc"><br>
<INPUT type="submit">
</FORM>
</HTML>
<?

# it's good becouse you dont need to set vars by your self you only set to upload all $_FILES 
# file upload you need set fields name for file like 'file' for description 'file1_desc'
$upload->upload();

if (is_array($upload->errors)) {
	foreach  ($upload->errors as $val){
		echo $val;
	}   
}

?>

seconda pagina

PHP:
<?php
require ('files_upload.inc');

#seting class;
#images_upload(upload directory, max filesize, files info - filename);

$upload = new images_upload('upload/', 100000, 'info.dat');

#seting files url;
$photo_url = "upload/";

//chek if file need to be deleted
//$_GET[del] = one index of files array 
if ($_GET[del]) {
    $upload->del($_GET[del]);
}

#geting files info from file info.dat
$photo_list = $upload->read_data();
#creating link's
foreach ($photo_list as $key=>$val){
	$input .= "<a href='".$photo_url.$key."' target=_blank>".$val['desc']."</a> | <a href='files_list.php?del=$key'>Delete file</a><br>";
}

?>
<HTML>
<a href="file_upload.php">file Upload</a>
<br>
<br>
<? echo $input?>
</HTML>
terza pagina
PHP:
<?php
class images_upload{
	var $directory;
	function images_upload($directory, $maxsize, $filename){
		$this->filename = $directory . $filename;
		$this->directoryname = $directory;
		$this->contents = array();
		$this->max_file_size = $maxsize;
		$this->errors = array();
	}
	
	function read_data(){
		if(file_exists($this->filename)){
			$fp = fopen ($this->filename, 'r');
			$contents = fread ($fp, filesize($this->filename));
			fclose ($fp); 
			$contents = unserialize($contents);
		}else{array_push($this->errors, "error file ". $this->filename ." not exist");}
		return $contents;
	}

	function write_data($contents){
		$contents = serialize($contents);
		$fp = fopen($this->filename, 'w');
		fwrite($fp, $contents);
		fclose($fp);
	}

	function register_data($var){
		if (file_exists($this->filename)){$data = $this->read_data();}
		if(is_array($var)){
			if($data){$this->write_data($data+$var);}
			else{$this->write_data($var);}
		}
	}

	function unregister_data($var){
		if (file_exists($this->filename)){$data = $this->read_data();}
		if($var){
			unset($data[$var]);
			if($data){$this->write_data($data);}
		}
	}
	function del($file){
		$this->unregister_data($file);
		unlink($this->directoryname . $file);
	}
	
	function upload(){
		foreach($_FILES as $key=>$val){
			if($this->max_file_size>=$_FILES[$key]['size']){
				if (is_uploaded_file($_FILES[$key]['tmp_name'])){
					$filename = time() . $_FILES[$key]['name'];
					move_uploaded_file($_FILES[$key]['tmp_name'], $this->directoryname . $filename);
					$data_plus[$filename] = $_FILES[$key]+array('desc'=>$_POST[$key.'_desc']);
				}else{array_push($this->errors, "File not uploadet");}
			}else{array_push($this->errors, "File size is to big");}	
		}
		$this->register_data($data_plus);
	}	 
}

?>
Mi sapete dire xkè mi dà errore quando vado ad eliminare i vari file?
 
Ultima modifica di un moderatore:

franch82

Nuovo Utente
5 Ott 2014
16
0
1
almeno mi sapete dire dove devo andare per modificare i parametri di inserimento file? tipo di file, grandezza ecc...
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
almeno mi sapete dire dove devo andare per modificare i parametri di inserimento file? tipo di file, grandezza ecc...

hai tag php nel formato "<?" che potrebbero non funzionare, è meglio che tu li metta nel formato "<?php", controlla tutti gli script che hai postato

se poi posti il messaggio d'errore, in quale script succede e a quale riga, è più facile risolvere
altrimenti è necessario provare l'intero set di script che hai postato, con l'aggravante di non avere tutte le parti incluse
ciao
Marino
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
provo a inserire i tag nel formato <?php... ti faccio sapere gli errori... ma per modificare l'estenzione del file e il peso caricabile ecc.. sai come posso agire?
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
ecco l'errore che mi dà quando tento di eliminare l'unico file caricato...

Warning: unlink(upload/1412797002GoogleEarthSetup.exe) [function.unlink]: No such file or directory in D:\Inetpub\''\''\''\test2\files_upload.inc on line 46 ovviamente le '' sono le varie directory, tra l'altro quando tento di aprire il file caricato mi dà il tipico server error nomesito.it
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
scusa ... ma il codice contiene molti errori, sia logici che di sintassi,
è proprio il codice che ti serve e vale spenderci il tempo per sistemarlo
o forse hai alternative ?
ciao
Marino
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
sto cercando alternative, ma mi piaceva la soluzione senza database, a me serve che si possano caricare file di tutte le dimensioni ed estensioni, e che abbiano una piccola descrizione...
Sai indirizzarmi su qualcosa?
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
:) ti capisco, anche se conosco moooooolto poco ma più o meno le cose da mod sono quelle più o meno... cioè tre sono le pag da vedere e non c'è chissà quanto codice... aspetto tue notizie... ciao!
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
ti capisco, anche se conosco moooooolto poco ma più o meno le cose da mod sono quelle più o meno... cioè tre sono le pag da vedere e non c'è chissà quanto codice... aspetto tue notizie... ciao!
carissimo amico,
hai ragione che sono 3 le pagine da vedere e non c'è chissà quanto codice ...
ma ti garantisco che ho già corretto un numero eccessivo di errori, ed ora sono alla gestione del "DATABASE"
(scusa se chiamo così il file), ma tra un'idea e una vera gestione ci sono molte ore di lavoro

la curiosità che mi ha spinto a vedere il codice che hai postato, se n'è andata ....
spero che qualche altra persona di buona volontà riprenda il codice, che comunque ti allego, per portarlo a compimento

è presente anche il log che riporta tutti i passi che vengono compiuti dagli script
ciao
Marino

files_upload.php
PHP:
<?php

# http://localhost/test_site/php/test/_franch82/files_upload.php

require 'files_upload_inc.php';

MyLog('********** files_upload');

#set class;
#images_upload(upload directory, max filesize, files info - filename);

MyLog('upload directory   : '.$photo_url);
MyLog('max size file      : '.$maxsize);
MyLog('database file name : '.$dbFile);
$upload = new images_upload($photo_url, $maxsize, $dbFile);

?>

<a href="files_list.php">files list</a> 

<HTML>
<FORM action="" method="post" enctype="multipart/form-data">
<INPUT type="file" name="up_file">
<INPUT type="text" name="up_file_desc"><br>
<INPUT type="submit">
</FORM>
</HTML>

<?php
if (!empty($_POST)) {
  # it's good becouse you dont need to set vars by your self you only set to upload all $_FILES 
  # file upload you need set fields name for file like 'file' for description 'file1_desc'
  MyLog('upload->upload');
  $upload->upload();

  if (!empty($upload->errors)) {
    MyLog('ERRORS !');
    foreach ($upload->errors as $val){
      echo $val;
    } 
  }
  else{
    echo "Upload riuscito";
  }
}
?>

file files_list.php
PHP:
<?php
require 'files_upload_inc.php';

MyLog('********** files_list');

#seting class;
#images_upload(upload directory, max filesize, files info - filename);

$upload = new images_upload($photo_url, $maxsize, $dbFile);

if (!empty($_GET)) {
  //chek if file need to be deleted
  //$_GET['del'] = one index of files array 
  if ($_GET['del']) {
    $upload->del($_GET['del']);
  }
}

#geting files info from file info.dat
$photo_list = $upload->read_data();

#creating link's
$input = "";
foreach ($photo_list as $key=>$val) {
  MyLog('photo_url.key '.$photo_url.$key);
  $input .= "<a href='".$photo_url.$key."' target=_blank>".$val['desc']."</a> | <a href='files_list.php?del=$key'>Delete file</a><br>";
}
?>

<HTML>
<a href="files_upload.php">file Upload</a>
<br>
<br>
<?php echo $input; ?>
</HTML>

file files_upload_inc.php
PHP:
<?php

#set error log file;
ini_set('log_errors', 1);
ini_set('error_log', 'files_upload.log');

#set upload files folder, file max size and database file name;
$photo_url = "upload/";
$maxsize = 1000000;
$dbFile = "info.dat";

class images_upload
{
  var $directory;
  var $maxsize;
  var $filename;

  function images_upload($directory, $maxsize, $filename)
  {
    MyLog('function images_upload');

    $this->directoryname = $directory;
    $this->max_file_size = $maxsize;
    $this->filename = $directory . $filename;

    $this->contents = array();
    $this->errors = array();
  }

  function read_data()
  {
    MyLog('function read_data');
    MyLog('file : '.$this->filename);

    if(file_exists($this->filename))
    {
      $fp = fopen ($this->filename, 'r');
      $contents = fread ($fp, filesize($this->filename));
      fclose ($fp); 
      $contents = unserialize($contents);
    }
    else
    {
      array_push($this->errors, "error file ". $this->filename ." not exist");
    }
    return $contents;
  }

  function write_data($contents)
  {
    MyLog('function write_data');
    MyLog('file : '.$this->filename);

    $contents = serialize($contents);
    $fp = fopen($this->filename, 'w');
    fwrite($fp, $contents);
    fclose($fp);
  }

  function register_data($var)
  {
    MyLog('function register_data');
    MyLog('file : '.$this->filename);

    if (file_exists($this->filename)) $data = $this->read_data();

    if(is_array($var))
    {
      if(!empty($data)) $this->write_data($data.$var);
      else              $this->write_data($var);
    }
  }

  function unregister_data($var)
  {
    MyLog('function unregister_data');
    MyLog('file : '.$this->filename);

    if (file_exists($this->filename)) $data = $this->read_data();

    if($var)
    {
      unset($data[$var]);
      if($data) $this->write_data($data);
    }
  }

  function del($file)
  {
    MyLog('function upload');

    $this->unregister_data($file);
    unlink($this->directoryname . $file);
  }

  function upload()
  {
    MyLog('function upload');

    foreach($_FILES as $key=>$val)
    {
      if($this->max_file_size>=$_FILES[$key]['size'])
      {
        if (is_uploaded_file($_FILES[$key]['tmp_name']))
        {
          $filename = time() . "_" . $_FILES[$key]['name'];
          move_uploaded_file($_FILES[$key]['tmp_name'], $this->directoryname . $filename);
          $data_plus[$filename] = $_FILES[$key]+array('desc'=>$_POST[$key.'_desc']);
        }
        else
        {
          array_push($this->errors, "File not uploaded");
        }
      }
      else
      {
        array_push($this->errors, "File size is to big");
      }
      $this->register_data($data_plus);
    } 
  }
}

function MyLog($text)
{
  error_log($text, 0);
}
?>
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
ti capisco... non c'è problema... cercherò a questo punto di buttarmi sul mysql... Sei stato gentilissimo ed intanto spero che qualche anima pia possa continuare il tuo lavoro... A presto...
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
trovi allegato uno zip con i 3 files funzionanti,
lo script principale é "files_upload.php"
eseguendo lo script troverai il file "files_upload.log" che elenca la sequenza delle operazioni
puoi eliminare il log abilitando il return nella funzione sotto riportata che trovi nel file "inc"
... no more ...
ciao
Marino
PHP:
function MyLog($text)
{
//return;
  error_log($text, 0);
}
Vedi l'allegato files_upload.zip
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
Ottimo!!! sto un pò smanettando, ma come imposto il tipo di file (exe, txt, jpg, ecc..) e la grandezza?
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
nelle prime righe del file "files_upload_inc.php" trovi i parametri di controllo
PHP:
#set upload files folder, file max size and database file name;
$photo_url = "upload/";
$maxsize = 1000000;
$dbFile = "info.txt";
ma come imposto il tipo di file (exe, txt, jpg, ecc..) e la grandezza?
interpreto la tua domanda con la volontà di includere questi dati nella tabella con la lista dei files ...
trovi di seguito il file "files_list.php" modificato per visualizzare anche queste info
ciao
Marino
PHP:
<?php
require 'files_upload_inc.php';

MyLog('********** files_list');

#seting class;
#images_upload(upload directory, max filesize, files info - filename);

$upload = new images_upload($photo_url, $maxsize, $dbFile);

if (!empty($_GET)) {
  //chek if file need to be deleted
  //$_GET['del'] = one index of files array 
  if ($_GET['del']) {
    $upload->del($_GET['del']);
  }
}

#geting files info from file info.dat
$photo_list = $upload->read_data();

#creating link's
$myTable = "<style type='text/css'>";
$myTable.= "td { BORDER:#000 1px solid; text-align:center; }";
$myTable.= "</style>";

$myTable.= "<table border=1>";
$myTable.= "<tr> <th>file description</th> <th>name</th> <th>type</th> <th>size [ kB ]</th> <th>delete</th> </tr>";
foreach ($photo_list as $key=>$val) {
  MyLog('photo_url.key : '.$photo_url.$key);
  $myTable.="<tr>";
  $myTable.="<td><a href='".$photo_url.$key."' target=_blank>".$val['desc']."</a></td>";
  $myTable.="<td>".$val['name']."</td>";
  $myTable.="<td>".$val['type']."</td>";
  $myTable.="<td>".number_format($val['size'], 2, ',', '.')."</td>";
  $myTable.="<td><a href='files_list.php?del=$key'>Delete file</a></td>";
  $myTable.="</tr>";
}
$myTable.="</table>";
?>

<HTML>
<a href="files_upload.php">file Upload</a>
<br>
<br>
<?php echo $myTable; ?>
</HTML>
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
Ho ripreso il codice inserito precedentemente, mi sembra più semplice per me da modificare...
PHP:
 <?php
 
$dir = "upload/";

// Utilizziamo la funzione per vedere se la directory esiste

if (is_dir($dir)) {

// Apriamo l'oggetto dir

if ($oggetto_dir = opendir($dir)) {

// Perlustriamo l'oggetto dir sino a quando non finisce cioè diventa false

while (($file = readdir($oggetto_dir)) !== false) {

// Attraverso un if vediamo se $file è

// diverso . , da .. e da !is_dir

if ( $file != "." && $file != ".." && !is_dir($file)) {

echo "<a href=\"$dir/$file\" target='_blank'>{$file}</a><br>" ;

}

}

// Chiudiamo l'oggetto dir

closedir($oggetto_dir);

}

}

 ?>
Mi fa vedere la lista file scaricabili, come faccio ad aggiungere un tasto che mi elimina un singolo file?? sto impazzendo... sorry!!! :incazz2:
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
giusto nel codice inserito nel post che precede questa tua ultima domanda, c'è la risposta a ciò che chiedi

se non valorizzi il tempo che le persone dedicano a risponderti, cercando di capire le logiche usate ed il codice sviluppato,

non credo abbia senso dedicare altro tempo sia da parte tua, che da chi ti risponde

ciao
Marino
 

franch82

Nuovo Utente
5 Ott 2014
16
0
1
Domandare è lecito, rispondere è cortesia. Se la risposta deve essere in qualche modo sgarbata, si può tranquillamente evitare di continuare, così come voi avete sicuramente altre cose da fare, anche gli altri ne hanno... Ho chiesto semplicemente (scrivendo palesemente, in precedenza, della mia ignoranza in materia) se quest'ultimo codice potesse allegelirvi il vostro graditissimo aiuto. Non intendo andare di fretta poichè non ho alcun lavoro da fare con questo codice, è solo per questioni private, di conseguenza non chiedo alcuna urgenza da parte vostra. Spero che quello da me scritto si capisca che non è scritto in maniera offensiva, è solo un modo per evitare frizione fra gli utenti... Se e solo se, hai intenzione di continuare ad aiutarmi bene!, altrimenti non ti preoccupare assolutamente! "amici come prima"
Ciao

Franch
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Presentazione e piccolo aiuto PHP 6
M Presentazione Presentati al Forum 0
G presentazione Presentati al Forum 0
Antonio67 Antonio67 presentazione Presentati al Forum 0
B Presentazione Presentati al Forum 0
B Presentazione Presentati al Forum 1
M Presentazione Presentati al Forum 0
D Presentazione Presentati al Forum 0
R Messaggio presentazione Presentati al Forum 0
M presentazione Presentati al Forum 0
C Presentazione Presentati al Forum 1
M Presentazione Presentati al Forum 0
G Presentazione Presentati al Forum 0
N Presentazione Presentati al Forum 0
M Presentazione Presentati al Forum 1
Z Presentazione Presentati al Forum 0
F Presentazione Presentati al Forum 0
C Presentazione foto WordPress 0
E Presentazione Presentati al Forum 1
M presentazione Presentati al Forum 1
D Presentazione Presentati al Forum 0
L Presentazione Presentati al Forum 0
H Presentazione Presentati al Forum 0
L Presentazione Nuovo Iscritto Presentati al Forum 1
K Presentazione di foto Photoshop 1
A Presentazione Presentati al Forum 0
L Presentazione Presentati al Forum 1
H Presentazione Presentati al Forum 0
WorkAS Presentazione WorkAS Presentati al Forum 1
marinobruschini Presentazione Forum di marinobruschini Presentati al Forum 0
Spenalzo Presentazione Presentati al Forum 0
pjtertdj Presentazione Presentati al Forum 1
P Presentazione Presentati al Forum 0
O Saluti di presentazione Presentati al Forum 0
A Presentazione Presentati al Forum 0
L Presentazione Presentati al Forum 1
psicomia Presentazione Presentati al Forum 1
I Presentazione Presentati al Forum 1
F Presentazione Francesco Presentati al Forum 1
T Presentazione Daniele Tabbì Presentati al Forum 1
D presentazione Presentati al Forum 2
F presentazione Presentati al Forum 0
ronny1710 Presentazione Presentati al Forum 0
G presentazione Presentati al Forum 1
H Nostra presentazione Presentati al Forum 1
F Presentazione Presentati al Forum 1
D Presentazione Presentati al Forum 0
L Presentazione OpenOffice. Avanzamento automatico diapositive? Mac e Software 0
R Presentazione Presentati al Forum 1
F Presentazione di fede220 Presentati al Forum 0

Discussioni simili