Ciao a tutti, ho un problema con la seguente form: si tratta di un upload di foto.
Praticamente in questa form io selezione l'album su cui inserire la foto da un menù select e poi scelgo la foto. Funziona a meraviglia. Ho inserito poi il controllo if isset($_FILE......) così da lanciare una funzione esterna solo se la foto è stata caricata. Il problema è che se io clicco nel pulsante refresh del browser, la form viene eseguita nuovamente e mi carica la stessa foto nell'album, anche se non vedo alcuna foto selezionata nel riquadro apposito!( cioè mi esce nessun file selezionato).
Inserendo dopo la chiamata alla funzione questa riga:
header("Location: album.php"); che è la stessa pagina in cui è presente il form per l'upload della foto, il problema si risolve, ma non compaiono più i messaggi echo presenti nella funzione upload.
Ho provato quindi a cercare se era possibile dare un delay a header e l'unica cosa che ho trovato è questa:
header("Refresh: 5; url=albu.php"); Ma non funziona! Cioè mi fa il refresh della pagina
ma mi ricarica anche la foto !( cioè esegue la form nuovamente)
Ho già provato anche a inserire il controllo isset($_Post ...)
questa è la form
Grazie mille anticipatamente!!
Praticamente in questa form io selezione l'album su cui inserire la foto da un menù select e poi scelgo la foto. Funziona a meraviglia. Ho inserito poi il controllo if isset($_FILE......) così da lanciare una funzione esterna solo se la foto è stata caricata. Il problema è che se io clicco nel pulsante refresh del browser, la form viene eseguita nuovamente e mi carica la stessa foto nell'album, anche se non vedo alcuna foto selezionata nel riquadro apposito!( cioè mi esce nessun file selezionato).
Inserendo dopo la chiamata alla funzione questa riga:
header("Location: album.php"); che è la stessa pagina in cui è presente il form per l'upload della foto, il problema si risolve, ma non compaiono più i messaggi echo presenti nella funzione upload.
Ho provato quindi a cercare se era possibile dare un delay a header e l'unica cosa che ho trovato è questa:
header("Refresh: 5; url=albu.php"); Ma non funziona! Cioè mi fa il refresh della pagina
ma mi ricarica anche la foto !( cioè esegue la form nuovamente)
Ho già provato anche a inserire il controllo isset($_Post ...)
questa è la form
PHP:
<?
@include 'config.php';
@include 'upload.php';
$sql = "SELECT * FROM album ";
$result = mysql_query($sql)or die (mysql_error());
if (isset($_FILES['file']))
{
upload();
}
echo "
<form enctype=\"multipart/form-data\"
action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<fieldset>
<legend>CARICA FOTO</legend>
<select name=\"album\" >
<option value=\"\">Seleziona un album dove caricare la foto </option>";
while($row = mysql_fetch_array($result) )
{
?>
<option value="<?php echo $row['nome'];?>"><?php echo $row['nome'];?></option>
<?
}
?>
<?
echo "
</select>
<input type=\"hidden\" name=\"MAX_FILE_SIZE\"
value=\"300000\" />
<input type=\"file\" name=\"file\" size=\"40\" />
<input type=\"submit\" value=\"Invia\" name=\"submit\" />
</fieldset>
</form>";
?>
questa è la funzione
<?
function upload()
{
if($_POST['album']=="")
{
echo" <h3>DEVI SCEGLIERE UN ALBUM DOVE CARICARE LA FOTO!!</h3>";
return false;}
$result = false;
$immagine = '';
$size = 0;
$type = '';
$nome = '';
$max_size = 300000;
$result = @is_uploaded_file($_FILES['file']['tmp_name']);
if (!$result)
{
echo "Impossibile eseguire l'upload.";
return false;
}else{
$size = $_FILES['file']['size'];
if ($size > $max_size)
{
echo "Il file è troppo grande.";
return false;
}
$type = $_FILES['file']['type'];
$nome = $_FILES['file']['name'];
$tmp_name = $_FILES['file']["tmp_name"];
$immagine = @file_get_contents($_FILES['file']['tmp_name']);
$immagine = addslashes ($immagine);
$moveResult= move_uploaded_file($tmp_name, "uploads/".$nome);
if ($moveResult == true) {
echo "<p id='info-message'>HO CARICATO LA FOTO NELL'ALBUM : $_POST[album] </p>
<script>
setTimeout(function(){
document.getElementById('info-message').style.display = 'none';
}, 3000);
</script>";
//echo "HO CARICATO LA FOTO NELL'ALBUM : ";
//echo $_POST['album'];
} else {
echo "ERROR: File not moved correctly";
}
@include 'config.php';
$sql = "INSERT INTO immagini (nome,album) VALUES ('$nome','$_POST[album]')";
$result = @mysql_query ($sql) or die (mysql_error());
return true;
}
}
?>
Ultima modifica di un moderatore: