Modulo per l'invio dei dati in PHP (POST, GET). Invio multiplo per modulo Limita invio php

elaborazione del lavoro (7)

Ho un modulo php che si trova su contact.html

Il modulo viene elaborato da processForm.php

Quando l'utente compila il modulo e fa clic su Invia, processForm.php invia e-mail e indirizza l'utente a-processForm.php con un messaggio su quella pagina "Success! Il tuo messaggio è stato inviato."

Non so molto di php, ma so che l'azione che chiama questo è:

// Morire con un messaggio di successo die(" Successo! Il tuo messaggio è stato inviato.");

grazie a

Risposte

Per rimanere una pagina per pagina, puoi lasciare l'azione vuota (action="") nel tag del modulo o lasciarla del tutto.

Per il messaggio, crea una variabile ($messaggio = "Successo! Hai inserito: ".$input;") e quindi una variabile echo nella posizione della pagina in cui vuoi che appaia il messaggio con .

Puoi utilizzare # azione nell'azione del modulo

Questo può essere fatto in due modi:

  1. Invia il modulo alla stessa pagina. (Questo può essere fatto impostando l'azione del modulo sullo stesso URL) nel qual caso dovrai gestire il modulo inviato con uno script PHP.
if(isset($_POST["submit"])) ( // Inserisci il codice che desideri eseguire dopo che il modulo è stato inviato // Visualizza il messaggio di successo o errore se presente ) else ( // Visualizza il modulo e il pulsante Invia )

2. Utilizzo di un modulo AJAX che è un po' più complicato del primo metodo per un principiante.

Il modo migliore rimanere sulla stessa pagina - pubblicare sulla stessa pagina.

">

Dovresti usare un codice simile a questo:

eco"

"; if(isset($_POST["submit"])) // se il modulo è stato inviato (se sei arrivato qui con i dati del modulo) ( echo "Success"; ) else // se il modulo non è stato inviato (se sei arrivato qui senza dati del modulo) ( echo " ... "; ) eco "
";

Il codice if è tipico di molte pagine, tuttavia è molto semplificato.

Di solito devi controllare alcuni dati nel primo "se" (controlla se i campi del modulo non erano vuoti, ecc.).

Visita www.thenewboston.org o phpacademy.org. Ci sono ottimi tutorial video PHP che includono moduli.

Amico. Usa questo metodo. Non ci sarà alcun "messaggio variabile indefinito" e funzionerà perfettamente.



Questo articolo descrive in dettaglio l'uso della variabile PHP _SELF.

Cos'è la variabile PHP _SELF?

La variabile PHP _SELF restituisce il nome e il percorso del file corrente (relativo alla root del documento). È possibile utilizzare questa variabile nell'attributo action del modulo. Ci sono anche alcune sfumature di cui dovresti essere a conoscenza. Naturalmente, non possiamo ignorare queste sfumature.

Diamo un'occhiata ad alcuni esempi.

echo $_SERVER["PHP_SELF"];

1) Supponiamo che il tuo file php si trovi al seguente indirizzo:

http://www.yourserver.com/form-action.php

In questo caso, la variabile PHP _SELF conterrebbe:

"/form-azione.php"

2) Supponiamo che il tuo file php si trovi a questo indirizzo:

http://www.yourserver.com/dir1/form-action.php

PHP _SELF sarà:

"/dir1/form-azione.php"

PHP _SELF nell'attributo action del modulo. Perché era lì?

In genere, la variabile PHP _SELF viene utilizzata nell'attributo action del tag form. L'attributo action specifica l'indirizzo a cui verrà inviato il contenuto del modulo dopo la conferma (l'utente fa clic sul pulsante con type="submit"). Di norma, questa è la stessa pagina da cui è partito il modulo.

Tuttavia, se si rinomina il file a cui fa riferimento il modulo, sarà necessario rinominare il nome del file nell'attributo action, altrimenti il ​​modulo non funzionerà.

La variabile PHP _SELF ti salverà da correzioni non necessarie, poiché l'indirizzo della pagina verrà generato automaticamente in base al nome del file.

Supponiamo che tu abbia un file form-action.php e desideri che il modulo venga inviato allo stesso file dopo averlo inviato. Solitamente scritto così:

Ma puoi usare la variabile _SELF di PHP invece di form-action.php. In questo caso, il codice sarà simile a:

" >

Codice per form-action.php

Combiniamo lo script con il form:

$nome"; eco "
Puoi utilizzare nuovamente il seguente modulo per inserire un nuovo nome."; ) ?> ">

Il codice nella parte superiore della pagina HTML verrà eseguito per primo. La prima riga di codice controlla se il modulo è stato inviato o meno. Se $_POST["submit"] esiste, viene eseguito il costrutto IF (TRUE) e viene visualizzato il nome immesso dall'utente.

Se la variabile $_POST["submit"] non esiste, allora il form non è stato inviato e, di conseguenza, il costrutto IF non verrà eseguito (FALSE). Pertanto, il nome utente non verrà visualizzato.

Punti indesiderati relativi alla variabile PHP _SELF

La variabile PHP _SELF viene utilizzata per ottenere il nome e il percorso del file corrente - buono, ma può anche essere usato dagli hacker - cattivo. Se la tua pagina ha PHP _SELF, l'utente può inserire una barra (/) e scrivere script XXS dannosi.

Considera un esempio:

"metodo="post">

Ora, se l'utente proveniva da un URL normale , nella barra degli indirizzi ci sarà qualcosa del tipo:
http://www.tuodominio.com/form-action.php
e il codice sopra può essere letto così:

In questo caso, come puoi vedere, va tutto bene.

Consideriamo ora la situazione in cui l'utente inizia a "chemizzare" con la barra degli indirizzi:
http://www.tuodominio.com/form-action.php/%22%3E%3Cscript%3Ealert("xss")%3C
/script%3E%3Cfoo%22

In questo caso, dopo aver eseguito PHP, il tuo codice sarà simile a questo:

Puoi vedere di persona che il tag script e il comando alert sono stati aggiunti al codice. Quando questa pagina viene caricata, l'utente vedrà una finestra di avviso. Questo è un semplice esempio di come può essere sfruttata la variabile PHP _SELF.

Qualsiasi codice JavaScript può essere aggiunto tra i tag di script. L'hacker può anche collegarsi a un file JavaScript che sarà ospitato su un altro server. È probabile che questo file contenga codice dannoso attraverso il quale un hacker può modificare le variabili globali e reindirizzare il modulo a un altro indirizzo per intercettare l'input dell'utente.

Come evitare problemi con PHP _SELF

I problemi possono essere evitati utilizzando la funzione htmlentities(). Dai un'occhiata al codice del modulo in cui è presente la funzione htmlentities().

"metodo="post">

La funzione htmlentities() converte tutti i possibili caratteri nelle corrispondenti entità HTML. Ora un tentativo di bypassare la variabile PHP _SELF fallirà e il risultato dell'iniezione di codice dannoso sarà espresso come segue: