Quando si tratta di creare siti web per il mondo reale, avere un semplice modulo di registrazione per è vitale. Internet è praticamente costruire in siti web di appartenenza. Quindi, come parte della mia serie di tutorial sul sistema membro php, creeremo un semplice modulo di registrazione in php.
Abbastanza veloce e facile da scrivere da zero, questo semplice modulo di registrazione consentirà a qualsiasi utente di registrarsi con solo un nome utente, un’email e una password, ma puoi facilmente aggiungere un’email se lo desideri.
Per una semplice panoramica del codice sorgente per la nostra php la pagina di registrazione è questo:
<?php // connect to the database // check for a user being logged in // process the registration form data ?> <html> display a header display the error message (if there is one) display the registration form </html>
Come Fare un Semplice Form di Registrazione in php
- Creare il database per il modulo di registrazione
- Fare il semplice modulo di registrazione in HTML/CSS
- Connettersi al database MySQL tramite php
- Processo il modulo di registrazione in ingresso
- Aggiungi nuovo account utente per il database
Step 1: Creare il database per il modulo di registrazione
Spesso, il primo passo verso la realizzazione di un sito web è quello di creare il database. E certo, probabilmente dovrai apportare modifiche al tuo database in seguito. Ma la configurazione del database in primo luogo, vi darà un ottimo punto di partenza
Creeremo un semplice database per memorizzare tutte le informazioni account dell’utente, tra cui il loro nome utente e password. Vai avanti e accedi al tuo pannello di controllo phpMyAdmin sul tuo server. (se sei nuovo a phpMyAdmin, controlla il mio articolo intro to phpMyAdmin)
Campi del database per il nostro sistema di appartenenza php
Ogni database ha bisogno di un nome, e dal momento che mi piace mantenere la vita semplice, chiamiamo il nostro database “utenti”.
NOTA: presumo che tu abbia già almeno una conoscenza di base di come usare phpMyAdmin e come funzionano i database MySQL. In caso contrario, puoi leggere le basi di phpMyAdmin o l’operazione di database MySQL proprio qui su HeyTuts.com. (questi collegamenti si apriranno in nuove schede)
Poiché stiamo facendo un semplice modulo di registrazione, avremo solo bisogno di 7 campi nel nostro database. In questo modo otteniamo subito abbastanza funzionalità di base. Ma ancora possibile aggiungere funzionalità extra come un modulo di reimpostazione della password.
- id-questo sarà un identificatore univoco per ogni utente. Dobbiamo assicurarci che il campo id sia un numero intero e impostato su incremento automatico con una chiave primaria. Questo è un must!!! Quando si passa a sistemi membri più complessi, l’utilizzo dell’ID account dell’utente rende super semplice collegare i record del database insieme.
- username-questo dovrebbe essere autoesplicativo. Ho impostato il mio su un varchar di 50 caratteri. Molto raramente l’utente vorrà un nome utente più lungo di 10-15 caratteri, quindi 50 dovrebbe prendersene cura. Ma questo ti darà anche la possibilità di impostare la lunghezza del nome utente desiderata nel tuo codice php.
- email-l’indirizzo email dell’utente. Impostalo un varchar di 100 caratteri.
- password-useremo una crittografia di base per le password dei nostri utenti. Quindi un varchar di 50 caratteri farà bene. Più tardi, vedrai che usiamo la funzione md5 () per creare un hash di password di base per una semplice sicurezza.
- date_created-questo memorizzerà un valore time () di quando l’utente ha creato il proprio account.
- last_login-possiamo tenere traccia dell’ultima volta che l’utente ha effettuato l’accesso aggiornando questo record qui. Di nuovo sarà dalla funzione time ().
- stato-monitorare lo stato di attivazione dell’account. Siamo in grado di controllare questo valore per vedere se l’utente ha attivato il proprio account o no, e in base a questo far loro il login o dare loro un avviso per attivare il proprio account.
Passo 2: Crea il semplice modulo di registrazione in HTML/CSS
Con la configurazione del database, possiamo creare il modulo di registrazione effettivo che l’utente utilizzerà per creare il proprio account. Come praticamente tutti i moduli del sito web, lo faremo con HTML e CSS.
Crea un registro.file php sul tuo server web
Chiamerò la mia pagina del modulo di registrazione register.php, quindi vai avanti e crea questo file sul tuo server web. Raccomando di creare questo intero sistema di membri sul tuo server Web localhost con XAMPP (link esterno).
Crea un’intestazione di navigazione di base
Anche l’intestazione di questo tutorial sul sistema membro php sarà semplice. Con alcuni link solo per qualche navigazione super di base. Di seguito è riportata la configurazione di base della pagina per il nostro registro.file php.
<html> <head> <title>php member system | registration form</title> </head> <body> <h1>member system tutorial - register</h1> <a href="./index.php">Home</a> | <a href="./register.php">Register</a> | <a href="./login.php">Login</a> <hr /> <!-- error message code here --> <!-- registration form html code here --> </body></html>
Crea il modulo di registrazione effettivo
Ora possiamo creare il modulo con cui l’utente vedrà e interagirà. Se ripensi alla nostra configurazione del database, abbiamo solo 3 campi che l’utente ha la possibilità di inserire: il nome utente, la password e l’indirizzo email. Non dimenticare di aggiungere del testo per visualizzare le etichette per i campi richiesti.
Per buona pratica, mi piace aggiungere un campo password aggiuntivo per l’utente per confermare la propria password. E assicurati di dire agli utenti la forza della password richiesta.
Per ottenere una password sicura per l’account dell’utente, richiederemo almeno 5 caratteri. Con almeno un carattere speciale di uno di questi: !#$.,:;(). Questo non darà l’uso la password più sicura, ma vi darà un’idea di come forzare le password più forti per il vostro più tardi.
<form action="./register.php" class="form" method="POST"><h1>create a new account</h1><div class=""><?php// check to see if the user successfully created an accountif (isset($success) && $success == true){echo '<p color="green">Yay!! Your account has been created. <a href="./login.php">Click here</a> to login!<p>';}// check to see if the error message is set, if so display itelse if (isset($error_msg))echo '<p color="red">'.$error_msg.'</p>';?></div><div class=""><input type="text" name="username" value="" placeholder="enter a username" autocomplete="off" required /></div><div class=""><input type="text" name="email" value="" placeholder="provide an email" autocomplete="off" required /></div><div class=""><input type="password" name="passwd" value="" placeholder="enter a password" autocomplete="off" required /></div><div class=""><p>password must be at least 5 characters and<br /> have a special character, e.g. !#$.,:;()</font></p></div><div class=""><input type="password" name="confirm_password" value="" placeholder="confirm your password" autocomplete="off" required /></div><div class=""><input class="" type="submit" name="registerBtn" value="create account" /></div><p class="center"><br />Already have an account? <a href="<?php echo SITE_ADDR ?>/login">Login here</a></p></form>
Se noti, sto mettendo il nostro modulo di registro in una semplice tabella solo per allineare tutto bene per l’utente. La cosa importante da notare qui è l’azione del modulo (aka POST), i nomi delle caselle di testo e il nome del pulsante di invio.
Tutti questi nomi di campo sono cruciali nello script back-end per recuperare i dati dopo che l’utente invia il modulo. Si noti inoltre il metodo del modulo, POST, che nasconderà i dati del modulo dall’utente invece di inviarlo all’URL come GET will.
Visualizza un messaggio di errore, quando necessario
Nella pagina di registrazione, tu e il tuo utente troverete utile mostrare effettivamente un messaggio di errore. Quando necessario. Lo metterò sotto la navigazione e sopra il modulo di registrazione. Questo messaggio darà all’utente un’idea di ciò che ha sbagliato e deve correggere prima di poter creare il proprio account.
Fondamentalmente quello che sto per fare è creare due variabili, una chiamata success success e er error_msg. Faremo un semplice controllo per queste due variabili impostate. In base a se sono impostati (ovvero creati e assegnati a un valore), visualizziamo il messaggio di errore applicabile.
<?php // check to see if the user successfully created an account if (isset($success) && $success == true){ echo '<font color="green">Yay!! Your account has been created. <a href="./login.php">Click here</a> to login!<font>'; } // check to see if the error message is set, if so display it else if (isset($error_msg)) echo '<font color="red">'.$error_msg.'</font>'; else echo ''; // do nothing?>
L’idea è che se c’è un errore durante l’elaborazione dei dati, possiamo impostare il messaggio di errore nella variabile er error_msg, quindi verrà visualizzato all’utente e elaboreremo le informazioni. Se l’utente crea con successo il proprio account, imposteremo success success su true e visualizzeremo un messaggio di successo in verde (perché il verde è sempre buono, ho ragione??).
Fase 3: Connettiti al database MySQL usando php
Ora possiamo ottenere alcuni dei codici php di back-end. Prima di poter eseguire qualsiasi operazione di database MySQL, è necessario connettersi al database. La maggior parte dei siti Web si connette al database in uno script di configurazione o connessione separato. Quindi faremo lo stesso.
Crea un nuovo script php chiamato connect.php e salvarlo nella stessa directory del registro.file php.
<?php $conn = mysqli_connect("localhost", "root", "password", "code_projects");?>
Passo 4: Elaborare l’input del modulo di registrazione
Ora fino alla carne e patate di questo semplice modulo di registrazione. Il codice php per elaborare il modulo dopo l’invio.
Poiché abbiamo già creato il nostro script di connessione al database, possiamo usare la funzione require_once() per caricare lo script di connessione.
<?php // include our connect script require_once("connect.php"); // check to see if there is a user already logged in, if so redirect them session_start(); if (isset($_SESSION) && isset($_SESSION)) header("Location: ./index.php"); // redirect the user to the home page?>
Quindi utilizzando le sessioni php, monitoreremo se gli utenti sono connessi o meno. Per ora controlleremo solo per vedere se le variabili di sessione sono impostate. Entreremo in come impostare le variabili di sessione nel tutorial modulo di login. Se l’utente ha effettuato l’accesso, li reindirizzeremo alla home page.
Ottieni tutti i dati del modulo di registrazione
Una volta che siamo pronti per ottenere tutti i dati del modulo, prima controlliamo se il pulsante di invio è stato fatto clic (ovvero il modulo è stato inviato). Se lo fosse, memorizziamo tutti i dati del modulo in variabili. Se il modulo non è stato inviato, non facciamo altro che mostrare il modulo all’utente.
Poiché stiamo usando un tipo di modulo di POST, abbiamo bisogno di ottenere i dati del POST usando il nostro codice php. Tutti i dati “pubblicati” dal modulo saranno nella variabile array _ _POST. È quindi possibile utilizzare il nome dell’elemento del modulo come chiavi dell’array. Permettendoci di ottenere i dati specifici che stai cercando, in questo modo:
if (isset($_POST)){ // get all of the form data $username = $_POST; $email = $_POST; $passwd = $_POST; $passwd_again = $_POST; // next code block }
Eseguire controlli di base sui dati del modulo
Successivamente controlliamo se l’utente ha completato il modulo di registrazione. Controllo dell’indirizzo email, del nome utente e delle password. Se ci assicuriamo che ogni variabile non sia una stringa vuota, significa che c’è del testo, giusto?
Poi controlliamo per assicurarsi che la password e confermare la password sono esattamente lo stesso testo. Tappi e tutto il resto. Usando tre segni uguali di fila (che è===) nella nostra istruzione if, le stringhe sono case matched.
Fondamentalmente, se confrontiamo “ciao ” con” Ciao ” usando due segni uguali, ottieni un risultato vero. Questo perché il nostro codice dice “sì ciao e ciao sono la stessa parola”. Ma se li confrontiamo usando tre segni uguali, il nostro codice è come ” NO! Fermo li’. Quelle parole non corrispondono. Grande vecchio falso!”Ha senso?
// verify all the required form data was enteredif ($username != "" && $passwd != "" && $passwd_again != ""){ // make sure the two passwords match if ($passwd === $passwd_again){ // make sure the password meets the min strength requirements if ( strlen($passwd) >= 5 && strpbrk($passwd, "!#$.,:;()") != false ){ // next code block } else $error_msg = 'Your password is not strong enough. Please use another.'; } else $error_msg = 'Your passwords did not match.';}else $error_msg = 'Please fill out all required fields.';
Successivamente possiamo assicurarci che le password soddisfino i nostri requisiti di resistenza. I nostri criteri ohhh così impressionante per una password sicura. Almeno 5 caratteri e utilizzando almeno un carattere speciale.
Usando strlen () ci assicuriamo che sia abbastanza lungo da soddisfare il nostro minimo di 5 caratteri. Easy. Quindi usando la funzione strpbrk () possiamo controllare se uno qualsiasi dei caratteri speciali nell’elenco è presente. Questa funzione restituirà false se nessuno dei caratteri speciali è presente. Restituirà una stringa se ce ne sono.
Si può leggere di più sulla funzione sul php.net riferimento. Fondamentalmente, è solo un modo super semplice e veloce per verificare la presenza di un elenco di caratteri speciali esistenti in una stringa. Perché a parte l’esistenza non ci importa davvero di loro.
Passo 5: Aggiungi nuovi account utente al database
Ora che sappiamo che tutti i nostri dati del modulo sono buoni e pronti per l’uso, possiamo iniziare a fare alcuni controlli del database. Per prima cosa controlliamo se il nome utente è già nel database. Se vengono restituiti zero record, il nome utente non è nel database. Se viene restituito qualcos’altro, viene preso il nome utente.
Quindi dobbiamo creare alcune variabili extra per memorizzare alcuni degli altri dati casuali che dobbiamo memorizzare nel record del database per l’account utente che stiamo per creare. Sotto questo blocco di codice è una spiegazione di ciascuna delle variabili.
DISCLAIMER: voglio sottolineare che ai fini di questo tutorial non stiamo usando una crittografia delle password molto complessa. Lo sto semplicemente facendo per l’effetto di non memorizzare la password in testo normale (non farlo mai, è solo brutto). Se vuoi imparare a fare qualcosa di più sostanziale e sicuro, controlla il nostro tutorial sulla sicurezza delle password. Vado in dettaglio su diversi metodi per creare e memorizzare password più sicure usando php.
// query the database to see if the username is taken$query = mysqli_query($conn, "SELECT * FROM users WHERE username='{$username}'");if (mysqli_num_rows($query) == 0){ // create and format some variables for the database $id = ''; $passwd = md5($passwd); $date_created = time(); $last_login = 0; $status = 1; // next code block}else $error_msg = 'The username <i>'.$username.'</i> is already taken. Please use another.';
- $id-abbiamo bisogno di un segnaposto per l’id di incremento automatico che il database assegnerà.
- pass passwd – stiamo aggiungendo un po ‘ di crittografia di base alla password dell’utente usando l’hash md5 ()
- dat date_created – usando la funzione time() possiamo ottenere un timestamp nel momento esatto in cui l’utente crea il proprio account. Possiamo usarlo in seguito per visualizzare usando date()
- last last_login – in seguito useremo questo per tenere traccia quando l’utente accede. Lo metteremo a zero perché non hanno ancora effettuato l’accesso.
- status status-utilizzando questo campo, siamo in grado di monitorare lo stato degli account, come ad esempio l’attivazione via e-mail o disabilitarlo per scopi amministrativi, o davvero ciò che mai galleggia la vostra barca. Ho intenzione di impostare su 1 (uno) per impostazione predefinita, il che significa un account attivo e può accedere immediatamente.
Ora possiamo finalmente creare il record del database per l’account dell’utente. Utilizzando una query INSERT, possiamo elencare con molta attenzione tutte le informazioni del nostro record di database.
Se hai bisogno di aiuto per capire le basi di come funzionano le query. O anche operazioni di database generali, controlla il mio altro tutorial sulle operazioni di database MySQLi.
Dopo aver INSERITO il record, come buona pratica, mi assicurerò che il record sia stato effettivamente aggiunto (perché non si sa mai, potrebbe esserci stato un qualche tipo di errore.) Poiché prima ci assicuravamo che il nome utente NON esistesse, ora se controlliamo se esiste e troviamo un record con esso assegnato sappiamo che il nostro nuovo account è stato creato nel database. Infine abbiamo appena impostato la nostra variabile $success su true perché l’utente ha completato la registrazione e il suo account è stato creato.
// insert the user into the databasemysqli_query($conn, "INSERT INTO users VALUES ( '{$id}', '{$username}', '{$email}', '{$passwd}', '{$date_created}', '{$last_login}', '{$status}')");// verify the user's account was created$query = mysqli_query($conn, "SELECT * FROM users WHERE username='{$username}'");if (mysqli_num_rows($query) == 1){ /* IF WE ARE HERE THEN THE ACCOUNT WAS CREATED! YAY! */ /* WE WILL SEND EMAIL ACTIVATION CODE HERE LATER */ $success = true;}else $error_msg = 'An error occurred and your account was not created.';
Ultimi ritocchi per il nostro modulo di registrazione
Ora con tutto il nostro registro.codice php scritto, possiamo vederlo dal browser web. Puoi anche provarlo e creare il tuo account sulla tua nuova pagina di registrazione!
Con il nostro semplice modulo di registrazione creato, la parte successiva di un sistema membro php è quello di creare il modulo di login. perché qual è il punto di avere un modulo di registrazione per creare un account se gli utenti non possono accedere al proprio account?