Protezione di parola d'accesso con PHP, MySQL e le variabili di sessione
| by Dan McConkey | February 11, 2005
Una delle promesse grandi che realmente sono venuto allineare quando il nostro mondo Internet-permesso ha raggiunto il ventunesimo secolo è interazione efficiente di cliente--commercio. Ogni giorno, trovo un nuovo senso passare con i errands della vita senza mai attendere sulla stretta un cassiere di banca, un farmacista, o un agente di assicurazione. La faccio tutto l'in linea.
I consumatori savvy del Internet stanno venendo prevedere tale empowerment di fotoricettore. E mentre queste transazioni delle informazioni richiedono solitamente una certa specie dei dati riservati che viaggiano l'etere, come il webmaster, sopportate la difficoltà di mantenere quei dati assenti da coloro che non ha destra ad esso.
Poiché la retina esplora e firme dell'onda di cervello è proprietà tranquille dei flicks schiavi del James, siamo attaccati usando le vecchie parole d'accesso noiose normali.
È questo realmente sicuro?
Otteniamo questo primo allontanato. L'unici allineare fissano il calcolatore sono uno che è disconnesso. Il genere come “di unico automobile sicuro è quello che si siede nel vostro garage.„ La vita è una proposta ricompensa/di rischio e, affrontiamola, questa (probabilmente) non è Knox forte, noi sta fissando.
Le misure di sicurezza elencate qui sono adatte a dati di giardino-varietà. Ho usato questi schemi per scrivere le pagine posteriori della gestione di Web site per i carrelli di shopping in linea. Li ho usati per scrivere le pagine “del socio„ in cui i rivenditori possono trasferire gli annunci ed i dati dal sistema centrale verso i satelliti di vendite dai grossisti. Non lo userei per assicurare i numeri della carta di credito, i numeri di previdenza sociale, o i codici nucleari del lancio.
Così che cosa sono PHP, MySQL e variabili di sessione?
PHP è un linguaggio di programmazione usato (in questo caso) per scrivere il HTML. MySQL è una base di dati. La variabile di sessione è usata dagli assistenti di fotoricettore per rintracciare le informazioni da una pagina su un dominio ad un altro. Questo articolo non è a come-per a la una o la altra tecnologia. Se non state molto bene con loro, potreste copiare appena ed incollare i campioni di codice in questo articolo e costruirsi una parola d'accesso di base ha protetto il Web site. Potreste anche leggere le note della scogliera per orgoglio e pregiudicare ed ottenere appena corrente alternata + nel codice categoria della letteratura. La vostra scelta.
Otteniamo iniziato con le sessioni
Si dice spesso che il fotoricettore è “apolide„, significando che ogni Web page è interamente independent, non avente bisogno di altra pagina di esistere e non prendente le informazioni dalla pagina precedente. Ciò è grande per surfing anonimo da un luogo al seguente, ma puzza per protezione di parola d'accesso. I consumatori desiderano le informazioni protette parola d'accesso, ma non desiderano digitare la loro parola d'accesso ad ogni pagina. Così ci giriamo verso il nostro web server per tenerci al corrente di un utente mentre si trova sul nostro cantiere.
Ex. 1.
<? php
session_start ();
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
</body>
</html>
estremità ex. 1
il session_start () è una funzione di PHP che osserva per vedere se una sessione già allora è stata iniziata fa una di due cose:
1. Se una sessione è stata iniziata, non fa niente.
2. Se una sessione non è stata iniziata, comincia uno.
È importante notare che il session_start () deve accadere prima di qualunque altro PHP alla pagina, se la desiderate funzionare. Cominciare ogni pagina parola d'accesso-protetta con esso. Convalida
Ora pensiamo la convalida di base. Che specie delle cose dobbiamo compire?
* In primo luogo, dobbiamo controllare per vedere se l'utente già ha entrato, in modo da non chiediamo una parola d'accesso ad ogni pagina. Se il nostro utente già ha entrato, lo passiamo attraverso al soddisfare sicuro.
* Se l'utente già non ha entrato, lo abbiamo bisogno di di fare così. Così dobbiamo scrivere una forma di inizio attività.
* Abbiamo bisogno di vicino a paragoniamo i risultati della forma di inizio attività ad una lista conosciuta dei usernames e delle parole d'accesso. Se l'utente verifica, lo passiamo avanti al soddisfare sicuro.
* Se l'utente non verifica, lo dirigiamo di nuovo allo schermo di inizio attività.
* Infine, dobbiamo fornire all'utente la capacità di annotare fuori.
Così iniziamo con una struttura di base che riempiremo più successivamente.
Ex. 2
<? php
sessione di inizio di // se non già iniziata
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
}
write_log_in di funzione ($text)
{
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
controllo di // per vedere se già sono entrati
// se sì, di ritorno allineare
// se no, controllo per vedere se l'ospite ha provato appena ad entrare
// se sì, verifica la parola d'accesso
// se funzionasse, ritorno allineare
// se non, trasmetterli di nuovo all'inizio attività
// se l'utente non inizio attività giusto, (s) ha bisogno di
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
soddisfare sicuro dell'estremità di //
} estremità di // se (verificare ())
?>
</body>
</html>
Concludono ex. 2
Come I detta, questo è giusto una struttura. Gradisco lanciare tutti i miei progetti questo senso. Permette che me ottenga una grande vista di che cosa sto facendo prima di ottenere mired giù in dettaglio.
Basicamente, finora, tutto che abbiamo fatto è posto un certo soddisfare segreto all'interno dell'se dichiarazione. Se l'utente è valido, mostriamo il soddisfare, se non, non. Scrittura della forma di inizio attività
La prima cosa che dovremmo carne fuori è la nostra funzione di inizio attività. Ciò è una forma di base, senza le flange ed i fischi, in modo da dovrebbe essere abbastanza diretta.
Ex 3
write_log_in di funzione ($text)
{
eco “
<p>$text</p>
'' del action= del method='post del <form >
identificazione usuario < di p >: name='user_name/></p> del type='text del <input
<p>Password: name='password/></p> del type='password del <input
type='submit value='Logon'></p> del <p><input
</form>
";
} funzione del write_log_in dell'estremità di //
Estremità ex. 3
Nessun problemi, destra? Tutto questo IS-IS PHP che scrive una forma di base di inizio attività del HTML. Due cose valgono la pena di notare:
1. L'attributo di metodo alla modifica del <form> è “alberino„. Potremmo usare “otteniamo„, ma quello aggiungerebbe il nostri nome e parola d'accesso dell'utente al URL come varibles. our_url dello IE? user_name=bob&password=truck64. Ciò mostra la parola d'accesso--in testo normale-- destra là nel URL. Perchè spendere tutto questo volta su sicurezza se voi giusto stanno andando mettere le parole d'accesso della gente fuori per esposizione?
“l'alberino„ è molto più sicuro, forzando l'assistente per tenersi al corrente dei dati della forma, piuttosto che il URL. Qualunque momento potete mantenere le informazioni dal URL, siete un punto più vicino ad un Web page sicuro.
2. Dopo desidererete guardare l'attributo di azione alla modifica del <form>. Lasciarla in bianco dice all'assistente a che progettiate procedere questi risultati della forma con questa stessa pagina.
Controllo dei valori di inizio attività
Ora la carne fuori la nostra struttura poco più.
Ex. 4
<? php
la sessione di inizio di // se non già ha cominciato
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
}
write_log_in di funzione ($text)
{
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
controllo di // per vedere se già sono entrati
// se sì, di ritorno allineare
controllo di // per vedere se l'ospite ha provato appena ad entrare
$user_name = $_POST [“user_name„];
$password = $_POST [“parola d'accesso„];
se (&& $password di $user_name)
{
// verifica la parola d'accesso e l'inizio attività a base di dati
$db = mysql_pconnect (“localhost„, “$user_name„, “$password„);
se ($db)
{
la variabile di sessione del registro di // e rimuove la funzione di verificazione
$valid_user = $user_name;
$_SESSION [“valid_user„] = $valid_user;
di ritorno allineare;
}
altrimenti
{
utente difettoso e parola d'accesso di //
$text = “nome e parola d'accesso dell'utente non ha abbinato„;
write_log_in ($text);
}
}
altrimenti
{
// se l'utente non inizio attività giusto, (s) ha bisogno di
}
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
soddisfare sicuro dell'estremità di //
} estremità di // se (verificare ())
?>
</body>
</html>
Concludono ex. 4
In primo luogo, controlleremo se l'utente provi appena ad entrare.
$_POST è un allineamento superglobal di PHP che si tiene al corrente dei dati trasmessi ad una pagina via una modifica del method='post'> del <form. Nella funzione di inizio attività, abbiamo chiamato il nostri user_name e parola d'accesso degli input, in modo da possiamo accedere all'utente immesso denominando $_POST [“user_name„] e $_POST [“parola d'accesso„].
Dopo funzioneremo se (&& $password di $user_name) dichiarazione per vedere se sia valori della stretta di $_POST [“user_name„] che di $_POST [“parola d'accesso„]. Se, l'utente ha provato appena ad entrare.
La nostra sezione seguente del codice è la parte che realmente controlli se il nome e la parola d'accesso dell'utente sono corretti. Qui, usiamo la tabella di utente del MySQL (parte della base di dati del mysql) per tenerci al corrente dei nostri utenti. Ciò è, forse, l'itinerario migliore, poichè MySQL già è regolato fino ai permessi di accesso di controllo. Tuttavia, questo può presentare i problemi quando desiderate mantenere il collegamento della base di dati aperto attraverso le pagine. Inoltre, alcune aziende ospitanti gli non daranno l'accesso di concessione (lasciarli fanno i nuovi utenti) alla base di dati del mysql.
In quei casi, potete compire molto la stessa cosa installando la vostra propria tabella di utenti nella vostra base di dati. Allora dovreste scrivere una domanda di SQL che confronta i nomi e le parole d'accesso dell'utente. Quello osserverebbe qualcosa di simile:
Ex. 5
$select = “user_name prescelto dagli utenti
dove user_name di user_name='$
e password=PASSWORD (“$password„)„;
$query = mysql_query ($select);
se (== 1 dei mysql_num_rows ($query))
{
utente convalidato // e parola d'accesso
...
Estremità ex 5
Ottenendo di nuovo alla nostra convalida usando MySQL costruito nelle caratteristiche, sappiamo che il nome e la parola d'accesso dell'utente hanno verificato perché il tentativo del collegamento ha restituito allineare.
Registro della variabile di sessione
Ora che conosciamo il nostro controllo di nome e di parola d'accesso dell'utente fuori, dobbiamo memorizzare quelle informazioni e permettere che il nostro utente continui a surfing la nostra zona protetta senza entrare ogni pagina. Osservando posteriori l'esempio quattro, notiamo un altro delle variabili superglobal del PHP: $_SESSION.
$_SESSION è un allineamento che tiene tutte le nostre variabili di sessione. Regolando la variabile di sessione del valid_user, possiamo più successivamente fare una chiamata al ession_is_registered a (“valid_user„) per vedere se il nostro utente già ha entrato con successo.
Annotare fuori
L'ultima cosa dobbiamo assistere a a sta permettendo che i nostri utenti annotassero dal nostro sistema. In questo caso, che abbiamo usato una parte interna semplice di collegamento la nostra zona protetta.
Ex 6
<? php
la sessione di inizio di // se non già ha cominciato
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
session_unregister (“valid_user„);
session_destroy ();
session_start ();
}
write_log_in di funzione ($text)
{
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
echeggiare “il ceppo out</a></p> del href='? log_out=1'> di <p><a„;
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
...
Concludere ex 6
In primo luogo, osservando nel corpo del HTML, vediamo un collegamento semplice del HTML che aggiunge una variabile al URL. In questo caso, il nome variabile è log_out ed il relativo valore è 1. Usiamo 1 come un valore perché è facile da immagazzinare in un URL, ma realmente tutto il valore più notevolmente di zero funzionerà.
Una volta che passiamo una richiesta di termine attività alla pagina, dobbiamo procederli. Quello è che cosa se la parte ($log_out) è per.
Se la dichiarazione controlla se una richiesta di termine attività fosse passata. Una volta che vede che uno era, unregisters la variabile di sessione del valid_user, allora esso distrugge la sessione interamente.
Ironicamente, inizia un nuovo sostegno di destra di sessione. Quello è nel caso l'utente decide entrare più successivamente (senza chiudere la finestra di browser), o entra come utente differente. Il codice finale
Mettendolo tutto otteniamo insieme questo:
Ex. 7
<? php
la sessione di inizio di // se non già ha cominciato
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
session_unregister (“valid_user„);
session_destroy ();
session_start ();
}
write_log_in di funzione ($text)
{
eco “
<p>$text</p>
'' del action= del method='post del <form >
identificazione usuario < di p >: name='user_name/></p> del type='text del <input
<p>Password: name='password/></p> del type='password del <input
type='submit value='Logon'></p> del <p><input
</form>
";
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
controllo di // per vedere se già sono entrati
se (session_is_registered (“valid_user„)) ritorno allineare;
controllo di // per vedere se l'ospite ha provato appena ad entrare
$user_name = $_POST [“user_name„];
$password = $_POST [“parola d'accesso„];
se (&& $password di $user_name)
{
// verifica la parola d'accesso e l'inizio attività a base di dati
$db = mysql_pconnect (“localhost„, “$user_name„, “$password„);
se ($db)
{
la variabile di sessione del registro di // e rimuove la funzione di verificazione
$valid_user = $user_name;
$_SESSION [“valid_user„] = $valid_user;
di ritorno allineare;
}
altrimenti
{
utente difettoso e parola d'accesso di //
$text = “nome e parola d'accesso dell'utente non ha abbinato„;
write_log_in ($text);
}
}
altrimenti
{
l'utente di // deve entrare
$text = “questo è un assistente sicuro. Prego inizio attività. „;
write_log_in ($text);
}
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
echeggiare “il ceppo out</a></p> del href='? log_out=1'> di <p><a„;
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
soddisfare sicuro dell'estremità di //
} estremità di // se (verificare ())
?>
</body>
</html>
Concludono ex. 7
Quello è un blocchetto hefty grazioso di codice da mettere alla testa di ogni Web page. Tipicamente, metterei il mio verifico () e funzioni del write_log_in () in una lima del seperate e li riferisco con una funzione di includ (). Quello fornisce il benifit aggiunto di aggiornamento del vostro Web site intero pubblicando una lima soltanto.
Sperare che aiuti.
Copyright (C) Dan 2005 McConkey
I consumatori savvy del Internet stanno venendo prevedere tale empowerment di fotoricettore. E mentre queste transazioni delle informazioni richiedono solitamente una certa specie dei dati riservati che viaggiano l'etere, come il webmaster, sopportate la difficoltà di mantenere quei dati assenti da coloro che non ha destra ad esso.
Poiché la retina esplora e firme dell'onda di cervello è proprietà tranquille dei flicks schiavi del James, siamo attaccati usando le vecchie parole d'accesso noiose normali.
È questo realmente sicuro?
Otteniamo questo primo allontanato. L'unici allineare fissano il calcolatore sono uno che è disconnesso. Il genere come “di unico automobile sicuro è quello che si siede nel vostro garage.„ La vita è una proposta ricompensa/di rischio e, affrontiamola, questa (probabilmente) non è Knox forte, noi sta fissando.
Le misure di sicurezza elencate qui sono adatte a dati di giardino-varietà. Ho usato questi schemi per scrivere le pagine posteriori della gestione di Web site per i carrelli di shopping in linea. Li ho usati per scrivere le pagine “del socio„ in cui i rivenditori possono trasferire gli annunci ed i dati dal sistema centrale verso i satelliti di vendite dai grossisti. Non lo userei per assicurare i numeri della carta di credito, i numeri di previdenza sociale, o i codici nucleari del lancio.
Così che cosa sono PHP, MySQL e variabili di sessione?
PHP è un linguaggio di programmazione usato (in questo caso) per scrivere il HTML. MySQL è una base di dati. La variabile di sessione è usata dagli assistenti di fotoricettore per rintracciare le informazioni da una pagina su un dominio ad un altro. Questo articolo non è a come-per a la una o la altra tecnologia. Se non state molto bene con loro, potreste copiare appena ed incollare i campioni di codice in questo articolo e costruirsi una parola d'accesso di base ha protetto il Web site. Potreste anche leggere le note della scogliera per orgoglio e pregiudicare ed ottenere appena corrente alternata + nel codice categoria della letteratura. La vostra scelta.
Otteniamo iniziato con le sessioni
Si dice spesso che il fotoricettore è “apolide„, significando che ogni Web page è interamente independent, non avente bisogno di altra pagina di esistere e non prendente le informazioni dalla pagina precedente. Ciò è grande per surfing anonimo da un luogo al seguente, ma puzza per protezione di parola d'accesso. I consumatori desiderano le informazioni protette parola d'accesso, ma non desiderano digitare la loro parola d'accesso ad ogni pagina. Così ci giriamo verso il nostro web server per tenerci al corrente di un utente mentre si trova sul nostro cantiere.
Ex. 1.
<? php
session_start ();
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
</body>
</html>
estremità ex. 1
il session_start () è una funzione di PHP che osserva per vedere se una sessione già allora è stata iniziata fa una di due cose:
1. Se una sessione è stata iniziata, non fa niente.
2. Se una sessione non è stata iniziata, comincia uno.
È importante notare che il session_start () deve accadere prima di qualunque altro PHP alla pagina, se la desiderate funzionare. Cominciare ogni pagina parola d'accesso-protetta con esso. Convalida
Ora pensiamo la convalida di base. Che specie delle cose dobbiamo compire?
* In primo luogo, dobbiamo controllare per vedere se l'utente già ha entrato, in modo da non chiediamo una parola d'accesso ad ogni pagina. Se il nostro utente già ha entrato, lo passiamo attraverso al soddisfare sicuro.
* Se l'utente già non ha entrato, lo abbiamo bisogno di di fare così. Così dobbiamo scrivere una forma di inizio attività.
* Abbiamo bisogno di vicino a paragoniamo i risultati della forma di inizio attività ad una lista conosciuta dei usernames e delle parole d'accesso. Se l'utente verifica, lo passiamo avanti al soddisfare sicuro.
* Se l'utente non verifica, lo dirigiamo di nuovo allo schermo di inizio attività.
* Infine, dobbiamo fornire all'utente la capacità di annotare fuori.
Così iniziamo con una struttura di base che riempiremo più successivamente.
Ex. 2
<? php
sessione di inizio di // se non già iniziata
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
}
write_log_in di funzione ($text)
{
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
controllo di // per vedere se già sono entrati
// se sì, di ritorno allineare
// se no, controllo per vedere se l'ospite ha provato appena ad entrare
// se sì, verifica la parola d'accesso
// se funzionasse, ritorno allineare
// se non, trasmetterli di nuovo all'inizio attività
// se l'utente non inizio attività giusto, (s) ha bisogno di
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
soddisfare sicuro dell'estremità di //
} estremità di // se (verificare ())
?>
</body>
</html>
Concludono ex. 2
Come I detta, questo è giusto una struttura. Gradisco lanciare tutti i miei progetti questo senso. Permette che me ottenga una grande vista di che cosa sto facendo prima di ottenere mired giù in dettaglio.
Basicamente, finora, tutto che abbiamo fatto è posto un certo soddisfare segreto all'interno dell'se dichiarazione. Se l'utente è valido, mostriamo il soddisfare, se non, non. Scrittura della forma di inizio attività
La prima cosa che dovremmo carne fuori è la nostra funzione di inizio attività. Ciò è una forma di base, senza le flange ed i fischi, in modo da dovrebbe essere abbastanza diretta.
Ex 3
write_log_in di funzione ($text)
{
eco “
<p>$text</p>
'' del action= del method='post del <form >
identificazione usuario < di p >: name='user_name/></p> del type='text del <input
<p>Password: name='password/></p> del type='password del <input
type='submit value='Logon'></p> del <p><input
</form>
";
} funzione del write_log_in dell'estremità di //
Estremità ex. 3
Nessun problemi, destra? Tutto questo IS-IS PHP che scrive una forma di base di inizio attività del HTML. Due cose valgono la pena di notare:
1. L'attributo di metodo alla modifica del <form> è “alberino„. Potremmo usare “otteniamo„, ma quello aggiungerebbe il nostri nome e parola d'accesso dell'utente al URL come varibles. our_url dello IE? user_name=bob&password=truck64. Ciò mostra la parola d'accesso--in testo normale-- destra là nel URL. Perchè spendere tutto questo volta su sicurezza se voi giusto stanno andando mettere le parole d'accesso della gente fuori per esposizione?
“l'alberino„ è molto più sicuro, forzando l'assistente per tenersi al corrente dei dati della forma, piuttosto che il URL. Qualunque momento potete mantenere le informazioni dal URL, siete un punto più vicino ad un Web page sicuro.
2. Dopo desidererete guardare l'attributo di azione alla modifica del <form>. Lasciarla in bianco dice all'assistente a che progettiate procedere questi risultati della forma con questa stessa pagina.
Controllo dei valori di inizio attività
Ora la carne fuori la nostra struttura poco più.
Ex. 4
<? php
la sessione di inizio di // se non già ha cominciato
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
}
write_log_in di funzione ($text)
{
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
controllo di // per vedere se già sono entrati
// se sì, di ritorno allineare
controllo di // per vedere se l'ospite ha provato appena ad entrare
$user_name = $_POST [“user_name„];
$password = $_POST [“parola d'accesso„];
se (&& $password di $user_name)
{
// verifica la parola d'accesso e l'inizio attività a base di dati
$db = mysql_pconnect (“localhost„, “$user_name„, “$password„);
se ($db)
{
la variabile di sessione del registro di // e rimuove la funzione di verificazione
$valid_user = $user_name;
$_SESSION [“valid_user„] = $valid_user;
di ritorno allineare;
}
altrimenti
{
utente difettoso e parola d'accesso di //
$text = “nome e parola d'accesso dell'utente non ha abbinato„;
write_log_in ($text);
}
}
altrimenti
{
// se l'utente non inizio attività giusto, (s) ha bisogno di
}
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
soddisfare sicuro dell'estremità di //
} estremità di // se (verificare ())
?>
</body>
</html>
Concludono ex. 4
In primo luogo, controlleremo se l'utente provi appena ad entrare.
$_POST è un allineamento superglobal di PHP che si tiene al corrente dei dati trasmessi ad una pagina via una modifica del method='post'> del <form. Nella funzione di inizio attività, abbiamo chiamato il nostri user_name e parola d'accesso degli input, in modo da possiamo accedere all'utente immesso denominando $_POST [“user_name„] e $_POST [“parola d'accesso„].
Dopo funzioneremo se (&& $password di $user_name) dichiarazione per vedere se sia valori della stretta di $_POST [“user_name„] che di $_POST [“parola d'accesso„]. Se, l'utente ha provato appena ad entrare.
La nostra sezione seguente del codice è la parte che realmente controlli se il nome e la parola d'accesso dell'utente sono corretti. Qui, usiamo la tabella di utente del MySQL (parte della base di dati del mysql) per tenerci al corrente dei nostri utenti. Ciò è, forse, l'itinerario migliore, poichè MySQL già è regolato fino ai permessi di accesso di controllo. Tuttavia, questo può presentare i problemi quando desiderate mantenere il collegamento della base di dati aperto attraverso le pagine. Inoltre, alcune aziende ospitanti gli non daranno l'accesso di concessione (lasciarli fanno i nuovi utenti) alla base di dati del mysql.
In quei casi, potete compire molto la stessa cosa installando la vostra propria tabella di utenti nella vostra base di dati. Allora dovreste scrivere una domanda di SQL che confronta i nomi e le parole d'accesso dell'utente. Quello osserverebbe qualcosa di simile:
Ex. 5
$select = “user_name prescelto dagli utenti
dove user_name di user_name='$
e password=PASSWORD (“$password„)„;
$query = mysql_query ($select);
se (== 1 dei mysql_num_rows ($query))
{
utente convalidato // e parola d'accesso
...
Estremità ex 5
Ottenendo di nuovo alla nostra convalida usando MySQL costruito nelle caratteristiche, sappiamo che il nome e la parola d'accesso dell'utente hanno verificato perché il tentativo del collegamento ha restituito allineare.
Registro della variabile di sessione
Ora che conosciamo il nostro controllo di nome e di parola d'accesso dell'utente fuori, dobbiamo memorizzare quelle informazioni e permettere che il nostro utente continui a surfing la nostra zona protetta senza entrare ogni pagina. Osservando posteriori l'esempio quattro, notiamo un altro delle variabili superglobal del PHP: $_SESSION.
$_SESSION è un allineamento che tiene tutte le nostre variabili di sessione. Regolando la variabile di sessione del valid_user, possiamo più successivamente fare una chiamata al ession_is_registered a (“valid_user„) per vedere se il nostro utente già ha entrato con successo.
Annotare fuori
L'ultima cosa dobbiamo assistere a a sta permettendo che i nostri utenti annotassero dal nostro sistema. In questo caso, che abbiamo usato una parte interna semplice di collegamento la nostra zona protetta.
Ex 6
<? php
la sessione di inizio di // se non già ha cominciato
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
session_unregister (“valid_user„);
session_destroy ();
session_start ();
}
write_log_in di funzione ($text)
{
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
echeggiare “il ceppo out</a></p> del href='? log_out=1'> di <p><a„;
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
...
Concludere ex 6
In primo luogo, osservando nel corpo del HTML, vediamo un collegamento semplice del HTML che aggiunge una variabile al URL. In questo caso, il nome variabile è log_out ed il relativo valore è 1. Usiamo 1 come un valore perché è facile da immagazzinare in un URL, ma realmente tutto il valore più notevolmente di zero funzionerà.
Una volta che passiamo una richiesta di termine attività alla pagina, dobbiamo procederli. Quello è che cosa se la parte ($log_out) è per.
Se la dichiarazione controlla se una richiesta di termine attività fosse passata. Una volta che vede che uno era, unregisters la variabile di sessione del valid_user, allora esso distrugge la sessione interamente.
Ironicamente, inizia un nuovo sostegno di destra di sessione. Quello è nel caso l'utente decide entrare più successivamente (senza chiudere la finestra di browser), o entra come utente differente. Il codice finale
Mettendolo tutto otteniamo insieme questo:
Ex. 7
<? php
la sessione di inizio di // se non già ha cominciato
session_start ();
controllo di // per vedere se l'utente annotasse appena fuori
se ($log_out)
{
session_unregister (“valid_user„);
session_destroy ();
session_start ();
}
write_log_in di funzione ($text)
{
eco “
<p>$text</p>
'' del action= del method='post del <form >
identificazione usuario < di p >: name='user_name/></p> del type='text del <input
<p>Password: name='password/></p> del type='password del <input
type='submit value='Logon'></p> del <p><input
</form>
";
} funzione del write_log_in dell'estremità di //
la funzione verifica ()
{
controllo di // per vedere se già sono entrati
se (session_is_registered (“valid_user„)) ritorno allineare;
controllo di // per vedere se l'ospite ha provato appena ad entrare
$user_name = $_POST [“user_name„];
$password = $_POST [“parola d'accesso„];
se (&& $password di $user_name)
{
// verifica la parola d'accesso e l'inizio attività a base di dati
$db = mysql_pconnect (“localhost„, “$user_name„, “$password„);
se ($db)
{
la variabile di sessione del registro di // e rimuove la funzione di verificazione
$valid_user = $user_name;
$_SESSION [“valid_user„] = $valid_user;
di ritorno allineare;
}
altrimenti
{
utente difettoso e parola d'accesso di //
$text = “nome e parola d'accesso dell'utente non ha abbinato„;
write_log_in ($text);
}
}
altrimenti
{
l'utente di // deve entrare
$text = “questo è un assistente sicuro. Prego inizio attività. „;
write_log_in ($text);
}
} l'estremità di // verifica la funzione
?>
<! DTD xhtml1-strict.dtd'> del PUBBLICO “- //W3C//DTD XHTML 1.0 Strict//EN„ 'http:// www.w3.org/TR xhtml1/del HTML di DOCTYPE
xml del "" di http://www.w3.org/1999/xhtml del xmlns= del <html ": lang= " en " del lang= " en " >
Vendita libera Guide</title></head> di fotoricettore del McConkey <head><title>Dan
<body>
Vendita libera Guide</p> di fotoricettore del McConkey <p>Dan
<? php
controllo di // per l'utente valido
se (verificare ())
{
echeggiare “il ceppo out</a></p> del href='? log_out=1'> di <p><a„;
// comincia il soddisfare sicuro
echeggiare “il <p>Clatu, il verata, nicto</p>„;
soddisfare sicuro dell'estremità di //
} estremità di // se (verificare ())
?>
</body>
</html>
Concludono ex. 7
Quello è un blocchetto hefty grazioso di codice da mettere alla testa di ogni Web page. Tipicamente, metterei il mio verifico () e funzioni del write_log_in () in una lima del seperate e li riferisco con una funzione di includ (). Quello fornisce il benifit aggiunto di aggiornamento del vostro Web site intero pubblicando una lima soltanto.
Sperare che aiuti.
Copyright (C) Dan 2005 McConkey
Article Source: http://www.articleset.com

You are welcome to publish or reprint this article free of charge, provided:
- you include the entire article, unchanged, including the "About The Author" box
- all hyperlinks remain active, including the bottom ArticleSet.com link (does not apply to print publications)
- you agree not to hold the authors nor ArticleSet.com liable for any loss profits, expenses, or any other damages resulting from the use or misuse of articles published on this website