Svuotare dati $_Post

antonioantonio

Nuovo Utente
27 Set 2015
25
0
0
Ciao a tutti,

in giro tra forum e web ho visto che moltissimi si sono scontrati con questo problema, ed ho letto di sessioni , di script multipli e varie.....ma non sono arrivato da nessuna parte

vi da di darmi una mano ?

Chiaramente il mio problema sta nel fatto che , dopo aver riempito il form con i dati che poi inserisco nel db , se aggiorno la pagina del browser i dati vengono nuovamente inseriti nel db

Nella fattispecie il codice del mio file è questo:

questo è il form:

PHP:
<form method="post" runat="server" action="<?php echo $_SERVER['PHP_SELF']; ?>" autocomplete="on"> 
    <table class="table" align="center">
      <tr>
        <td align="center" colspan="8" class="registro"><h1>REGISTRO</h1></td>
    </tr>

      <tr class="lbl">  
         <td class="lbl"; align="center">DATA</td>
       </td>
     <td class="lbl"; align="center">UTENTE
       </td>
     <td class="lbl"; align="center">CATEGORIA
       </td>
     <td class="lbl"; align="center">SOTTO<br>CATEGORIA
       </td>
         <td class="lbl"; align="center">STATO
       </td>
     </tr>
      <tr>   
         <td> <input type="text" id="data"  name="data" value="" size="10" autocomplete="on">
       </td>
     <td> <input type="text" id="ut"  name="ut" value="" size="15" autocomplete="on">
       </td>
     <td> <input type="text" id="cat"  name="cat" value="">
       </td>
     <td> <input type="text" id="sotcat"  name="sotcat" value="" size="15" autocomplete="on">
       </td>
         <td> <select id="stato"  name="stato" value="">
        <option></option>
        <option>Aperta</option>
        <option>Chiusa</option>
        <option>Annullata</option>
          </select>
       </td>
     </tr>
       <tr>
         <td class="lbl"; align="center"; colspan="8">DESCRIZIONE
       </td>
     </tr>
       <tr>
     <td colspan="8"> <input type="text" class="desc" id="desc"  name="desc" value="" size="137" autocomplete="on">
       </td>
     </tr>
       <tr>
     <td align="center"; colspan="8"><input type="submit" name="inserisci" value="Inserisci"></td>
     </tr>
   </table>
  </form>

Seguito poi dal solito comando

PHP:
if(isset($_POST['inserisci'])){

etc....etc


Grazie a tutti in anticipo!
 

The-Night

Utente Attivo
18 Ott 2015
59
0
6
ciao, in teoria si usa
PHP:
unset($_POST['inserisci']));
ma se l'utente preme F5 il browser visualizza un messaggio dicendo che aggiornando la pagina potrebbero ripetersi alcune operazioni. Questo perché il browser ricorda attraverso la cache tutte le operazioni fatte in precedenza.
 
Ultima modifica:

The-Night

Utente Attivo
18 Ott 2015
59
0
6
prova così:

PHP:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['inserisci'])) {
  
  $Stato = $_POST["inserisci"];
  
  if (! is_null($Stato)) {
    unset($_SESSION['inserisci']);
    $_SESSION['inserisci'] = $Stato;
  }
  $checkStato = $_SESSION['inserisci'];
  if (! is_null($checkStato)) {
    
    //codice d'invio dati al db.
    
  }
  unset($_SESSION['inserisci']);
}
?>

Il massaggio del browser appare lo stesso, ma dato che elimini la sessione, la variabile $checkStato sarà vuota e non invierà nulla.
 
Ultima modifica:

antonioantonio

Nuovo Utente
27 Set 2015
25
0
0
Ciao The Night,

purtroppo non funziona....refreshando la pagina continua comunque ad inserire i dati nel db!!!!!!

come posso fare cavolo!....ci sarà pure un modo!?!?
 

The-Night

Utente Attivo
18 Ott 2015
59
0
6
ciao, ho aggiunto document.location.reload(true); che da quello che dice la guida php dovrebbe refreshare la pagina senza usare la cache del browser. Prova e fammi sapere.

PHP:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['inserisci'])) {
  
  $Stato = $_POST["inserisci"];
  
  if (! is_null($Stato)) {
    unset($_SESSION['inserisci']);
    $_SESSION['inserisci'] = $Stato;
  }
  $checkStato = $_SESSION['inserisci'];
  if (! is_null($checkStato)) {
    
    //codice d'invio dati al db.
    
  }
  unset($_SESSION['inserisci']);
  echo "
  <script>
  document.location.reload(true);
  </script>
  ";
}
?>
 

antonioantonio

Nuovo Utente
27 Set 2015
25
0
0
:crying:......Ha avuto un'effetto a dir poco .......IMPATTANTE!!

la pagina va praticamente in loop ricaricandosi di continuo e continuando ad inserire righe nel db ad ogni refresh.......bah!..non so proprio che pesci prendere!!!

Help!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puoi provare così dovrebbe vuotare la cache
PHP:
<?php
ob_start();//questa serve in quanto si usa la funzione header dopo un outpt html
session_start();
//.....
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form method="post" runat="server" action="<?php echo $_SERVER['PHP_SELF']; ?>" autocomplete="on"> 
<!-- tutto il form -->
</form>
<?php
if(isset($_POST['inserisci'])){
	header("Cache-Control: no-cache"); //dovrebbero vuotare la cache
	header("Expires: -1"); 
// ecc....
}
?>
</body>
</html>
<?php
ob_end_flush();//chiude ob_start
?>
se ti funziona fammi sapere non l'ho mai utilizzato il sistema
 

The-Night

Utente Attivo
18 Ott 2015
59
0
6
ma come è possibile che va in loop se non ha un post da ricevere? -.-"

C'è una condizione all'inizio.....
 

antonioantonio

Nuovo Utente
27 Set 2015
25
0
0
Ciao borgo italia,

ho provato ma....nulla da fare....tutto resta invariato, facendo il refresh le informazioni vengono spedite di nuovo....

Pare sia un problema bello spinoso!....anche in giro ho letto di tanta gente "disperata" dietro a questo problema
 

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Io faccio così e non ho problemi:
1. compilo form
2. Mando i dati in una seconda pagina ( solitamente la classe che li processa ) e poi gli piazzo un header finale che mi riporta alla pagina di provenienza.

In alternativa puoi provare così:
1. Invii i dati dal form
2. Li processi con un if che controlla che un dato obbligatorio a tua scelta ( anche un campo nascosto ) sia stato settato
3. Finito il lavoro unsetti le variabili così che al secondo controllo risultino vuote e come else gli piazzi un break e un header, un pó grezzo ma è un'alternativa da provare


Saluti.
G.G.
 

antonioantonio

Nuovo Utente
27 Set 2015
25
0
0
Ciao 892

Quindi...tradotto in "codicese" come sarebbe, possibilmente restando nella stessa pagine?

Scusa ma io non sono così pratico da fare da solo la traduzione
 

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Ora sono dal cell, ma credo in poche parole che il tuo problema sta nell'action. La soluzione che ti propongo io, spero di riuscire a postarti presto un pó di codice, non è difficile da implementare, ed è quella di avere due pagine, una con il form e un'altra che riceve i dati post. Quindi l'action punta a questa seconda pagina. Finito il processamento dei dati inserisci qui $_SERVER['PHP_SELF'] facendo il modo che dalla pagina che serve a processare i dati ritorni a quella del form. L'utente nn si accorge di nulla e puoi farlo quante volte vuoi.. Anche refreshando la pag non continua ad inviare perchè l'action nn punta alla stessa pagina.. Poi per una sicurezza ulteriore, anche se non credo serva a questo punto, puoi unsettare. Comunque appena posso ti mando un essmpio.


Saluti.
G.G.
 
Ultima modifica:

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Vedi se funziona una cosa del genere..

Premesso che le pagine del form e quella che ricevono i dati devono essere diverse..
Facciamo finta che i tuoi dati del form arrivano in questa pagina:
PHP:
<?php
//Ti recuperi tutte le variabili in entrata..
$controllo = $_POST['datocontrollo'];
$nome = htmlspecialchars ($_POST['nome'], ENT_QUOTES, 'UTF-8');
//ecc..
//controlliamo che un campo esista
if($controllo && isset($controllo)){
	
// Uso PDO per inserimento dati nel db se hai un altro metodo usa pure il tuo..
// Inserisci dati nel db ( ovviamente modifica il link di connection.php in base alla posizione del tuo file )
			include "connection.php";
 			$sql = 'INSERT INTO tabella SET
					nome = :nome,
					ecc = :ecc,
					ultimo = :ultimo';
			$s = $pdo->prepare($sql);
			$s->bindValue(':nome', $this->nome);
			$s->bindValue(':ecc', $this->ecc);
			$s->bindValue(':ultimo', $this->ultimo);
			$s->execute();
			
			//finito il caricamento torno al modulo vuoto ( in questo caso alla pagina precedente "di provenienza" )
// Per sicurezza unsetta tutte le variabili.. ( anche se non credo che serva, o meglio puoi farne a meno salvo che non si tratti di un ciclo, in quel caso è necessario.. )
unset($controllo);
unset($nome);
//ecc..
			header("Location:".$_SERVER['HTTP_REFERER']."");
  			exit();
		}else{
		
		echo 'Quello che ti pare..';
		
		}
?>
 
Ultima modifica:

antonioantonio

Nuovo Utente
27 Set 2015
25
0
0
Ciao 892,

Oggi provo e ti faccio sapere...purtroppo. tra il lavoro ed il supporto del motore della mia auto ( che mi ha abbandonato in autostrada) .. .sto avendo poco tempo per le prove

Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Impossibile svuotare cache DNS Reti LAN e Wireless 1
B svuotare cache? PHP 3
max75 query su due tabelle e dati doppioni MS Access 2
K Form che manda dati doppi PHP 1
T problemi con dati menu a tendina HTML e CSS 2
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
V dati scomparsi dal sito HTML e CSS 3
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
A Stampare dati da form PHP 15
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0
otto9due $_FILE non passa i dati dal form PHP 1
N dati tabella non presi PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Assegnare dati fetch request ad una variabile globale Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
A invio massivo dati a file php Javascript 4
M Inviare dati nel db dopo risposta alert PHP 0
A recuperare i dati passati nel post PHP 1
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
J Form inserimento dati in database Ajax 1
D Recupero dati da HDD esterno Hardware 0
L non duplicare dati in stato "aggiornamento" PHP 6
L inserire dati multi livello PHP 8
L input (rilevare cambio dati) PHP 3
L input dati con inser into select ? PHP 4
W Invio Dati ad un altra pagina Classic ASP 1
A Mostrare dati database per pagine PHP 2
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
S Gestire scelta dropdown con dati da Mysql PHP 2
C Estrarre dati stringa Sql Database 1
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
W Evitare ridondanza dei dati Classic ASP 3
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 sql importazione dati MySQL 0
C Aggiungere blocco dati Javascript 6

Discussioni simili