Iniziamo quindi con la prima lezione:
Registrazione
Per creare la registrazione al nostro Gdr abbiamo bisogno di tre cose:
1 - Un form che invierà i dati
2 - Dei file con estensione .php che riceveranno i dati del form
3 - Una tabella che conterrà i dati inviati (Inutile quindi elencare la necessià di un database, in questo caso Sql, e di un file che connetterà a questo)
Specificato ciò andremo subito a spiegare le prime cose da fare.
In queste guide sarò solito postare il codice php commentato riga per riga, ricordo che i commenti saranno preceduti dal segno #, ovvero il cancelletto.
Creiamo una cartella di nome inc, questa conterrà tutti i file da includere sempre o quasi.
In questa cartella andremo a creare un file di nome db.php che creerà una connessione con il database.
Questo conterrà il seguente codice:
Codice: |
<? #Di seguito riempiremo le variabili con i dati indispensabili alla connesione #Tra le virgolette dovrete scrivere la Password del Database $PASS = ""; #Tra le virgolette dovrete scrivere il Nickname del Database $NICK = ""; #Tra le virgolette dovrete scrivere il Nome del Database $DATABASE = ""; #Tra le virgolette dovrete scrivere l'host in cui è presente il database a cui connettersi, di solito è Localhost $HOST=""; # Le righe che seguono fanno in modo che la connessione avvenga, se questo non succede # verrà visualizzato un messaggio di errore, in questo caso: Errore nella connessione al Database $db = mysql_connect($HOST,$NICK,$PASS) or die("Errore nella connessione al Database"); mysql_select_db($DATABASE); #Come potete notare la connessione non è altro che l'insieme di due comandi: # mysql_connect, ovvero la funzione che crea la connessione al database usando tre parametri: Host,Nick e Pass #Nella stessa riga potete vedere "or die (" ")" ovvero, se la funzione mysql_connect non crea la connessione, verrà stampato # il messaggio tra le due virgolette nella parentesi #La seconda funzione riguarda mysql_select_db, la quale seleziona il database nel caso in cui ne siano presenti più diuno ?> |
Fatto ciò passiamo alla pagina successiva, registra.php, ovvero la pagina che conterrà il form html.
Scriverò però solo il codice riguardante il form.. il restante è solo codice html puro:
Codice: |
#Creiamo il form che invierà i dati alla pagina "doregistra.php" con il metodo POST <form name="form1" method="post" action="doregistra.php"> #Poi creiamo una tabella .. così da rendere più accettabile l'aspetto del nostro modulo <table border="1" cellpadding="2" cellspacing="2"> <tr> <td><div align="center">Nome Personaggio:</div></td> <td> #Inseriamo il primo input che andrà a riepmpire la variabile $Nome <input name="Nome" type="text" id="Nome" value="<?= $Nome ?>"></td> </tr> <tr> <td><div align="center">Cognome Personaggio:</div></td> <td> #Qui il secondo input che riempirà la variabile $Cognome <input name="Cognome" type="text" id="Cognome" value="<?= $Cognome ?>"></td> </tr> <tr> <td><div align="center">Email:</div></td> <td> #Qui il terzo input che riempirà la variabile $Email <input name="Email" type="text" id="Email" value="<?= $Email ?>"></td> </tr> <tr> <td><div align="center">Sesso Personaggio:</div></td> <td><div align="center"> #Qui un select, ovvero un menù in cui ci sono due voci: Maschio e Femmina #In modo da far selezionare il sesso del pg, questo select riempirà la variabile $Sesso <select name="Sesso" id="Sesso"> <option value="M" selected>Maschio</option> <option value="F">Femmina</option> </select> </div></td> </tr> <tr> <td><div align="center">Razza:</div></td> <td><div align="center"> #Iniziamo un Select che riempirà la variabile $Razza <select name="Razza"> #Qui viene il bello, includiamo il file db.php che ci farà connettere al database e in seguito # selezioniamo dalla tabella razze (A fine lezione saranno elencate le tabelle da inserire nel database) in cui # sono elencati i nomi delle razze disponibili all'iscrizione <? #Includiamo il file db.php include("db.php"); #Eseguiamo la query $Sql = "Select Nome FROM razze WHERE Nascosto = 1"; $Result = mysql_query($MySql); #Iniziamo un ciclo while che ripeterà per tutti i risultati un dato codice while ($rs = mysql_fetch_array($Result)) { ?> <option value="<?= $rs["Nome"] ?>"><?= $rs["Nome"] ?></option> <? } #Chiudiamo il ciclo while e l'array $rs $rs->close; ?> #Chiudiamo il select </select> </div></td> </tr> <tr> <td colspan="2"><div align="center"> #Di seguito creeremo il bottone che invierà il modulo e quello per resettarlo <input type="submit" name="Submit" value=" Registrati "> <input type="reset" name="Submit2" value=" Resetta "> </div></td> </tr> </table> </form> |
Fatto l'html .. dobiamo solamente fare la pagina che elaborerà i dati, ovvero doregistra.php :
Codice: |
<? session_start(); include ("inc/db.php"); if((!$Nome) || (!$Email) || (!$Pass)){ echo 'Non hai inserito tutte le informazioni richieste nel modulo di registrazione! <br />'; if(!$Nickname){ echo "Inserisci il Nickname come richiesto nel modulo di registrazione!<br />"; } if(!$Email){ echo "Inserisci l'Email come richiesto nel modulo di registrazione!.<br />"; } header("Location: registrazione.php"); exit(); } $sql_email_check = mysql_query("SELECT Email FROM pg WHERE Email='$Email'"); $sql_username_check = mysql_query("SELECT Nome FROM pg WHERE Nome='$Nome'"); $email_check = mysql_num_rows($sql_email_check); $username_check = mysql_num_rows($sql_username_check); if(($email_check > 0) || ($username_check > 0)){ echo "Correggi i seguenti errori: <br />"; if($email_check > 0){ echo "<strong>Cambia Email, il tuo indirizzo è gia in uso!</strong><br />"; unset($email_address); } if($username_check > 0){ echo "<strong>Cambia Nickname, il nome scelto è già in uso!</strong><br />"; unset($username); } header ("Location: registrazione.php"); exit(); } $Sql = "Select * FROM razze WHERE Nome = ".$Razza.""; $Result = mysql_query($Sql); #Iniziamo un ciclo while che ripeterà per tutti i risultati un dato codice while ($rs = mysql_fetch_array($Result)) { $Mente = $rs['Mente']; $Forza = $rs['Forza']; $Mana = $rs['Mana']; $Destrezza = $rs['Destrezza']; } #Chiudiamo il ciclo while e l'array $rs $rs->close; $Pass = rand(12345, 99999); if ($rs = mysql_fetch_array($Result)) {echo "Dati già utilizzati - Cambiare Nome Pg o Email!<br>"; include("registra.php"); exit(); }; $rs->close; $Sqlin = "INSERT INTO `pg` ( `Nome` , `Pass` , `Dataiscrizione` , `Exp` , `Mente` , `Forza` , `Razza` , `Gilda` , `Sex` , `Info` , `Email` , `Livello` , `Avatar` , `Denaro` , `UltimoLavoro` , `Bannato` , `UltimoStipendio` , `MotivoBann` , `MaxMente` , `MaxForza` , `Affetti` , `AutoreBann` , `Amministratore` , `Musica` , `Salute` , `Cognome` , `Amici` , `Refresh` , `Mana` , `Destrezza` ) "; $Sqlin .= "VALUES ("; $Sqlin .= "'".$Nome."'"; $Sqlin .= ", '".$Pass."'"; $Sqlin .= ", NOW()"; $Sqlin .= ", '0'"; $Sqlin .= ", '".$Mente."'"; $Sqlin .= ", '".$Forza."'"; $Sqlin .= ", '".$Razza."'"; $Sqlin .= ", 'Nessuna'"; $Sqlin .= ", '".Sesso."'"; $Sqlin .= ", 'Nessuno'"; $Sqlin .= ", '".$Email."'"; $Sqlin .= ", '0'"; $Sqlin .= ", 'http://'"; $Sqlin .= ", '50'"; $Sqlin .= ", 'NOW()'"; $Sqlin .= ", 'No'"; $Sqlin .= ", 'NOW()'"; $Sqlin .= ", ''"; $Sqlin .= ", '".$Mente."'"; $Sqlin .= ", '".$Forza."'"; $Sqlin .= ", '-'"; $Sqlin .= ", ''"; $Sqlin .= ", 'No'"; $Sqlin .= ", 'http://'"; $Sqlin .= ", '100'"; $Sqlin .= ", '".$Cognome."'"; $Sqlin .= ", '-'"; $Sqlin .= ", 'NOW()'"; $Sqlin .= ", '".$Mana."'"; $Sqlin .= ", '".$Destrezza."'"; $Sqlin .= ")"; $Result = mysql_query($Sqlin); $Testo= "Benvenuto! E' stato registrato il tuo personaggio! \n"; $Testo .= "La password per l'accesso è ".$Pass."\n"; $target= "".$Email.""; $subject = 'Registrazione di '.$Nome.''; mail($target, $subject, $Testo, 'From: Gdr'); ?> |
Infine, come detto.. ecco la query da eseguire nel database per creare la tabella "pg" e la tabella "razze" :
Codice: |
#
# Struttura della tabella `pg` # DROP TABLE IF EXISTS `pg`; CREATE TABLE `pg` ( `Nome` varchar(20) NOT NULL default '', `Pass` varchar(20) NOT NULL default '', `Dataiscrizione` datetime default NULL, `Exp` int(10) default '0', `Mente` int(10) default '0', `Forza` int(10) default '0', `Razza` int(11) default '1000', `Gilda` int(11) NOT NULL default '0', `Sex` varchar(10) default 'm', `Info` text, `Email` varchar(100) default NULL, `Livello` tinyint(1) default '0', `Avatar` varchar(255) default NULL, `Denaro` int(11) default '0', `UltimoLavoro` date default '2000-01-01', `Bannato` datetime NOT NULL default '2000-01-01 00:00:00', `UltimoStipendio` date NOT NULL default '2000-01-01', `MotivoBann` varchar(255) default NULL, `MaxMente` int(11) default '0', `MaxForza` int(11) default '0', `Affetti` varchar(255) default 'nessuno', `AutoreBann` varchar(20) default NULL, `Amministratore` tinyint(1) NOT NULL default '0', `Musica` varchar(250) NOT NULL default '', `Salute` int(10) NOT NULL default '100', `Cognome` varchar(30) NOT NULL default '', `Amici` varchar(250) NOT NULL default 'Nessuno', `Refresh` datetime NOT NULL default '0000-00-00 00:00:00', `Mana` int(10) NOT NULL default '10', `Destrezza` int(10) NOT NULL default '10', PRIMARY KEY (`Nome`), KEY `IDRazza` (`Razza`), KEY `IDGilda` (`Gilda`), KEY `Esilio` (`Bannato`), KEY `Nome` (`Nome`), KEY `Nome_2` (`Nome`), KEY `Nome_3` (`Nome`) ) TYPE=MyISAM; # # Struttura della tabella `razze` # DROP TABLE IF EXISTS `razze`; CREATE TABLE `razze` ( `Id` bigint(20) NOT NULL auto_increment, `Nome` varchar(250) NOT NULL default '', `Mente` int(3) NOT NULL default '0', `Forza` int(3) NOT NULL default '0', `Mana` int(3) NOT NULL default '0', `Destrezza` int(3) NOT NULL default '0', `Nascosto` int(1) NOT NULL default '1', PRIMARY KEY (`Id`) ) TYPE=MyISAM AUTO_INCREMENT=1 ; |