Non poche persone mi hanno chiesto di creare una guida divisa in diversi step su "Come fare un Gdr Online"... così mi sono messo all'opera. 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 ; Vai alla Lezione 2 -->