Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?
11/03/10 11:59:42

Accesso con nome utente, password e durata della sessione
Ricerca:     Ricerca avanzata
25.834 Messaggi in 4.092 Discussioni da 1.308 utenti
Ultimo utente: Vuptdruct

* Indice Aiuto regole Ricerca RSS feed Accedi Registrati


evitare submit stessi dati

+  PHPnews.it Forum
|-+  PHP
| |-+  Programmazione PHP (Moderatori: Gianni, trashofmasters, MarioS)
| | |-+  evitare submit stessi dati
« precedente successivo »
Pagine: [1] Vai giù Stampa
Autore Discussione: evitare submit stessi dati  (Letto 178 volte)
frankphp
Membro Senior
****
Scollegato Scollegato

Messaggi: 422



Mostra profilo
« inserito:: 06/02/10 20:20:27 »

Ciao

Come ho già anticipato nella mia discussione precedente sto sviluppando un sistema per caricare, ridimensionare e visualizzare le immagini con jquery, php e mysql.

Sono già a buon punto. Però mi sono accorto di un problema.

Una volta riempiti i campi necessari per l'operazione di upload e cliccato sul pulsante submit
I dati e l'immagine relativa vengono caricati regolarmente; però se l'utente ri-clicca sul pulsante submit
vengono caricati di nuovo la stessa immagine con gli stessi dati. Vorrei evitare questo problema (azzerando tutto e
in pratica se l'utente dovesse sbadatamente rifare un submit in più fare in modo che non succeda neinte o venga avvertito).
Cosa dovrei fare?

Questo il codice (ancora non definitivo devo implementare le funzioni per il controllo dell'imput ecc ecc)

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
Titolo:<br />
<
input name="titolo" type="text" size="20" maxlength="25"><br />
Descrizione:<br />
<
textarea name="descrizione" cols="20" rows="4"></textarea><br />
Immagine:<br />
<
input type="file" name="imagefile"><br />
<
input type="submit" name="Submit" value="Submit">
<
br /><br />
<?
php
if(isset($_POST['Submit'])){
  
// faccio un po' di inclusioni...
  
@include 'config.php';
  @require 
'function.php';
  @require 
'function_res.php';

  
// Creo una array con i formati accettati
  
$tipi_consentiti = array("image/gif","image/jpeg","image/png");

  
// verifico che il formato del file sia tra quelli accettati
  
if ((@in_array($_FILES['imagefile']['type'], $tipi_consentiti))&& ($_FILES["imagefile"]["size"] < 4000000)){ 
    
// copio il file nella cartella delle immagini
    
@copy ($_FILES['imagefile']['tmp_name'], $path_imgp $_FILES['imagefile']['name']);

    
// recupero i dati dal form
    
$titolo = @addslashes($_POST['titolo']);
    
$descrizione = @addslashes($_POST['descrizione']);
    
$nome = @addslashes($_FILES['imagefile']['name']);
    
$path $path_imgp stripslashes($nome);
    
$tipo = @addslashes($_FILES['imagefile']['type']);

	
  
// creo ridimensionamento
	
@
makeresize($path_imgp,$path,$nome,$tipo); 
    
// creo la miniatura
    
@makeThumb($path_imgt,$path,$nome,$tipo);
   
  
   
$min"tb_" $nome;
    
// aggiorno il database
    
$query "INSERT INTO images (Titolo,Descrizione,Nome,Tipo,thumb) VALUES('$titolo','$descrizione','$nome','$tipo','$min')";
    
$res = @mysql_query($query) or die (mysql_error());
    @
mysql_close($cn);

    
// Stampo a video un po' di informazioni
    
echo "Nome: ".$_FILES['imagefile']['name']."<br />"
    echo 
"Dimensione: ".$_FILES['imagefile']['size']."<br />"
    echo 
"Tipo: ".$_FILES['imagefile']['type']."<br />"
    echo 
"Byte: ".$_FILES['imagefile']['size']."<br />";
    echo 
"Copia eseguita con successo."
  }else{
    
// stampo un messaggio di errore nel caso in cui il file sia di un formato non consentito
    
echo "Impossibile eseguire l'upload. Formato non consentito o immagine troppo grande!";
  }

?>
</form>





Grazie
« Ultima modifica: 06/02/10 20:22:58 da frankphp » Registrato
Gianni
Moderatore
*****
Scollegato Scollegato

Messaggi: 7.052



Mostra profilo
« Risposta #1 inserito:: 06/02/10 22:40:15 »

nel form puoi mettere un campo nascosto con un valore random, la prima volta che viene fatto l'upload lo metti in sessione, la seconda volta lo trovi già in sessione e mostri un messaggio di errore

oppure appena dopo l'upload fai un redirect ad un'altra pagina con un messaggio di esito

 bye
Registrato

If you think education is expensive try ignorance
frankphp
Membro Senior
****
Scollegato Scollegato

Messaggi: 422



Mostra profilo
« Risposta #2 inserito:: 07/02/10 13:37:45 »

nel form puoi mettere un campo nascosto con un valore random, la prima volta che viene fatto l'upload lo metti in sessione, la seconda volta lo trovi già in sessione e mostri un messaggio di errore

oppure appena dopo l'upload fai un redirect ad un'altra pagina con un messaggio di esito

 bye

Ok Gianni, provo con la seconda soluzione.

Non ho capito bene il primo consiglio però. Valori random?
Mi interessa la cosa (magari mi torna utile per un altro progetto.

Fammi capire per piacere (un po' di codice...please Wink)

Ciao e grazie
Registrato
frankphp
Membro Senior
****
Scollegato Scollegato

Messaggi: 422



Mostra profilo
« Risposta #3 inserito:: 07/02/10 18:26:12 »

sembra che un semplice:

echo "<meta http-equiv=refresh content=3;url=$PATH_INFO>";


inserito qui:


.........

   echo 
"Tipo: ".$_FILES['imagefile']['type']."<br />"
    echo 
"Byte: ".$_FILES['imagefile']['size']."<br />";
    echo 
"Copia eseguita con successo."
    echo 
"<meta http-equiv=refresh content=3;url=$PATH_INFO>";

..........



sembra che sia più che sufficiente. Se non ci sono controindicazioni che non conosco ( sembra efficace e non
ho riscontrato propblemi apparenti) uso questa soluzione.

Che ne dici Gianni?

Grazie
Registrato
Gianni
Moderatore
*****
Scollegato Scollegato

Messaggi: 7.052



Mostra profilo
« Risposta #4 inserito:: 07/02/10 19:22:33 »

Il tag <meta> andrebbe messo all'interno del tag <head> della pagina

per il resto non vedo grossi problemi

 bye
Registrato

If you think education is expensive try ignorance
frankphp
Membro Senior
****
Scollegato Scollegato

Messaggi: 422



Mostra profilo
« Risposta #5 inserito:: 08/02/10 14:44:12 »

Il tag <meta> andrebbe messo all'interno del tag <head> della pagina

per il resto non vedo grossi problemi

 bye


Grazie
Registrato
Pagine: [1] Vai su Stampa 
« precedente successivo »
Vai a:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 valido! CSS valido!