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:
- 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.
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:
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().
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: