Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-10-2006, 16:45   #1
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
[PHP-HTML] Cancellare Post Data

Sto creando delle pagine php e mi sono trovato necessitato a usare un form html in esse. Il form mi serve per raccogliere dei dati da inserire in un database mysql mediante codice php. Il problema e' che questa pagina php spedisce i valori di POST della form a se stessa e il codice per l'inserimento nel DB e' contenuto nella stessa pagina php del form. Cio' comporta che, una volta inseriti i valori e inviati questi, ovviamente si riapre la stessa pagina, identica, con lo stesso form ma con l'aggiunta della scritta "Dati inviati con successo" in coda.
Questo e' l'effetto, dal punto di vista grafico, che voglio ottenere, cioe' rimango sempre nella stessa pagina php visualizzando sempre lo stesso form da compilare; cio' mi permette inserimenti veloci e continui.
Il punto sta nel fatto che se malauguratamente refresho la pagina, i valori POST si ripresentano immutati e il refresh comporta una loro rispedizione al codice php che va a inserirli ancora nel database.
Il mio obbiettivo e' fare in modo che una volta inseriti i dati nel db, i valori di post scompaiano, o comunque riuscire a fare in modo che il browser non riesca piu' a rispedirli, cosa che causerebbe un ulteriore inserimento degli stessi dati nel DB.
Ho letto in giro qualcosa su header, ma francamente non ho capito nulla

Qualcuno sa come fare?
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2006, 22:10   #2
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Ma sapete che statisticamente i miei post hanno il 90% di possibilità a rimanere senza risposte?

Mi serve decisamente un consiglio per ovviare al riinvio dei postdata con il refresh.
plz
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2006, 00:09   #3
Slide
Senior Member
 
L'Avatar di Slide
 
Iscritto dal: Mar 2006
Messaggi: 1377
Io credo che sia un problema incontrato da molti. Un ricerca su google gruppi potrebbe aiutarti.

Dunque, se l'utente esegue il refresh della pagina, l' array $_POST[] si
rirempie completamente? Sicuro che vi siano tutti i valori? Anche il nome del bottone "invia" ?

Fai qualche controllo... puoi stampare $_POST con
print_r
o
var_dump

Ora non ho l'ambiente di sviluppo sotto mano, mi spiace. Altrimenti facevo qualche prova anche se non tocco PHP da un bel po'.
Slide è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2006, 00:24   #4
Slide
Senior Member
 
L'Avatar di Slide
 
Iscritto dal: Mar 2006
Messaggi: 1377
Hai già provato questa soluzione?

Thread su NG

Fai sapere come va
Slide è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2006, 05:39   #5
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da Slide
Io credo che sia un problema incontrato da molti. Un ricerca su google gruppi potrebbe aiutarti.

Dunque, se l'utente esegue il refresh della pagina, l' array $_POST[] si
rirempie completamente? Sicuro che vi siano tutti i valori? Anche il nome del bottone "invia" ?

Fai qualche controllo... puoi stampare $_POST con
print_r
o
var_dump

Ora non ho l'ambiente di sviluppo sotto mano, mi spiace. Altrimenti facevo qualche prova anche se non tocco PHP da un bel po'.
Quando invio i dati con il bottone lui compila il vettore $_POST e lo spedisce a se stesso e li inserisce. I post data non vengono cancellati e rimangono in cache, tanto che facendo refresh, firef0x mi manda un messaggio di conferma di refresh in quanto ci sono proprio i post data e cliccando su prosegui vengono reinseriti tali e quali creando un doppione nel database.
Io voglio eliminare tutti i post, evitare che il browser li rilevi e mandi la finestrella di conferma, ed evitare in fin dei conti dei doppioni nel db.


edit: ho letto ora il tuo secondo post , oggi quando torno da scuola ci provo thx
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight

Ultima modifica di demos88 : 02-10-2006 alle 05:41.
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2006, 08:28   #6
Slide
Senior Member
 
L'Avatar di Slide
 
Iscritto dal: Mar 2006
Messaggi: 1377
Quote:
Originariamente inviato da demos88
Quando invio i dati con il bottone lui compila il vettore $_POST e lo spedisce a se stesso e li inserisce. I post data non vengono cancellati e rimangono in cache, tanto che facendo refresh, firef0x mi manda un messaggio di conferma di refresh in quanto ci sono proprio i post data e cliccando su prosegui vengono reinseriti tali e quali creando un doppione nel database.
Io voglio eliminare tutti i post, evitare che il browser li rilevi e mandi la finestrella di conferma, ed evitare in fin dei conti dei doppioni nel db.


edit: ho letto ora il tuo secondo post , oggi quando torno da scuola ci provo thx
Eh, ho ben presente il problema e l'ho capito. Io volevo sapere se, per scrupolo, ti eri comunque fatto una stampa video dell'array $_POST sia prima che dopo il refresh, e magari avevi scoperto che differivano per uno o due valori.
Comunque, c'è mezzo mondo che si è confrontato sul problema e ti conviene vedere le diverse soluzioni.

Fammi sapere se sei riuscito a far funzionare la soluzione adottata in quell' NG.

ByeZ!
Slide è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2006, 09:24   #7
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
$_POST = array();
header("Location: {$_SERVER['PHP_SELF']}");
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2006, 14:45   #8
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da kk3z
$_POST = array();
header("Location: {$_SERVER['PHP_SELF']}");
Da quello che posso capire svuoti l'array $_POST e fai un reindirizzamento alla pagina su cui lavoro. Effettivamente se io, al posto di aggiornare, riapro la pagina stessa mediante "vai", i postdata si cancellano e funziona come vorrei.
Il problema e' che queste righe non ho ben capito dove posizionarle, oltretutto ovunque le metta ottengo che premendo il bottone di invio dati la pagina si ricarichi e in coda visualizzi la scritta:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/nomesito.com/pagina.php:7) in /home/www/nomesito.com/pagina.php on line 147

Oltretutto i post data rimangono presenti, infatti se refresho la pagina ci sono ancora.

Puoi spiegarmi come usare quel codice?
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 03-10-2006, 16:41   #9
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
uppino?
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 03-10-2006, 17:08   #10
Slide
Senior Member
 
L'Avatar di Slide
 
Iscritto dal: Mar 2006
Messaggi: 1377
Quote:
Originariamente inviato da demos88
Warning: Cannot modify header information - headers already sent by (output started at /home/www/nomesito.com/pagina.php:7) in /home/www/nomesito.com/pagina.php on line 147

Oltretutto i post data rimangono presenti, infatti se refresho la pagina ci sono ancora.

Puoi spiegarmi come usare quel codice?
Ti tira fuori quell' errore perchè la funzione header() deve esser usata prima di inviare sull' http qualsiasi cosa. Quindi prima di "stampare" qualsiasi cosa, andrebbe quella chiamata.
Scaricati il manuale in formato CHM dal sito di php, così puoi cercare velocelmente le funzioni e capirne il funzionamento.

Ciao.
Slide è offline   Rispondi citando il messaggio o parte di esso
Old 04-10-2006, 17:29   #11
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
la funzione la avevo studiata pero' se la metto all'inizio del codice, quando vado a caricarla ovviamente l'header mi manda il loop il caricamento, se l'istruzione la metto nella stessa pagina che devo visualizzare è ovvio...
Ciò mi fa dedurre che dovrei fare piu' di una pagina ma non saprei come strutturarla... un header nella pagina che chiamo che mi reindirizza alla pagina del form? ma poi non e' la stessa cosa?

Non sono convinto
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:39.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v