Come configurare smartphone e PC. Portale informativo

PHP e moduli. PHP _SELF nell'attributo dell'azione del modulo

Ultimo aggiornamento: 1.11.2015

Uno dei principali modi in cui i dati vengono trasmessi a un sito Web è attraverso l'elaborazione di moduli. I moduli sono speciali elementi di markup HTML che contengono vari elementi di input: campi di testo, pulsanti e così via. E con l'aiuto dei dati del modulo, possiamo inserire alcuni dati e inviarli al server. E il server sta già elaborando questi dati.

La creazione di moduli comprende i seguenti aspetti:

    Crea un elemento

    nel markup HTML

    Aggiunta di uno o più campi di input a questo elemento

    Impostazione del metodo di trasferimento dei dati: GET o POST

    Impostazione dell'indirizzo a cui verranno inviati i dati inseriti

Quindi creiamo un nuovo modulo. Per fare ciò, definiremo un nuovo file form.php, in cui collocheremo il seguente contenuto:

Entra nel sito

Login:

Parola d'ordine:

L'attributo action="login.php" dell'elemento del modulo indica che i dati del modulo verranno elaborati dallo script. login.php, che sarà con il file form.php in una cartella. E l'attributo method="POST" indica che il metodo POST verrà utilizzato come metodo di trasferimento dei dati.

Ora creiamo un file login.php, che avrà il seguente contenuto:

La tua password: $password"; ?>

Per ottenere i dati del modulo, viene utilizzata la variabile globale $_POST. Rappresenta un array associativo di dati inviati utilizzando il metodo POST. Usando le chiavi, possiamo ottenere i valori inviati. Le chiavi in ​​questo array sono i valori degli attributi del nome dei campi di input del modulo.

Poiché l'attributo del nome del campo di input di accesso è impostato su login ( ), quindi nell'array $_POST il valore di questo campo rappresenterà la chiave "login": $_POST["login"]

E poiché ci sono situazioni in cui il campo di input non verrà impostato, ad esempio, quando si passa direttamente allo script: http://localhost:8080/login.php. In questo caso, è opportuno verificarne la presenza prima di elaborare i dati utilizzando la funzione isset(). E se la variabile è impostata, la funzione isset() restituirà true .

Ora possiamo passare al modulo:

E premendo il pulsante, i dati inseriti con il metodo POST verranno inviati allo script login.php:

Non è necessario inviare i dati del modulo a un altro script, è possibile elaborare i dati del modulo nello stesso file del modulo. Per fare ciò, cambia il file form.php nel seguente modo:

La tua password: $password"; ) ?>

Entra nel sito

Login:

Parola d'ordine:

La sicurezza dei dati

L'organizzazione della sicurezza dei dati è di grande importanza in PHP. Diamo un'occhiata ad alcuni semplici meccanismi che possono migliorare la sicurezza del nostro sito web.

Ma prima, prendiamo il modulo dall'ultimo argomento e proviamo a inserire alcuni dati in esso. Ad esempio, inserisci nel campo di accesso "", e nel campo della password il testo "

parola d'ordine

":

Dopo aver inviato i dati al markup html, verrà iniettato un codice javascript che visualizza una finestra di messaggio.

Per evitare questi problemi di sicurezza, dovresti usare la funzione htmlentities():

If(isset($_POST["login"]) && isset($_POST["password"]))( $login=htmlentities($_POST["login"]); $password = htmlentities($_POST["password" ]); echo "Il tuo login: $login
La tua password: $password"; )

E anche dopo aver inserito il codice html o javascript, tutti i tag verranno sottoposti a escape e otterremo il seguente output:

Un'altra funzione: la funzione strip_tags() ti consente di escludere completamente i tag html:

If(isset($_POST["login"]) && isset($_POST["password"]))( $login=strip_tags($_POST["login"]); $password = strip_tags($_POST["password" ]); echo "Il tuo login: $login
La tua password: $password"; )

Il risultato del suo lavoro con lo stesso input sarà il seguente output.

Buona giornata. Alexey Gulynin è in contatto. Nell'ultimo articolo, hai appreso della serializzazione in php . In questo articolo vorrei parlare di come lavorare con moduli in PHP. Il linguaggio PHP è progettato per la programmazione di script web e l'elaborazione dei moduli è forse il luogo più importante in questo processo. Ora non ci sono siti che non avrebbero, ad esempio, la registrazione o un modulo di feedback, o un questionario. Forum, negozi online, aggiunta di un commento, invio di un messaggio su un social network: tutto questo è l'elaborazione dei dati inseriti nei campi del modulo. Vediamo con un esempio come moduli di processo in PHP.
Attueremo un semplice compito: devi creare 2 campi (nome e cognome), passare questi dati allo script action.php, di conseguenza dovrebbe apparire un saluto "Benvenuto, cognome nome". Chi ha dimenticato come vengono creati i moduli e quali campi ci sono, puoi vedere. Creiamo un file test.html:

Nome: Cognome:

Attiro la vostra attenzione sul fatto che il file action.php (nel nostro caso) deve trovarsi nella stessa cartella del file test.html. Qui puoi specificare percorsi relativi e assoluti. Fai attenzione, molti errori sono correlati al percorso errato dello script del gestore del modulo.

Creiamo un file action.php con il seguente contenuto:

Se ora apriamo il file test.html, riempiamo i campi del modulo e clicchiamo sul pulsante, finiremo nel file action.php, dove verrà visualizzato un messaggio. In questo caso, il browser accede allo script action.php e lo passa attraverso il "?" tutti i valori degli attributi del nome che si trovano all'interno dei tag , divisi da & . Nota cosa viene sostituito da $_SERVER .

Possiamo risolvere il nostro problema analizzando la stringa QUERY_STRING usando le funzioni standard di manipolazione delle stringhe PHP, ma è meglio usare un altro meccanismo: questo è l'uso dell'array $_REQUEST. Tutti i dati ricevuti dai campi del modulo, PHP li inserisce nell'array $_REQUEST, indipendentemente da come i dati sono stati inviati: POST o GET (puoi scoprirlo tramite $_SERVER["REQUEST_METHOD"] ). Lascia che ti ricordi come differiscono questi metodi:

Il metodo GET è pubblico, il metodo POST è privato, cioè differiscono nel modo in cui i parametri vengono passati. Esempio:

1) Se utilizziamo il metodo post: mysite.ru/request.php.
2) Se utilizziamo il metodo get: mysite.ru/request.php?myname="Alex"&surname="Gulynin".

Inoltre, oltre all'array $_REQUEST, PHP crea gli array $_GET e $_POST. Attuiamo ora il nostro compito, sulla base delle conoscenze acquisite:

Se ora compiliamo il modulo e clicchiamo sul pulsante, vedremo che lo script action.php ci saluta per cognome e nome. Tutto funziona correttamente.

Qui va tutto bene, ma se cambiamo il nome dello script, dovremo apportare modifiche al file test.html. Modifichiamo il file action.php in modo che, accedendovi, o venga visualizzato un form quando non abbiamo inviato nulla, oppure un saluto quando abbiamo premuto il pulsante:

"> Nome: Cognome:

Ora non dipendiamo dal nome dello script, perché impostalo tramite la variabile di ambiente $_SERVER["SCRIPT_NAME"]. La costruzione =$_SERVER["SCRIPT_NAME"]?> equivale alla costruzione .
Oltre alla variabile di ambiente SCRIPT_NAME, ce ne sono molte altre.

Oggi lavoreremo alla creazione di un bellissimo modulo di feedback HTML per un sito Web che funziona su PHP e dispone di una protezione antispam integrata. Non sono necessarie conoscenze particolari, saranno sufficienti le basi dell'html e della logica elementare. Fornirò file già pronti che potrai inserire nel sito senza modifiche o adattarti alle tue esigenze.

Di recente ho scritto un articolo su come creare un plug-in Contact Form 7. Puoi anche creare facilmente un modulo di feedback su Joomla e altri CMS popolari.

Ma che dire dei siti che non utilizzano CMS popolari? - Resta da fare tutto a mano.

Inoltre, per WordPress è possibile utilizzare il feedback senza plug-in. Plugin extra creano un carico notevole sul server e il loro rifiuto permette di velocizzare il sito.

Puoi ordinare l'installazione e la configurazione del modulo finito per 500 rubli qui (questo è per coloro che sono troppo pigri per lavorare con le mani o l'abilità non è sufficiente).

Il principio del modulo di feedback su html

Il nostro modulo avrà 5 campi di inserimento dati: nome, indirizzo e-mail, numero di telefono, indirizzo del sito Web, testo del messaggio (puoi eliminarli o modificarli tu stesso).

Tutti i campi, ad eccezione dell'indirizzo del sito Web, saranno obbligatori (puoi anche configurarlo tu stesso).

Per i campi con un indirizzo email e un sito web verrà effettuata una verifica obbligatoria della correttezza dei dati inseriti.

La forma finale di comunicazione sarà simile a questa:


Un modulo di contatto creato in html richiede 3 elementi per funzionare.

Il primo è responsabile della struttura del form stesso, del tipo e del numero dei campi di inserimento dati. Questo è il normale codice html.

Il secondo è responsabile del trattamento dei dati che l'utente inserisce nei campi del modulo. Determina cosa, dove e in quale forma inviare dopo aver premuto il pulsante di invio. Per l'implementazione viene utilizzato uno speciale script PHP.

Il terzo è responsabile dell'apparenza. Imposta la dimensione e la posizione dei campi di immissione dati, aggiunge vari colori ed effetti. È tutto impostato dagli stili CSS.

Versione demo del modulo

Ti guideremo passo dopo passo nella configurazione di ciascuno di questi elementi.

Creazione di un layout HTML

Per non rendere l'articolo troppo lungo e per non aggiungere ogni elemento separatamente, fornirò il codice html completo e di seguito descriverò ogni blocco e le possibili modifiche.

Il tag viene utilizzato per designare i moduli in html.

, all'interno del quale vengono inseriti i parametri necessari.

Formato corretto" [email protetta]"

Il formato corretto è "+7-123-4567890"

Il formato corretto è "http://someaddress.com"

"Inserisci il tuo nome" richiesto />

"Inserisci l'indirizzo email" richiesto />

"Inserisci il numero di telefono" richiesto />

Il formato corretto è "+7-123-4567890"

"Inserisci l'indirizzo del tuo sito web" modello = "(http|https)://.+" />

Il formato corretto è "http://someaddress.com"

Cominciamo con la prima riga.

classe="modulo_contatto"- specificare la classe per impostare gli stili CSS in futuro.

action="contact-form.php"- specificare il nome del file con lo script che elaborerà i dati del modulo e invierà il messaggio. Se il file si trova nella stessa cartella della pagina con il modulo, è sufficiente specificare solo il nome del file, se si trova in un'altra cartella, sarà necessario specificare il percorso del file.

Seguono 4 blocchi.

Responsabile della visualizzazione dei campi di immissione dei dati, i nomi chiariscono chi è responsabile di cosa. I campi stessi vengono visualizzati utilizzando i tag , all'interno del quale sono specificate le seguenti caratteristiche:

genere– è responsabile del tipo di dati inseriti, il testo è in chiaro, l'e-mail è un indirizzo e-mail, la correttezza di tali campi viene automaticamente verificata (@ deve essere presente), tel è un numero di telefono, url è l'indirizzo di un sito web.

Nome- il nome dell'elemento stesso, è necessario che lo script sappia utilizzare i dati di ogni campo. Se crei più campi dello stesso tipo, devi assegnare un nome a ciascun campo.

segnapostoè un suggerimento all'interno del campo, testo che sostituisce il campo vuoto dell'elemento. Può essere modificato o cancellato, non pregiudica il funzionamento del modulo.

Necessario- Questo parametro indica che il campo è obbligatorio. Puoi decidere tu stesso quali elementi sono necessari e quali no.

modello="(http|https)://.+"- questa costruzione serve per verificare la correttezza del campo del sito, indica che l'indirizzo deve contenere http: // testo o https: // testo, altrimenti ci sarà un errore.

Alcuni campi hanno una descrizione comando che appare quando viene selezionato un elemento. È ferita , dove form_hint è la classe dell'elemento (le sue proprietà sono scritte in CSS). Puoi specificare qualsiasi testo nella descrizione comando per ogni campo del modulo di contatto. Se non hai bisogno di tale funzionalità, elimina l'intero tag.

I campi per l'inserimento del messaggio stesso sono contrassegnati da un tag

È possibile elaborare i moduli senza preoccuparsi dei nomi dei campi effettivi.

Per fare ciò, puoi utilizzare (a seconda del metodo di trasferimento) l'array associativo $HTTP_GET_VARS o $HTTP_POST_VARS . Questi array contengono coppie nome/valore per ogni elemento del modulo inviato. Se non ti interessa, puoi usare l'array associativo $_REQUEST.

Esempio 6

Gestione dell'input arbitrario indipendentemente dal metodo di trasferimento $valore) echo "$chiave == $valore
"; ?>

Esempio 7. Gestione di un clic di un pulsante utilizzando l'operatore "@".

">

Utilizzando la funzione header(), inviando al browser l'intestazione "Location", è possibile reindirizzare l'utente ad una nuova pagina.

Per esempio:

Trasferimento di un file al server. Caricare un file. Caricamento

PHP ti consente di inviare file al server. Il modulo HTML per l'invio dei file deve contenere l'argomento enctype="multipart/form-data" .

Inoltre, il modulo deve avere un campo nascosto denominato max_file_size prima del campo di copia del file. Questo campo nascosto dovrebbe contenere la dimensione massima del file trasferito (di solito non più di 2 MB).

Il campo di trasferimento file stesso è un normale elemento INPUT con l'argomento type="file" .

Per esempio:

"metodo="post">

Dopo che un file è stato caricato sul server, gli viene assegnato un nome univoco e viene archiviato nella directory temporanea. Il percorso completo del file viene scritto in una variabile globale il cui nome corrisponde al nome del campo per il trasferimento di questo file. Inoltre, PHP memorizza alcune informazioni aggiuntive sul file passato in altre variabili globali:

Esempio 8

Elaborazione del file trasferito "; echo "nome: ".$_FILES["fileutente"]["nome"]."
"; echo "dimensione: ".$_FILES["fileutente"]["dimensione"]."
"; echo "digita: ".$_FILES["fileutente"]["tipo"]."
"; } ?>
"metodo="post">

Esempi di caricamento di file sul server

In caso di problemi con la conversione del file caricato da parte del server, il simbolo con il codice 0x00 sostituito con uno spazio (carattere con codice 0x20), aggiungere al file httpd.conf dalla directory Apache (/usr/local/apache) le seguenti righe.

CharsetRecodeMultipartForms disattivato

Articoli correlati in alto