Se clicco refresh il form va in automatico

brugne92

Nuovo Utente
22 Mag 2014
3
0
0
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
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 :&nbsp; $_POST[album] </p>
<script>
setTimeout(function(){
document.getElementById('info-message').style.display = 'none';

}, 3000);
</script>";
//echo "HO CARICATO LA FOTO NELL'ALBUM :&nbsp;";

//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;

}
}
?>
Grazie mille anticipatamente!!
 
Ultima modifica di un moderatore:

migo80

Utente Attivo
25 Apr 2013
243
3
18
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
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 :&nbsp; $_POST[album] </p>
<script>
setTimeout(function(){
document.getElementById('info-message').style.display = 'none';

}, 3000);
</script>";
//echo "HO CARICATO LA FOTO NELL'ALBUM :&nbsp;";

//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;

}
}
?>
Grazie mille anticipatamente!!


ciao prova a modificare solo questo.....
PHP:
if(isset($_POST['album']==""))
 

brugne92

Nuovo Utente
22 Mag 2014
3
0
0
in che senso? comunque io non ho quella riga.. ho soltanto il controllo if ($_POST['album']=="")
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
Quella riga la modifichi in questo modo

PHP:
if(isset($_POST['album']==""))
 

Akuma

Nuovo Utente
17 Mag 2014
28
0
1
33
Peschiera del Garda (VR)
Ciao, allora io ho lo stesso problema, ovvero invii i dati via form e se ricarichi la pagina "rielabora i dati", per ovviare questo problema ho usato il normalissimo:

PHP:
header("location: pagina.php");

come giustamente hai fatto notare se usi questo metodo non ti mostra il messaggio di avvenuto invio dei dati, allora fai una cosa furba crea una cosa del genere:

PHP:
header("location: pagina.php?successo=1");

e poi nella pagina in base a come gestisci i messaggi lo adatti.

PHP:
if(isset($_GET['successo']) AND ($_GET['successo']== 1)) {

messaggio di conferma 

}
 
Discussioni simili
Autore Titolo Forum Risposte Data
I clicco sul nome utente e gli invio una mail PHP 5
N Se clicco sul pulsante, aprimi un form PHP 18
P jquery refresh div non funziona Javascript 0
P refresh div + scrittura/lettura dal db Javascript 1
G Eliminare l'effetto refresh di una pagina internet PHP 8
C Refresh parte di codice pagina php PHP 6
I [Javascript] mantenere un bottone abilitato al refresh della pagina Javascript 1
P [Javascript] Array da file di testo, con lettura temporizzata senza refresh Javascript 3
E Problema refresh PHP PHP 3
K [PHP] Passaggio Variabili Senza Refresh Di Pagina PHP 1
F [Javascript] chiusura popup e refresh pagina madre su punto preciso Javascript 0
A [Javascript] [PHP] Scroll refresh chat Javascript 2
michela90 [PHP] Refresh page on submit - Form con Swiftmailer PHP 14
G [HTML] Refresh immagini cam ip HTML e CSS 13
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
G Refresh singolo jQuery 0
T [Javascript] Refresh div Javascript 1
Z [PHP] Informazione al pulsante REFRESH PHP 2
gandalf1959 [PHP] refresh della pagina dopo submit PHP 3
Lucia Fiore refresh di un div automaticamente Javascript 2
A problema con refresh frame laterale Javascript 2
S refresh non desiderato Javascript 4
M Problema refresh della pagina dopo il submit? HTML e CSS 4
P problemi di refresh per reindirizzamento pagina PHP 6
L Refresh include php con jquery problemi negli script dopo load jQuery 2
P crash della pagina al refresh di alcuni div jQuery 7
Z Ricordare tabs dopo refresh jQuery 1
I auto refresh invisibile PHP 1
WorldWideWeb Refresh div in MVC .NET Framework 1
P problema refresh pagina PHP 1
felino [Jquery] Dubbio sul tag meta refresh aggiunto dinamicamente jQuery 6
Shyson Pulsante refresh codice captcha Javascript 0
B [AJAX] Refresh automatico non funziona Ajax 15
P Problema refresh pagina con Ajax... Ajax 15
O Problema con refresh/form PHP 0
A [risolto] evitare refresh index dopo recaptcha sbagliato PHP 7
P Mantenere valore di un form anche dopo refresh PHP 6
M Problema refresh e didascalie HTML e CSS 2
A Creare una galleria foto senza refresh PHP 0
A Immagine ricaricata dopo il refresh (upload) PHP 2
J Evitare al refresh della pagina la ritrasmissione di un form PHP 1
G audio player senza refresh HTML e CSS 0
C testo espandibile senza refresh pagina Javascript 4
lsnight [risolto] Div random ogni refresh PHP 19
C contenuti dinamici senza refresh PHP 1
M Galleria funziona solo dopo refresh PHP 56
S Refresh automatico di un immagine Javascript 3
I Menu senza refresh - sostituzione vecchi frame HTML jQuery 2
F aggiornare contenuto pulsante senza refresh pagina Javascript 2
Monital Refresh di una pagina dopo l'invio di un input da altra pagina PHP 6

Discussioni simili