- Home
- Categorie
- Coding e Sistemistica
- PHP
- Modulo di registrazione utenti
-
Ecco qua. Il form è su una pagina differente che si chiama registrazione.php quella di prima era iscrizione.php
[HTML]<form action="iscrizione.php" method="post" name="iscrizione" id="iscrizione">
<table width="50%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="30%"><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Nome
</font></strong></td>
<td width="70%"><input name="nome" type="text" id="nome"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Cognome
</font></strong></td>
<td><input name="cognome" type="text" id="cognome"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Nato/a
il</font></strong></td>
<td><select name="giorno" id="giorno">
<option>Giorno</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select> <select name="mese" id="mese">
<option>Mese</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select> <select name="anno" id="anno">
<option>Anno</option>
<option value="1940">1940</option>
<option value="1941">1941</option>
<option value="1942">1942</option>
<option value="1943">1943</option>
<option value="1944">1944</option>
<option value="1945">1945</option>
<option value="1946">1946</option>
<option value="1947">1947</option>
<option value="1948">1948</option>
<option value="1949">1949</option>
<option value="1950">1950</option>
<option value="1951">1951</option>
<option value="1952">1952</option>
<option value="1953">1953</option>
<option value="1954">1954</option>
<option value="1955">1955</option>
<option value="1956">1956</option>
<option value="1957">1957</option>
<option value="1958">1958</option>
<option value="1959">1959</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
<option value="1963">1963</option>
<option value="1964">1964</option>
<option value="1965">1965</option>
<option value="1966">1966</option>
<option value="1967">1967</option>
<option value="1968">1968</option>
<option value="1969">1969</option>
<option value="1970">1970</option>
<option value="1971">1971</option>
<option value="1972">1972</option>
<option value="1973">1973</option>
<option value="1974">1974</option>
<option value="1975">1975</option>
<option value="1976">1976</option>
<option value="1978">1977</option>
<option value="1979">1979</option>
<option value="1980">1980</option>
<option value="1981">1981</option>
<option value="1982">1982</option>
<option value="1983">1983</option>
<option value="1984">1984</option>
<option value="1985">1985</option>
<option value="1986">1986</option>
<option value="1987">1987</option>
<option value="1988">1988</option>
<option value="1989">1989</option>
<option value="1990">1990</option>
<option value="1991">1991</option>
<option value="1992">1992</option>
<option value="1993">1993</option>
<option value="1994">1994</option>
<option value="1995">1995</option>
<option value="1996">1996</option>
<option value="1998">1997</option>
<option value="1999">1999</option>
<option value="2000">2000</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
</select> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Nato/a
a</font></strong></td>
<td><input name="luogo_nascita" type="text" id="luogo_nascita"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Indirizzo</font></strong></td>
<td><input name="indirizzo" type="text" id="indirizzo"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">CAP</font></strong></td>
<td><input name="cap" type="text" id="cap" maxlength="5"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Città</font></strong></td>
<td><input name="citta" type="text" id="citta"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Provincia</font></strong></td>
<td><input name="provincia" type="text" id="provincia"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Email</font></strong></td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong><font color="#000099" face="Arial, Helvetica, sans-serif">Password</font></strong></td>
<td><input name="password" type="password" id="password" maxlength="12"></td>
</tr>
<tr>
<td> </td>
<td><font color="#000099" size="-1" face="Arial, Helvetica, sans-serif">La
password deve avere un minimo di 4 caratteri e un massimo di 12</font></td>
</tr>
<tr>
<td><font color="#000099" face="Arial, Helvetica, sans-serif"><strong>Verifica Password</strong></font></td>
<td><input name="verifica_password" type="text" id="verifica_password" maxlength="12"></td>
</tr>
<tr>
<td> </td></tr> <tr> <td colspan="2"><div align="center"><input type="submit" id="submit" name="Invia" value="Invia" /></div></td> </tr>
</table>
</form>[/HTML]
-
Questo è sbagliato:
[php]
// Dati Inviati dal modulo
$nome = (isset($_POST['nome']));
$cognome = (isset($_POST['cognome']));
$giorno = (isset($_POST['giorno']));
$mese = (isset($_POST['mese']));
$anno = (isset($_POST['anno']));
$luogo_nascita = (isset($_POST['luogo_nascita']));
$indirizzo= (isset($_POST['indirizzo']));
$cap = (isset($_POST['cap']));
$citta = (isset($_POST['citta']));
$provincia = (isset($_POST['provincia']));
$email= (isset($_POST['email'])) ? trim($_POST['email']) ;
$password = (isset($_POST['password'])) ? trim($_POST['password']) ;
$verifica_password = (isset($_POST['verifica_password'])) ? trim($_POST['password']) ;[/php]
La sintassi corretta da utilizzare è la seguente:
[php]
$nome = ((isset($_POST['nome'])) ? trim($_POST['nome']) : '');
....
[/php]
-
Ho provato a modificarlo,ma esce sempre la pagina bianca. Una domanda: devo farlo anche per giorno,mese e anno?
Lì non è un campo di testo, bensì un elenco.
-
Devi farlo per tutti quelli che ti ho scritto che sono sbagliati.
-
Fatto, ma continua a uscire la pagina bianca quando invio il modulo.
-
Questa parte non ha senso:
[php]
if ($nome) die ('Attenzione: il campo nome è vuoto');
elseif ($cognome) die ('Attenzione: il campo cognome è vuoto');
elseif ($giorno) die ('Attenzione: non hai scelto il giorno');
elseif ($mese) die ('Attenzione: non hai scelto il mese');
elseif ($anno) die ('Attenzione: non hai scelto l''anno');
elseif ($luogo_nascita) die ('Attenzione: il campo luogo di nascita è vuoto');
elseif ($indirizzo) die ('Attenzione: il campo indirizzo è vuoto');
elseif ($cap) die ('Attenzione: il campo cap è vuoto');
elseif ($citta) die ('Attenzione: il campo città è vuoto');
elseif ($provincia) die ('Attenzione. il campo provincia è vuoto');
elseif ($email) die ('Attenzione. il campo email è vuoto');
[/php]La parentesi graffa di chiusura dell'if l'avresti dovuta chiudere alla fine della pagina non li.
Direi che in questo script non ci sono tante cose corrette...
-
Lo immagino che ci sono molte cose non corrette, infatti sono solo agli inizi e voglio imparare.
Come dovrei fare quindi per verificare se un utente ha riempito i campi?
-
Per quanto riguarda le stringhe puoi utilizzare la funzione strlen, trovi maggiori informazioni qui.
Mentre per giorno,mese e anno dovresti utilizzare la funzione is_numeric e vedere se è un giorno valido.Fai attenzione ad iniziare con una maiuscola.
-
Aspetta, quindi un esempio dovrebbe essere così
[PHP]if strlen($nome)= 0
[ ECHO "Attenzione: il campo nome è vuoto";
exit;]
else[/PHP]
E poi proseguo con i controlli?
Ovviamente le parentesi sarebbero graffe, ma non riesco a editarle
-
Sarebbe cosi:
[php]
if(strlen($nome) == 0)
die ("Attenzione: il campo nome è vuoto");
else
[/php]
-
Va bene, adesso provo a farlo, ma per quanto riguarda la parentesi graffa del primo if, intendevi proprio alla fine di tutto il codice?
-
Si sarebbe da mettere alla fine perchè deve essere seguito solo se viene inviato il modulo.
Hai già visto questo tutorial?
-
Non ancora, ma osservandolo, vedo che il codice php è inserito nella pagina stessa del form. Cambia qualcosa?
Il resto del codice gli hai dato un'occhiata?
Devo rivedere completamente anche quello?
-
Ciao Ranz,
ho corretto il tuo codice, ma non lo ho testato.E' cambiato un po' rispetto alla versione che hai postato, ma ho cercato
di rispettare l'ordine logico che avevi impostato.Fammi sapere
Ciao[php]
require('config.php');// Inizializzo tutti i campi con i dati Inviati dal modulo
$submitted = (isset($_POST['Invia'])) ? $_POST['Invia'] : null;
$nome = (isset($_POST['nome'])) ? $_POST['nome'] : null;
$cognome = (isset($_POST['cognome'])) ? $_POST['cognome'] : null;
$giorno = (isset($_POST['giorno'])) ? $_POST['giorno'] : null;
$mese = (isset($_POST['mese'])) ? $_POST['mese'] : null;
$anno = (isset($_POST['anno'])) ? $_POST['anno'] : null;
$luogo_nascita = (isset($_POST['luogo_nascita'])) ? $_POST['luogo_nascita'] : null;
$indirizzo= (isset($_POST['indirizzo'])) ? $_POST['inirizzo'] : null;
$cap = (isset($_POST['cap'])) ? $_POST['cap'] : null;
$citta = (isset($_POST['citta'])) ? $_POST['citta'] : null;
$provincia = (isset($_POST['provincia'])) ? $_POST['provincia'] : null;
$email= (isset($_POST['email'])) ? trim($_POST['email']) : null;
$password = (isset($_POST['password'])) ? trim($_POST['password']) : null ;
$verifica_password = (isset($_POST['verifica_password'])) ? trim($_POST['verifica_password']) :null;//Verifico che TUTTI i campi sono stati valorizzati
if(!isset($submitted) || !isset($nome) || !isset($cognome) || !isset($giorno) || !isset($mese) || !isset($anno)
|| !isset($luogo_nascita) || !isset($indirizzo) || !isset($cap) || !isset($citta) || !isset($provincia)
|| !isset($email) || !isset($password) || !isset($verifica_password)){die('Tutti i campi devono essere valorizzati');
}//Crypt della password per garantire una miglior sicurezza
$password = md5($password);// Query per l'inserimento dell'utente nel database sprintf parsa la stringa e sostituisce il token %s con i valori passati come argomenti
$strSQL = sprintf("INSERT INTO soci (nome,cognome,giorno,mese, anno, luogo_nascita, indirizzo, cap, citta,provincia, email, password, verifica_password) " . " VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $nome, $cognome, $giorno,$mese, $anno, $luogo_nascita,
$indirizzo, $cap, $citta,$provincia, $email, $password, $verifica_password);sql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
//Edito i parametri sottostanti con i dati relativi al sito
$web_site = 'AssociazioneCulturaleCalliope.org';
$webmaster = 'Associazione Culturale Calliope';
$web_mail = '[email protected]';$header = "From: ". $web_site . " <" . $web_mail . ">\r\n";
// Edito l'oggetto e il messaggio
$subject = "Dettagli registrazione";
$message = "Gentile $nome $cognome, l'Associazione Culturale Calliope ti ringrazia per esserti registrato su $web_site. La tua richiesta sarà adesso ".
"esaminata dal consiglio direttivo e in caso di approvazione riceverai l'email specifica. Per usufruire dei nostri servizi devi semplicemente ".
" inserire questi dati nel login apposito: Email: $email ; Password: $password.\n\n\nConserva queste informazioni o meglio ancora stampa questa ".
" mail. Grazie infinite, $webmaster";// Spedisc la mail
mail($email, $subject, $message, $header);
$subject1 = "Richiesta di iscrizione";
$message1= "Spett.le Associazione Culturale Calliope,
$nome, $cognome, $email,richiede di poter accedere alla sezione privata del sito";
mail ($web_mail, $subject1, $message1, $header);
echo('Registrazione avvenuta, Benvenuto !!!<br /> Le informazioni che ci hai fornito ti sono state spedite via mail.');// Reindirizzo l'utente ad una pagina di conferma della registrazione
header('Location: registrato.php');
exit;
[/php]
-
Anche se il codice è nella stessa pagina non cambia niente.
Questo if è inutile, la condizione è sempre true per forza:
[php]
//Verifico che TUTTI i campi sono stati valorizzati
if(!isset($submitted) || !isset($nome) || !isset($cognome) || !isset($giorno) || !isset($mese) || !isset($anno)
|| !isset($luogo_nascita) || !isset($indirizzo) || !isset($cap) || !isset($citta) || !isset($provincia)
|| !isset($email) || !isset($password) || !isset($verifica_password)){die('Tutti i campi devono essere valorizzati');
}
[/php]
Dovresti farti i controlli di prima con strlen.
-
La funzione strlen va usata anche $submitted?
-
Scusa Thedarkita,
non mi è ben chiara l'inutilità delle condizioni testate con quella if.Description
bool **isset** ( mixed $var [, mixed $var [, $... ]] ) Determine if a variable is set and is not **NULL**. If a variable has been unset with unset(), it will no longer be set. **isset()** will return **FALSE** if testing a variable that has been set to **NULL**.
Grazie e ciao
-
Errore mio, non avevo visto che avevi messo null ero convinto avessi messo ''.
$submitted può anche essere eliminata tanto non ti serve a niente in questo caso.
-
Si è vero,
nel cercare di replicare più fedelmente possibile la logica originale
non me ne ero accorto.Può però servire per identificare il FORM HTML da cui è avvenuta la POST HTTP.
Per essere sicuri che qualcuno non si stia registrando da un altro sito però
è necessario che il valore sia ogni volta diverso e conosciuto a priori tipo
il SESSION ID.Ciao e buona serata.
-
Ho testatoil file, ma esce scritto :"Tutti i campi devono essere valorizzati"