Creiamo un modulo di registrazione utenti


2 aprile 2010 81 Commenti php+mysql

Da anni un problema che affligge quasi tutti gli internauti neofiti del web, è quello di creare un modulo di registrazione per gli utenti. In realtà creare un modulo è molto semplice e con questo tutorial vi darò la possibilità di crearne uno.

Uno dei caratteri fondamentali del modulo di registrazione è quello che ogni utente deve avere un dato univoco, che lo distingue da un qualsiasi altro utente. In questo caso noi prenderemo la mail come esempio ma volendo potrebbe essere anche il nickname .
Potrebbero essere anche due i dati univoci per la registrazione ( dopo aver preso un po’ di pratica con il lo script potete tranquillamente modificare lo script a modo vostro :) ).

Per iniziare creiamo la nostra tabella tabella_registrati

1
2
3
4
5
6
7
CREATE TABLE `tabella_registrati` (
`id` INT( 40 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nick` VARCHAR( 255 ) NOT NULL ,
`nome` VARCHAR( 255 ) NOT NULL ,
`mail` VARCHAR( 255 ) NOT NULL ,
`pass` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM

Ora siamo pronti per cominciare con il nostro modulo di iscrizione , che sarà la pagina fulcro di tutto lo script, infatti da essa verranno inviati ed elaborati tutti i dati.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<html>
<head>
<title>Modulo di Registrazione</title>
</head>
<body>

<form action='form.php?reg=1' method='POST'>

<b>Nome</b><br>
<input type='text' name='nome'><br>
<b>Mail</b><br>
<input type='text' name='mail'><br>
<b>Nickname</b><br>
<input type='text' name='nick'><br>
<b>Password</b><br>
<input type='password' name='pass1'><br>
<b>Ripeti Password</b><br>
<input type='password' name='pass2'><br>

<input type='submit' value='Registrati'><br>

</form>

<?

// connettiamoci il nostro database

$db_host = "localhost";
$db_user = "root";
$db_password = "pass";
$db_name = "my_db";

//connetto il database
$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');


// recuperiamo il get per evitare di ricevere subito i messaggi dei vari if sotto

$reg = $_GET['reg'];

if ( $reg == 1 ) {

// recuperiao tutti i dati inviati via post

$nome = $_POST['nome'];
$mail = $_POST['mail'];
$nick = $_POST['nick'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];

// vediamo se tutti i campi sono stati compilati

if ( $nome == TRUE && $mail == TRUE && $nick == TRUE && $pass1 == TRUE && $pass2 == TRUE )  {

// controlliamo se il campo mail è stato scritto in maniera errata

$email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail);

if($email == TRUE ) {  

// controlliamo se l'e-mail è già inserita all'interno del db


$query = "SELECT mail FROM tabella_registrati WHERE mail = '$mail'";

$risultato = mysql_query($query) or die (mysql_error());

$risp = mysql_fetch_assoc($risultato);

if ( $risp == FALSE ) {

// ora controlliamo che pass1 e pass2 sono uguali

if ( $pass1 == $pass2 ) {

// criptiamo la password per sicurezza

$pass_md5 = md5($pass1);

// e infine registriamo l'utente

mysql_query("INSERT INTO tabella_registrati
             (id , nick , nome , pass , mail )
             VALUES
             ('','$nick', '$nome', '$pass_md5', '$mail' )"
) OR DIE(mysql_error());

// inviamo una mail per comunicare all'utente che si è appena registrato


$nostro_recapito = "mail@miamail.it";

$oggetto = "Iscrizione al nostro sito";

$testo = "

Complimenti ti sei appena iscritto al nostro sito.\n

Questa è il tuo nickname : $nick \n
Questa è la tua password : $pass1 \n

"
;

mail ("$nostro_recapito", "$oggetto", "$testo", "From: $nostro_recapito");

echo "Complimenti registrazione effettuata con successo.";


} else {

echo "Le due Password inserite non sono uguali";

}

} else {


echo "Mail già utilizzata";

}



}else{

echo "Devi inserire un indirizzo di Mail Valido";


}

} else {

echo "Tutti i campi sono obbligatori";


}

}

?>


</body>
</html>

Il codice è abbastanza commentato però posso dirvi su per giù cosa fa questo script.

Controlla se i dati sono stati inseriti
Ne controlla la validità
Inserisce l’utente all’interno del database
E infine invia una mail di congratulazioni con l’utente per la riuscita registrazione

Il codice come al solito può essere implementato in tante piccole optional, io ve ne espongo qualcuno poi sta a voi cimentarvi :) :

Potreste inserire un modulo CAPTCHA per evitare l’iscrizione di bot
Potreste controllare se il nome e la password sono inferiori a un tot di caratteri
Potreste aggiungere campi per la approfondire sulla persona che si iscrive
Potreste inserire una checkbox per far accettare le varie normative sulla privacy

Ora sta a voi implementare lo script.

Come al solito vi invito a contattarmi attraverso i commenti nel caso avreste bisogno di un aiuto o nel caso mi vorreste inviare una critica e/o suggerimenti.

Grazie mille , e alla prossima.

Ciao.




Potresti trovare interessante anche

101 form_jquery_php
Pubblicato in php+mysql |



Iscriviti alla newsletter

Vuoi ricevere ogni articolo che pubblico direttamente sulla tua mail ? Vuoi evitare di perdere qualsiasi articolo pubblico ? Registrati alla mia newsletter in un click.

Inserisci il tuo indirizzo mail:

81 commenti per Creiamo un modulo di registrazione utenti

ma il primo passaggio va fatto all’interno del database?

@cantautore

La devi fare all’interno di PhpMyAdmin.

Ciao scusami ma e’ normale che cerca forum.php

form.php

risolto … -.-

@vincenzo

quando hai bisogno chiedi tranquillo , ;)

questo no pero’, perche mi da quest’errore?
Incorrect integer value: ” for column ‘id’ at row 1

questo non è un errore di php , ma un errore di mysql , ti sta dicendo che un problema con il formato del database, prova a reinserire la tabella da ex-nova cancellando la precedente.

Fammi sapere :)

Ho messo il codice (adattandolo un po al mio sito) ho preso il form e messo in una pagina, e diciamo lo script di controllo in un’altra. Primo perchè a me serviva così, e secondo perchè mi dava un’errore nell’ If $reg==1 (infatti non venendo inizializzata prima la variabile non dovrebbe avere valore, o meglio so che in c++ la variabile avrebbe un valore Random, in php non lo so) e l’ho risolto siccome quella non serve più togliendola del tutto, tanto se va a finire nella pagina dello script vuol dire che deve prendere i dati ^^

Ora lo script funziona, ma ho problema con la mail e con la funzione eregi. L’email modificando i parametri mi da problemi con l’SMTP (c’è mica da impostare quache parametro nel server o che ne so io?) e la funzione eregi, ho controllato giusto 5 min su internet ma non ho ben capito come funziona. E’ brutto vedere azione avvenuta con successo e poi 2 o 3 errori di PHP XD

@alemix mandami una mail e vediamo qual’è l’errore, probabilmente hai fatto qualche modifica che a mandato in errore lo script

aspetto tue notizie ciao :)

funziona perfettamente il mio errore stava nella compilazione del database, va impostato un valore iniziale all’ id nella configurazione

@ vincenzo

da versione a versione di mysql , conviene non inserire id nella query di php , quindi prova a eliminare id , il suo valore nella query insert e mi fai sapere :

es.

mysql_query(“INSERT INTO tabella_registrati
(nick , nome , pass , mail )
VALUES
(‘$nick’, ‘$nome’, ‘$pass_md5′, ‘$mail’ )”) OR DIE(mysql_error());

Grazie mille Rocco. sono riuscito a risolvere (ho problemi con l’email ma la sistemerò più avanti configurando il php.ini ^^) era come dicevi te l’eregi non è più supportato ^^

di niente , comunque lo dico a tutto il resto dei miei visitatori:

da php 5 , la funzione eregi() è deprecata , e dovete utilizzare preg_match

esempio:

$email = preg_match(‘/^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/’, ‘$mail’);

ciao :) e grazie per la visita

Sei un grande!

senza la query e perfetto

…davvero carino il tuo blog, lo trovo molto interessante.

Ciao Rocco,

premetto che sono alle primissime armi…ma non ci sono mica con questo modulo di registrazione….Ricapitolo veloce….
Inserito il form nella pagina dove voglio fare registrare gli utenti.
Creata pagina form.php per gestire i dati immessi dal form…contenente quindi il codica dalla riga 24 in poi…
Non ho capito bene la form action con “form.php?reg=1″ cos’è reg=1?
Cmq ho caricato il mio sito in locale su Apache, compilo il form, do invio, mi si visualizza la pagina form.php ma….non succede nulla….non dovrei tipo leggere qualche messaggio se metto qualcosa di sbagliato nel form….tipo la mail senza la chiocciola?
E poi cmq non mi inserisce i dati nel database…. è perchè sto lavorando in locale???
Boh…mi sfugge sicuro qualche passaggio…Dreamweaver non mi rileva errori, phpmyadmin neppure….però sti dati al database non arrivano e mi si visualizza form.php senza messaggi….

Ciao Luca, benvenuto su Ebug :)

ti rispondo subito:

1 ) reg=1 è un metodo per far comprendere a php che abbiamo inviato i dati

2 ) nessun messaggio ? strano dovrei vedere il codice per capirci meglio :)

3 ) le impostazioni del database “user, pass , nome del db ” sono quelle giuste ?

spero di essere stato di aiuto , se hai bisogno scrivimi :)

Ok, Rocco…. adesso faccio un controllo meglio di tutto…. Ti faccio saxe poi come va!

Ciao Rocco,
ho fatto tutto ma quando lo testo su
http://localhost:8888/form.php non succede nulla, come mai?

non ti da nessun messaggio ? strano :/ .

Dovrei vedere la sorgente per comprendere cosa è successo. Mandami una mail e ti faccio sapere :)

riuppo l’argomento io ho inserito tutti i codici quando vado nella pagina di registrazione in basso mi dice sempre Errore durante la selezione del db
che vuol dire ??

ciao due domande la prima è
la devo creare la pagina form.php ?? la seconda è
nei codici
$db_host = “localhost”;
$db_user = “root”;
$db_password = “pass”;
$db_name = “my_db”;
ho messo i miei dati di accesso (dovrebbe essere così no ?)
quando vado nella pagina ci registrazione non riesco a registrarmi la e-mail non me la invia e nel database non ci sono che faccio ??

@valerio ciao, scrivimi con un copia e incolla in commento quello che ti spunta 

@giuseppe si la pagina la devi chiamara form.php mentre i dati da inserire sono i tuoi esempio localhost per aruba diventa un numero tipo 111.11.11.1 mentre per root la tua username :D

ho risolto dovevo solo mettere il nome del database
 

Ciao, bel sito e complimenti.
Allora ho seguito la guida (xD facendo il famoso CTRL+C – CTRL+V).
La registrazione avviene perfettamente, purtroppo però non arriva l’ email di registrazione.
Da cosa può dipendere questo bug?
Grazie mille

Ciao PIGH e grazie mille per i complimenti. 

Passando subito al punto cruciale, ti consiglio di leggere pure questo articolo :

http://www.ebug.it/modulo-registrazione-in-php/

In più penso che il problema sia dovuto a sistema di domini. La mail appartiene al dominio dove risiede il codice ?

Aspetto tue risposte :D

[...] mettere un form di registrazione al sito e ho trovato questo codice(1) preso da questo sito ( http://www.ebug.it/creiamo-un-modulo…azione-utenti/ ) (1) [...]

Ciao! Innanzitutto complimenti per il tuo sito…e anche per il tutorial, è molto chiaro e leggendo dai commenti è anche di facile comprensione. Peccato che io sono un pò scema ahahahha e ancora qualcosina non l’ho capita per bene…
Ho creato il file index.html dove ho messo il form e il file form.php dove ho messo il codice php. Ho messo i dati di accesso al database…tutto molto bello…mi esce fuori questo http://ginter87.altervista.org/ … compilo il tutto ma mi esce un messaggio strano: “Unknown column ‘pass’ in ‘field list’” … cosa può essere???

Ciao.. io ho un problema, non so cosa scrivere quando ti chiedi il LocalHost, Pass, User e DB… mi potete aiutare??? ::.. PLEASE :)  grazie

@Mirko per Localhost , Pass Use e DB intendo i dati di accesso per il database :D

Ti consiglio di leggere questa piccola guida che ho scritto io su mysql + php che ti aiuterà sicuramente ;)

http://www.ebug.it/tutorbug/guida.php?id_guida=4

Buona Lettura

ciao ho creato il database e la pagina form.php pero quando riempio il form e clicco su registrati non mi carica nulla sul database !! come mai ?

@mike1993 dovrei vedere dove sta il problema di presenza. Scrivi un pò di codice qua e ti faccio sapere :D

Ciao. Innanzitutto grazie per la guida (anzi, le guide) che hai realizzato.
Sto cercando di creare la pagina di registrazione. Ho due problemi (o forse di più!).
Allora… Il primo è questo: ad inizio guida dici di creare la tabella registrati. Dove devo inserire lo script? Nella pagina di registrazione, prima dei campi da completare, oppure su un file separato?
Il secondo è questo: ho inserito nel form anche due opzioni da scegliere tramite gender. Come faccio a raccogliere l’informazione che viene data con quella funzione?
Grazie in anticipo per l’aiuto, e scusa il disturbo!

@Giovanni ciao rispondo subito ai tuoi quesiti :

1) Puoi mettere il tutto anche in un file separato :D

2) Tramite gender ? Parli di radio button oppure check box ?

Aspetto tue nuove ;)

Ciao!
Molto bella la tua guida, compliementi !!!
peccato che non riesco a capire una cosa… :)
la tabella_registrati che hai messo sopra il codice php-html non ho capito dove dovrei metterla…
poi ancora un’altra cosa:
ho un sito su altervista e se trasferisco via ftp come filezilla il file html, dovrebbe andare se ho attivato un database? ora non posso provare però dovrebbe andare secondo te o devo fare ancora qualcosa?

@Marco spiegami meglio la situazione e saprò sicuramente risponderti con più precisione :D

ciao ho letto come si fa ma non ho capito lo script :( :
CREATE TABLE `tabella_registrati` (
`id` INT( 40 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nick` VARCHAR( 255 ) NOT NULL ,
`nome` VARCHAR( 255 ) NOT NULL ,
`mail` VARCHAR( 255 ) NOT NULL ,
`pass` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM
 
in pratica non ho capito in che formato lo devo salvare e dove lo devo mettere… me lo puoi dire please??grz mille

@pasquale quel codice lo devi mettere all’interno del database mysql come per una qualsiasi query.

Se non ha ben chiaro l’argomento del mysql ti consiglio di studiare questa mia guida su mysql + php

http://www.ebug.it/tutorbug/guida.php?id_guida=4

Fammi sapere come va ;)

Ciao Rocco Io uso altervista ! Dove devo collocare la tabella ?

Per la tabella ho risolto ma quando premo il pulsante registrati mi da questo : alterVista

Pagina non trovata (errore 404)
La pagina http://artistiemergenti.altervista.org/elabora_form.php non è presente.
Questo può dipendere dal fatto che:

La pagina non esiste più.
Il link che hai seguito non è valido.
La pagina è stata spostata.

Fai attenzione alle MAIUSCOLE e MINUSCOLE
Ricorda che http://sito.altervista.org/Pagina.html è diverso da http://sito.altervista.org/pagina.html

AlterVista - Spazio Web Gratis

@PnFrt hai provato a controllare l’indirizzo è vedere se è quello giusto ? può capitare di leggere male il nome della pagina :)

Sto cercando di rivedere il codice ma ogni volta che clicco su registrati nel database non viene inserito niente e l’email non arriva ! Il fatto è che non ho capito bene cosa devo modificare nel codice per adattarlo al mio database

Cosa dovrebbe uscire premendo il tasto registrati ??

Ma quale pagina devo chiamare form.php?reg=1 ????

Ho risolto per l’action ! ora però rimane il problema che nel database non risulta nt e l’email non arriva

Perchè non inserisce niente nella tabellaaaa 

@PnFrT hai visto se ti dà qualche messaggio di errore ? Errori di sintassi ? Errori di codice ? Errori di Logica ? I dati all’interno del file di connessione sono giusti ? 

PS: Vedi di commentare una sola volta e non fare diversi commenti che gli altri non riescono a seguire bene la discussione :)  

Scusa ma ci sarebbe anche una guida su come creare un form per l’accesso al sito?

Volevo anche sapere a cosa servono i primi codici quelli per creare una tabella, dove devo inserirli? Perché i secondi codici per creare il modulo li ho semplicemente copiati e incollati in body e il modulo mi compare.

@Michele viste le tante esigenze che hai bisogno per questo progetto di consiglio di utilizzare wordpress ;) che racchiude tutto quello che ti serve in un pratico e semplice cms alla portata di chiunque anche di chi non ha molta esperienza con il web.

Link Download WordPress

Guida a WordPress

Guida Creazione Tema WordPress 

Buongiorno prima di tutto  premetto che sono un principiante e vorrei chiedere se qualcuno di Voi sa darmi una mano a fare una tessera di iscrizione editabile con salvataggio in un database  (la mia idea e’ di integrarla sul sito e all’utente si chiede di compilarla con possibilita di stamparsela e  mandare una copia  all email del sito stesso altro problema e’ il numero progressivo delle tessere  altro  aggiungere un campo con dicitura  ” nato/a” invio un immagine per modello a http://www.famigliedisabili.org/news/ photogallery/prova  ) scusate anticipatamente  del disturbo  e ringrazio dell’eventuale cortesia .

Ciao scusa. come faccio a collegare il database a questo codice?
GRAZIE MILLE 

All’interno del file di sono dei valori che devi cambiare @ALEX :)

grazie mille. spero ke funzioni!! ORA CI PROVO :)

ciao non ho capito dove inserire questo: 
CREATE TABLE `tabella_registrati` (
`id` INT( 40 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nick` VARCHAR( 255 ) NOT NULL ,
`nome` VARCHAR( 255 ) NOT NULL ,
`mail` VARCHAR( 255 ) NOT NULL ,
`pass` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM
 

Ciao, io sto cercando di creare un mio sito web nel quale inserire appunto un modulo d’iscrizioni… avrei bisogno di qualche consiglio..sarebbe possibile sentirci tramite e-mail?grazie :-)

salve,sto provando ad inserire il modulo di registrazione come faccio una volta registrati gli utenti ad inserirli automaticamente in una tabella!!!!!!!!!!!!!

non ho il database dove lo devo acquistare?

ciao vorrei sapere come fare in modo che una volta dentro si possa uscire e riaccedere grazie

@daniele puoi effettuare il log-out attraverso un session-destroy o in automatico quando chiudi il browser

@giacomo dipende tutto dove hai comprato il sito internet

@Dematteo99 questi codici vengono inseriti all’interno di mysql , con pannello aperto ;)

Ciao a tutti, mi è venuto un dubbio… anzi secondo me c’è un errore alla riga 104:
mail (“$nostro_recapito”, “$oggetto”, “$testo”, “From: $nostro_recapito”);
per far si che invii le mail al destinatario non dovrebbe essere scritta così:
mail (“$mail”, “$oggetto”, “$testo”, “From: $nostro_recapito”);
Potrei avere un chiarimento, grazie e complimenti per ebug!

Salve
Grazie  per la guida,tuttavia io vorei sapere quolcosa di piu per i password.
Perche e necesario scrivere due volte,perche e necesario registrare anche in data base due volte (anzi tre volte perche una e criptata)…?
E invece quando utente cambia il password modifica (UPDATE) sul data base tutti e tre oppure li lascia i vecchi registrati…?
Grazie
 
 

Ciao devo spostare da un server ad un altro un sito. Ha già tutto ok a livello di form di registrazione e di login. Il problema sta che non riesco a trovare il file config.php che praticamente contiene le istruzioni affinchè il database si interlacci con mysql e phpadmyn. Se ti posto posto tutto per email potresti dare un occhiata?
Grazie.

Ciao rocco,
Vorrei capire il perchè di quando provo a fare una registrazione di prova non succede niente mi ricarica la pagina! cosa dovrei fare? magari possiamo sentirci per e-mail e mi spieghi tutto passo passo per favore! help me! D:

Ciao rocco,Vorrei capire il perchè di quando provo a fare una registrazione di prova non succede niente mi ricarica la pagina! cosa dovrei fare? magari possiamo sentirci per e-mail e mi spieghi tutto passo passo per favore! help me! D:

ciao Rocco volevo chiederti per implementare un controllo captcha come devo fare??

Scusa Rocco,non mi intendo molto di php e ho un problema:quando inserisco i dati e clicco su registrati mi spunta: 
La pagina http://lpweb.altervista.org/form.php?reg=1 non è presente.
Cosa devo fare?? 
Rispondimi in e-mail
Grazie 

ciao, il mio problema è, quale script devo mettere, per il mio sito di altervista, al fine di sapere, una volta premuto il tasto accedi, nome utente e password di chi si registra su di esso, inviato alla mia casella di posta elettronica?

Salve,
sono un pò di giorni che sto studiando come inserire un modulo di registrazione per alcune sezioni che voglio rendere chiuse. Ci sono su tutti i passaggi, tranne uno : database. 
secondo te posso crearlo io con access o devo per forza rivolgermi a mysql ?
Grazie in anticipo !

CAIO VOLEVO CHIEDERTI PERKE MI APPARE SOLO NOME MAIL NICKNAME E IL RESTO DEL FORM NO?

Ho risolto tutto desidero sapere come faccio poi a farli trasferire nella pagine protetta?

Salve, ho dei piccoli problemi, ho fatto tutto bene, solo che quando vado a fare la registrazione (e compilo tutto BENE) mi da la pagina “form.php?reg=1″ che però io non ho… quindi adesso non mi fa andare avanti :(    come faccio a risolvere questo errore, scusa per il disturbo

Salve,ho un grosso problema mi dice: Unknown column ‘e’ in ‘field list’
Aiuto! :(

salve premetto che di php non ci capisco quasi nulla vorei sapere come creare un database per piacere se potresti aiutarmi ho blogger come blog

Lascia un Commento