 |
www.vincenzomanzoni.com Homepage personale e blog di Vincenzo Manzoni
|
Precedente :: Successivo |
Autore |
Messaggio |
abaddon Utente adulto


Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Ven Apr 09, 2004 12:24 pm Oggetto: Mysql e file |
|
|
ho un piccolo problemino da sottoporvi: mi han chiesto di sviluppare un modulo per il mio portale che permettesse di creare un'area privata per ogni utente con la possibilit� di uppare file definendo tramite pannello amministrativo estensioni e dimensioni.
Il file uppato dall'utente poi sarebbe visibile solo all'utente medesimo. ( ecco la gatta da pelare)
la soluzione ottimale sarebbe quella di creare una cartella per ogni utente e uppare l� sopra tramite script i file interessati. La soluzione � valida ma poco sicura, infatti basta scoprire la tecnica di archiviazione dei file che matematicamente si ha accesso a tutti i file uppati dall'utente.
soluzione b, infilare i file all'interno del db, per quanto riguarda la sicurezza � ottima visto che le query sarebbero gestite dallo script, ma ci sarebbe un problemino di pensantezza a lv db e voci sconsigliano di caricare file in un db.
soluzione c, venuta in mente or ora e consiste nella soluzione a con l'aggiunta dell'estensione .php alla fine del file tanto per renderlo inviibile (credo) all'utente nel caso scopra il percorso. Unico prblema � che non so come si comporterebbe l'interprete se si mette ad interpretare file tipo jpg,zip,ecc...
voi che proporreste?
ah il linguaggio � PHP |
|
Top |
|
 |
Endless Utente adulto


Registrato: 23/12/03 18:06 Messaggi: 2905 Residenza: Bergamo (provincia)
|
Inviato: Ven Apr 09, 2004 12:36 pm Oggetto: Re: Mysql e file |
|
|
abaddon ha scritto: | ah il linguaggio � PHP | Vai Vinz, sali in cattedra..  _________________
Training autogeno: in caso di stress, eseguite il movimento in figura e ripetete:
"Amo il mio lavoro! Amo il mio lavoro! Amo il mio lavoro!" |
|
Top |
|
 |
Andrea Moderatore

Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Ven Apr 09, 2004 12:37 pm Oggetto: Re: Mysql e file |
|
|
abaddon ha scritto: | voi che proporreste?
ah il linguaggio � PHP |
Prova a proteggere le diectory con .htaccess |
|
Top |
|
 |
abaddon Utente adulto


Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Ven Apr 09, 2004 12:45 pm Oggetto: Re: Mysql e file |
|
|
Andrea ha scritto: | abaddon ha scritto: | voi che proporreste?
ah il linguaggio � PHP |
Prova a proteggere le diectory con .htaccess |
� una possibilit�, ma ha un problema, ogni volta che lo script richiama un file che sta li dentro compare la noiosa mascherina del browser che chiede login e pass, preferirei una cosa gestita unicamente dallo script |
|
Top |
|
 |
vinz Amministratore


Registrato: 12/12/03 12:56 Messaggi: 6648 Residenza: San Pellegrino Terme (Bergamo)
|
Inviato: Ven Apr 09, 2004 1:36 pm Oggetto: Re: Mysql e file |
|
|
abaddon ha scritto: | soluzione b, infilare i file all'interno del db, per quanto riguarda la sicurezza � ottima visto che le query sarebbero gestite dallo script, ma ci sarebbe un problemino di pensantezza a lv db e voci sconsigliano di caricare file in un db. |
Non dici di che dimensioni saranno, presumibilmente, i files.
Il discorso � molto diverso se da archiviare sono piccole gif oppure DivX dell'ultimo film della Disney ("Koda fratello orso", bellissimo! ).
Io farei un test prestazioni con un db di prova in locale. Secondo me non dovrebbe intaccare a livello apprezzabile le prestazioni...
Purtroppo in questi giorni non ho tempo per fare personalmente una prova.  _________________ Let the future tell the truth and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I really worked, is mine.
Nikola Tesla |
|
Top |
|
 |
abaddon Utente adulto


Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Ven Apr 09, 2004 6:38 pm Oggetto: |
|
|
secondo te a occhio, gi� file di dimensione di 1-2mb potrebbero creare problemi?
calcola che non so il carico d'utenza che deve tenere il sito e non so manco quanti file si dovranno uppare, la mia paura � quella di avere backup di db da 500mb in su.... immagazzinando file le dimesioni crescono esponenzialmente cazzarola.
Una volta mi � capitato di metter mano a un db del Vbulletin di una piccola community cazzarola le immagini di avatar e attachment vari lo avevano portato sui 700mb.. ci mettevo un giorno solo ad aprire il file -.-
vorrei evitare sta situazione di nuovo  |
|
Top |
|
 |
ice Utente adulto


Registrato: 21/01/04 19:07 Messaggi: 2885 Residenza: Seriate (Bergamo)
|
Inviato: Mar Apr 13, 2004 8:52 am Oggetto: |
|
|
E se una volta terminato l'upload rinominassi il file con una sequenza numerica casuale e poi tenessi conto dell'associazione del file-utente nel db? Che ne dici? In questo modo potresti uppare tutti i file nella stessa directory protetta. E' sufficiente che una parte del nome del file rimanga con riferimento fisso (in questo modo eviti che - sfiga vuole - un numero esca casualmente due volte... Per esempio: Oggi � il 13 aprile, quindi il nome del file potrebbe essere 20040413_xxxxxx.jpg). Vado di fretta e ho scritto con molta confusione. Scusate. _________________
Ti chiedo:
La saggezza per capire i colleghi...
La pazienza per ascoltarli...
La capacit� di stare calmo...
... ma non darmi la forza... perch� se mi dai anche quella...
FACCIO UN MACELLO !!! |
|
Top |
|
 |
abaddon Utente adulto


Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Mar Apr 13, 2004 10:13 am Oggetto: |
|
|
uhmm l'idea � buona non c'� che dire, per ora pero' sto implementando la versione con db, ora cedo come si comporta, se le prestazioni decadono magari sperimento questa soluzione
thx |
|
Top |
|
 |
karla Utente maturo


Registrato: 24/12/03 13:57 Messaggi: 925 Residenza: botta di sedrina, wutheringheights@interfree.it
|
Inviato: Mar Apr 13, 2004 10:43 am Oggetto: |
|
|
abaddon ha scritto: | uhmm l'idea � buona non c'� che dire, per ora pero' sto implementando la versione con db, ora cedo come si comporta, se le prestazioni decadono magari sperimento questa soluzione
thx |
ma tu, fai scienze della comunicazione o ingegneria!?  _________________ she...maybe the chill that autumn brings... |
|
Top |
|
 |
karla Utente maturo


Registrato: 24/12/03 13:57 Messaggi: 925 Residenza: botta di sedrina, wutheringheights@interfree.it
|
Inviato: Mar Apr 13, 2004 12:47 pm Oggetto: |
|
|
ehm....ehm.....hi.....!
ho un po' sbagliato... volevo riferirmi a nick..........................
hi-hi!  _________________ she...maybe the chill that autumn brings... |
|
Top |
|
 |
abaddon Utente adulto


Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Mar Apr 13, 2004 10:13 pm Oggetto: |
|
|
se vi interessa queste sono le funzioni che ho creato per gestire i file nel db
Codice: |
<?php
function insert($db, $gruppo){
if(!isset($_POST['step']))
$_POST['step']='0';
if(!is_numeric($_POST['step']))
die('errore');
include 'admin1/config.php';
$query='SELECT upload_file_type, upload_file_size FROM '.$pref.'opzioni';
$op=mysql_fetch_array(mysql_query($query, $db));
$typ=explode('|', $op['upload_file_type']);
for($i=0; $i<count($typ) ;$i++)
$type.=$typ[$i].' ';
switch ($_POST['step']){
case '1':
$type1=explode('/',$_FILES['file']['type']);
$check='0';
for($i=0; $i<count($typ) ;$i++){
if($type1['1']==$typ[$i])
$check='1';
}
if($op['upload_file_size']*1024<$_FILES['file']['size'] || $check=='0'){
echo "Attenzione!! Il formato del file non e' consentito oppure il file e' troppo grosso";
return ;
}
$bin = addslashes(fread(fopen($_FILES['file']['tmp_name'], "rb"), $_FILES['file']['size']));
$query='INSERT INTO '.$pref.'file_privati (id, user, descr, nome, size, type, bin) VALUES (\'\', \''.$_COOKIE['s_id'].'\', \''.$_POST['descr'].'\', \''.$_FILES['file']['name'].'\', \''.$_FILES['file']['size'].'\', \''.$_FILES['file']['type'].'\', \''.$bin.'\')';
if(mysql_query($query, $db))
redirect('index.php?target=viewallfile', 'Il file'.basename($_FILES['file']['name']).'e\' stato correttamente inserito nel Database.', '3');
else
redirect('index.php?target=addfile', 'ERRORE! Il file'.basename($_FILES['file']['name']).'non e\' stato correttamente inserito nel Database.', '5');
break;
default:
echo '<div align="center">
<table>
<form action="index.php?target=addfile" method="POST" enctype="multipart/form-data">
<input type="hidden" name="step" value="1">
<tr>
<td valign="top">Descrizione </td>
<td><textarea name="descr" cols="40" rows="5"></textarea></td>
</tr>
<tr>
<td>File</td>
<td><input type="file" name="file" size="40"></td>
</tr>
<tr>
<td colspan="2" valign="bottom" align="center" height="30">
<input type="submit" value="Invia il file" name="invia"></td>
</tr>
<tr><td>Max Size:</td><td>'.$op['upload_file_size'].' KB</td></tr>
<tr><td>Type:</td><td>'.$type.'</td></tr>
</form>
</table>
</div>';
break;
}
}
function view_all($db, $gruppo){
if(!isset($_COOKIE['s_id']) || !is_numeric($_COOKIE['s_id']))
die('Errore');
include 'admin1/config.php';
$query = 'SELECT * FROM '.$pref.'file_privati WHERE user=\''.$_COOKIE['s_id'].'\'';
//echo $query;
$select = @mysql_query($query, $db) or die("Query fallita !");
echo '<div align="center"><table>';
while($result = @mysql_fetch_array($select)) {
echo '<tr><td align="center">'.$result['nome'].'<br><font size="1">('.$result['size'].'bytes)</font>';
echo '</td><td valign="top"> <a href="index.php?target=viewfile&id='.$result['id'].'">download</a></td>';
echo '<td align="center">';
if($result['descr'])
echo $result['descr'].'</td>';
else
echo 'nessuna descrizione</td>';
echo '</td><td valign="top"><a href="index.php?target=delfile&id='.$result['id'].'">Elimina</a></td></tr>';
}
echo '</table></div>';
}
function view ($db, $gruppo) {
if((!isset($_COOKIE['s_id']) || !is_numeric($_COOKIE['s_id'])) || (!isset($_GET['id']) || !is_numeric($_GET['id'])))
die('Errore');
include 'admin1/config.php';
$query = 'SELECT bin, type FROM '.$pref.'file_privati WHERE id = \''.$_GET['id'].'\' AND user=\''.$_COOKIE['s_id'].'\'';
$select = @mysql_query($query, $db) or die("Query fallita !");
$result = @mysql_fetch_array($select);
$data = $result['bin'];
$type = $result['type'];
Header("Content-type: $type");
echo $data;
}
// DOWNLOAD
function download($db, $gruppo){
if((!isset($_COOKIE['s_id']) || !is_numeric($_COOKIE['s_id'])) || (!isset($_GET['id']) || !is_numeric($_GET['id'])))
die('Errore');
//echo'<script language="javascript">window.open(\'private_file_download.php?id='.$_GET['id'].'&db='.$db.'\',\'\',\'width=400,height=430,left=0,top=0\')</script>';
//redirect('index.php', 'Redirect alla home in corso', '4');
// SE IL BROWSER E' INTERNET EXPLORER
if(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) {
header("Content-Type: application/octetstream");
header("Content-Disposition: inline; filename=$name");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
} else {
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$name");
header("Expires: 0");
header("Pragma: no-cache");
}
echo $data;
}
function del($db, $gruppo){
if((!isset($_COOKIE['s_id']) || !is_numeric($_COOKIE['s_id'])) || (!isset($_GET['id']) || !is_numeric($_GET['id'])))
die('Errore');
include 'admin1/config.php';
$query='DELETE FROM '.$pref.'file_privati WHERE id=\''.$_GET['id'].'\' AND user=\''.$_COOKIE['s_id'].'\'';
if(mysql_query($query, $db))
redirect('index.php?target=viewallfile', 'Elemento eliminato correttamente<br>Redirect in corso', '3');
else
redirect('index.php?target=viewallfile', 'ERRORE! Elemento non eliminato correttamente<br>Redirect in corso', '5');
}
?>
|
|
|
Top |
|
 |
vinz Amministratore


Registrato: 12/12/03 12:56 Messaggi: 6648 Residenza: San Pellegrino Terme (Bergamo)
|
Inviato: Mar Apr 13, 2004 10:52 pm Oggetto: |
|
|
Bel lavoro!
Sembra fatto bene, cos� a prima vista...
Ottimi i controlli: la prudenza, quando si parla di pagine dinamiche, non � mai troppa!
Passato the king provo le tue funzioni...  _________________ Let the future tell the truth and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I really worked, is mine.
Nikola Tesla |
|
Top |
|
 |
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|