form salvabile dagli utenti con varie estensioni

  • Creatore Discussione Creatore Discussione kain
  • Data di inizio Data di inizio

kain

Utente Attivo
14 Apr 2010
67
0
0
ciao vorrei realizzare un form che sia personalizzabile dall'utente e che alla fine della compilazione possa essere salvato dall'utente sul suo pc con l'estensione che vuole scegliere html, css.....
fin ora ho scritto questi due file ma gia mi rendo conto che manca qualcosa, anche sul metodo di farlo scaricare avrei un po' da ridire, possibile che l'utente per scaricarlo debbe per forza salvarlo prima sul mio spazio? lo vedo rischioso per virus o altro codice dannoso(!?!)
se potete ditemi qualcosa è molto che tento di realizzare questa cosa
ciao




PHP:
<?php if(isset($_POST['Editor'])){ 
 $base = 'testo';
 $contatore = 0; 
while(file_exists($base. $contatore. '.txt')){ 
$contatore++; 
}
 $fileDaAprire = $base.$contatore.'.txt'; 
$datidaform = $_POST['Editor']; //recupera dati 
$fp = fopen($fileDaAprire, 'w+');
 fwrite($fp, $datidaform); 
fclose($fp); 
}
 if(isset($_POST['Editor'])){
  $base = 'testo';
 $contatore = 0;
 while(file_exists($base. $contatore. '.css')){
 $contatore++;
 } 
$fileDaAprire = $base.$contatore.'.css';
 $datidaform = $_POST['Editor']; //recupera dati 
$fp = fopen($fileDaAprire, 'w+');
 fwrite($fp, $datidaform);
 fclose($fp); 
} 
if(isset($_POST['Editor'])){ 
 $base = 'testo';
 $contatore = 0; 
while(file_exists($base. $contatore. '.html')){ 
$contatore++; 
} 
$fileDaAprire = $base.$contatore.'.html';
 $datidaform = $_POST['Editor']; //recupera dati 
$fp = fopen($fileDaAprire, 'w+');
 fwrite($fp, $datidaform); 
fclose($fp); 
} 
if(isset($_POST['Editor'])){  
$base = 'testo'; 
$contatore = 0; 
while(file_exists($base. $contatore. '.php')){ $contatore++; 
} 
$fileDaAprire = $base.$contatore.'.php'; 
$datidaform = $_POST['Editor']; //recupera dati 
$fp = fopen($fileDaAprire, 'w+'); 
fwrite($fp, $datidaform); 
fclose($fp); 
}  ?>

PHP:
<form action="fileall.php" method="post"> 
<textarea name='Editor' cols='130' rows='38' > 
 doctype head head body body html</textarea> <br>  
<input type="reset" value="cancella">    <br>   
<input type="submit"value="salva .txt">  
<input type="submit"value="salva .css"> 
<input type="submit"value="salva .html"> 
<input type="submit"value="salva .php"> 
</form>
 
ciao a tutti c'è un modo per ottenere questo Senza titolo-1.jpg
 
grazie da quello che leggo nello script mi pare di capire che i file finiscon0 in /root/www/download/ e da li vanno scaricati io invece preferirei che sia salvato il form compilato senza neanche passare nella root del mio sito.
anche perchè dallo script che ho postato l'utente non sa neanche come si chiama il suo file :confused:
e comunque dallo scriptino che ho postato non ho ancora risolto il problema delle diverse estensioni, saresti così gentile da indicarmi come e cosa modificare?
 
Non ricordo bene da dove l'ho presa ma tempo fa ho salvato questa classe forse potrebbe esserti di aiuto:

PHP:
  * ***/
class forceDownload
{
	public $_allowedPath;
	public $_allowedFiles;
	public $_allowedExtensions;
	protected $fileName;
 
		public function __construct($fileName)
		{
			$this->fileName = $fileName;
		}	
 
		private function DownloadThisFile($file)
		{
 
			header("Cache-Control: public");
			header("Content-type: application/octet-stream");  
			header("Content-Length: " . filesize($file));  
			header("Content-Disposition: attachment; filename= " . $file);
 
			readfile($file);
		}
 
		public function DownloadWihtFilter()
		{
			$control = 0;
			$file = basename($this->fileName);
			$path = dirname($this->fileName);
 
			if(!file_exists($this->fileName))
			{
				die("Il file richiesto non esiste nella posizione");
			}
 
			if(isset($this->_allowedFiles))
			{
				$control = 1;
 
				$files = explode("," , $this->_allowedFiles);
 
				if(!in_array($file, $files))
				{
					die("Nome file non presente nella lista!");
				}
			}
 
			if(isset($this->_allowedExtensions))
			{
				$control = 1;
 
				$ext = explode("," , $this->_allowedExtensions);
 
				$fileNameExtension = end(explode(".", $file));
 
				if(!in_array($fileNameExtension, $ext))
				{
					die("Estensione non abilitata per il download");
				}
			}
 
			if(isset($this->_allowedPath))
			{
				$control = 1;
 
				$paths = explode("," , $this->_allowedPath);
 
				if(!in_array($path,$paths))
				{
					die("Il file si trova in una cartella non abilitata al download");
				}
			}
 
			if(!$control)
			{
				die("Devi mettere almeno un controllo");
			}
 
			$this->DownloadThisFile($this->fileName);
 
		}
 
}

In quetso modo

$download = new forceDownload($_GET['file']);
$download->_allowedExtensions = "pdf,txt"; //abiliti formati .pdpf e .txt
$download->_allowedPath = "files/download"; //abiliti questa cartella
$download->DownloadWihtFilter();
 
grazie almeno so che qualcosa per far scaricare altre estensioni si può fare certo devo rivedere completamente i miei codici, faccio altre prove
ciao
 

Discussioni simili