Ciao sapete dirmi come caricare un file sul db tipo un immagine...
Codice PHP:
$_FILES['file']['size'] non deve superare una cerca dimensione
$_FILES['file']['type'] deve essere formato immagine
Ciao sapete dirmi come caricare un file sul db tipo un immagine...
Codice PHP:
$_FILES['file']['size'] non deve superare una cerca dimensione
$_FILES['file']['type'] deve essere formato immagine
Qui trovi una guida su come fare l'uploader dei file (e il downloader!) con PHP e MySQL. Non l'ho testata su AV, ma non dovrebbero esserci problemi: http://www.php-mysql-tutorial.com/wi...database.aspx#
Per quanto riguarda le tue richieste, ti dovrebbe bastare modificare l'uploader in modo che rifiuti il file quando:
- ['type'] non inizia con la stringa 'image/'
- ['size'] non supera la dimensione da te impostata.
Stammi bene...
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
Sai dirmi dove sbaglio....
Codice PHP:
<?php
if(isset($_POST["carica"])){
$nome_temporaneo = $_FILES['file']['tmp_name'];
$nome = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$tipo = $_FILES['file']['type'];
$contenuto = addslashes(file_get_contents($nome_temporaneo));
if($size < 50){
if(eregi('image/',$tipo)){
mysql_connect("localhost", "hotmailpower", "") or die("Impossibile connettersi al database");
mysql_select_db("my_hotmaillpower") or die("Impossibile selezionare il database");
if(mysql_query("INSERT INTO upload (nome,size,tipo,file)VALUES('$nome','$size','$tipo','$contenuto')")){
echo "
File caricato con successo.<br>
Nome: <b>{$nome}</b><br>
Tipo: <b>{$size}</b><br>
Dimensione: <b>{$tipo}</b><br>";
}else{
echo "Errori nell'upload del file";
}
}else{
echo "Il file non e un immagine";
}}else{
echo "Supera le dimensioni dell'upload per il file";
}}?>
<form enctype="multipart/form-data" action="" name="File" method="post">
<table border="0">
<tr>
<td>Carica un file:</td>
</tr>
<tr>
<td><input class="text" type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" name="carica" value="carica"></td>
</tr>
</table>
</form>
Ultima modifica di hotmailpower : 30-04-2010 alle ore 21.00.24
Penso che il motivo principale sia questo:
Sei sicuro che l'immagine deve occupare meno di 50 bytes?Codice PHP:
if($size < 50){
Poi giusto una correzione, ereg/i è ormai deprecata e in questo caso è anche inutile.
Ti basta usare stripos
E magari aggiungi error_reporting(E_ALL) all'inizio dello script in modo da risolvere eventuali errori!Codice PHP:
if(stripos($tipo, 'image/') !== false) {
ti ringrazio funziona...
ma vorrei migliorare il codice per la sicurezza del sito come potrei fare.....
codice:
Codice PHP:
<?php
if(isset($_POST["carica"])){
$nome_temporaneo = $_FILES['file']['tmp_name'];
$nome = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$tipo = $_FILES['file']['type'];
$contenuto = addslashes(file_get_contents($nome_temporaneo));
if($size < 50000){
if(stripos($tipo, 'image/') !== false){
mysql_connect("localhost", "hotmailpower", "") or die("Impossibile connettersi al database");
mysql_select_db("my_hotmaillpower") or die("Impossibile selezionare il database");
if(mysql_query("INSERT INTO upload (nome,size,tipo,file)VALUES('$nome','$size','$tipo','$contenuto')")){
echo "
File caricato con successo.<br>
Nome: <b>{$nome}</b><br>
Tipo: <b>{$tipo}</b><br>
Dimensione: <b>{$size} kb</b><br>";
}else{
echo "Errori nell'upload del file";
}
}else{
echo "Il file non e un immagine";
}}else{
echo "Supera le dimensioni dell'upload per il file";
}}?>
<form enctype="multipart/form-data" action="" name="File" method="post">
<table border="0">
<tr>
<td>Carica un file:</td>
</tr>
<tr>
<td><input class="text" type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" name="carica" value="carica"></td>
</tr>
</table>
</form>
Non mi sembra di notare problemi di sicurezza, a parte un probabile rischio di SQL injection: prima di inserirlo nella query, almeno il nome ti consiglierei di "filtrarlo" attraverso la funzione mysql_real_escape_string().
Se il tuo timore è quello che qualcuno possa caricarti degli script malevoli, non preoccuparti più di tanto: potrebbe anche riuscire a caricarli, ma su AV non riuscirebbero ad essere eseguiti...
Stammi bene...
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
Vorrei che si aggiornasse la pagina il modulo non faccia di inviare di nuovo il file al db....
Come posso fare che due nomi uguali nel db non esistano in caso se si accerta che ci siano la possibilità di cambiare il nome del file con un campo input....
lo modificato cosi....
la tabella che uso e cosi che ne pensi...Codice PHP:
<?php
if(isset($_POST["carica"])){
$nome_temporaneo = $_FILES['file']['tmp_name'];
$nome = mysql_real_escape_string($_FILES['file']['name']);
$size = mysql_real_escape_string($_FILES['file']['size']);
$tipo = mysql_real_escape_string($_FILES['file']['type']);
$contenuto = addslashes(file_get_contents($nome_temporaneo));
if($size < 50000){
if(stripos($tipo, 'image/') !== false){
mysql_connect("localhost", "hotmailpower", "") or die("Impossibile connettersi al database");
mysql_select_db("my_hotmaillpower") or die("Impossibile selezionare il database");
if(mysql_query("INSERT INTO upload (nome,size,tipo,file)VALUES('$nome','$size','$tipo','$contenuto')")){
echo "
File caricato con successo.<br>
Nome: <b>{$nome}</b><br>
Tipo: <b>{$tipo}</b><br>
Dimensione: <b>{$size} kb</b><br>";
}else{
echo "Errori nell'upload del file";
}
}else{
echo "Il file non e un immagine";
}}else{
echo "Supera le dimensioni dell'upload per il file";
}}?>
<form enctype="multipart/form-data" action="" name="File" method="post">
<table border="0">
<tr>
<td>Carica un file:</td>
</tr>
<tr>
<td><input class="text" type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" name="carica" value="carica"></td>
</tr>
</table>
</form>
Codice PHP:
CREATE TABLE IF NOT EXISTS `upload` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(30) NOT NULL,
`tipo` varchar(30) NOT NULL,
`size` int(11) NOT NULL,
`file` mediumblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Ultima modifica di hotmailpower : 01-05-2010 alle ore 11.15.40