In questo articolo verrà spiegato come realizzare una pagina di registrazione account in PHP per MaNGOS con database MySQL.
Le funzionalità dello script sono solamente quelle di base, in rete si possono trovare altri script con molte funzionalità in più, qui mi limiterò a mostrarvene una semplice spiegando la struttura del codice.
In questa prima parte del codice, fissiamo le variabili che contengono l’indirizzo, l’username, la password di MySQL e il database degli account (generalmente è realmd):
<?php
/* Configurazione */
$mysql_address=’localhost’; // L’indirizzo del server MySQL, se si lavora in locale è ‘localhost’
$mysql_username=’root’; // L’username del proprio account MySQL, solitamente ‘root’
$mysql_password=’mangos’; // La password del proprio account MySQL
$mysql_database=’realmd’; // Il database di MaNGOS che contiene le informazioni riguardo agli account e al realm, solitamente si chiama ‘realmd’
?>
Successivamente, iniziamo a scrivere il corpo HTML della pagina e introduciamo un form che rimanda alla stessa pagina e che permette all’utente di immettere i dati dell’account:
<html>
<head>
<title>AccountReg</title>
</head>
<body>
<center>
<p><b>Registrazione account MaNGOS</b></p>
<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<p>Account: <input type=”text” name=”account”></p>
<p>Password: <input type=”text” name=”password”></p>
<input type=”submit” value=”Registra”>
</form>
Adesso continuiamo col PHP, per comodità assegnamo i valori immessi dall’utente alle variabili $account e $password:
<?php
// dati
$account=$_POST[‘account’];
$password=$_POST[‘password’];
Prepariamo la query SQL da eseguire assegnandola alla variabile $sql, i campi della tabella ‘account‘ (naturalmente è la tabella che contiene le informazioni di base degli account) del database realmd di MaNGOS interessati sono i seguenti:
username: contiene il nome dell’account, e quindi ad esso assegnamo il valore contenuto nella variabile $account
sha_pass_hash: contiene il nome dell’account e la password, criptati in sha1 e concatenati nel seguente modo: “account:password”
expansion: indica il tipo di espansione dell’account: 0 per WoW classico (senza espansioni), 1 per TBC e 2 per WOTLK
// query
$sql=”INSERT INTO account SET
username=’$account’,
sha_pass_hash=SHA1(CONCAT(UPPER(‘”.$account.”‘),’:’,UPPER(‘”.$password.”‘))),
expansion=2;”;
Adesso è arrivato il momento di connetterci al server database MySQL e selezionare il database su cui vogliamo lavorare, utilizzando le funzioni mysql_connect e mysql_select_db. Facciamo anche in modo da far mostrare un messaggio di avviso allo script qual’ora ci dovessero essere problemi durante una di queste operazioni:
// connessione al server database mysql
$dbcnx = mysql_connect(“$mysql_address”, “$mysql_username”, “$mysql_password”);
if (!$dbcnx)
{
exit(‘<p>Impossibile connettersi al server database MySQL</p>’);
}// selezione del database
if (!mysql_select_db(“$mysql_database”, $dbcnx))
{
exit(“<p>Impossibile connettersi al database $mysql_database</p>”);
}
Adesso non ci resta che scrivere la porzione di codice che esegue l’operazione di registrazione dell’account, ma la esegue solo se le variabili $account e $password non sono nulle e, in caso di problemi, facciamo in modo che lo script notifica un messaggio di errore:
// registrazione account
if ($account && $password)
{
if (@mysql_query($sql))
{
echo “<p>Account “$account” creato con successo!”;
}
else
{
echo “<p>Errore nella creazione dell’account $account: ” . mysql_error() . “</p>”;;
}
}
?>
Chiudiamo le tag HTML ed inseriamo eventuali crediti:
<p><font size=2><i>Coded by <b>Shin</b></i></font></p>
</center>
</body>
</html>
Di seguito è riportato l’intero codice, senza interruzioni:
<?php /* Configurazione */ $mysql_address='localhost'; // L'indirizzo del server MySQL, se si lavora in locale è 'localhost' $mysql_username='root'; // L'username del proprio account MySQL, solitamente 'root' $mysql_password='mangos'; // La password del proprio account MySQL $mysql_database='realmd'; // Il database di MaNGOS che contiene le informazioni riguardo agli account e al realm, solitamente si chiama 'realmd' ?> <html> <head> <title>AccountReg</title> </head> <body> <center> <p><b>Registrazione account MaNGOS</b></p> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <p>Account: <input type="text" name="account"></p> <p>Password: <input type="text" name="password"></p> <input type="submit" value="Registra"> </form> <?php // dati $account=$_POST['account']; $password=$_POST['password']; // query $sql="INSERT INTO account SET username='$account', sha_pass_hash=SHA1(CONCAT(UPPER('".$account."'),':',UPPER('".$password."'))), expansion=2;"; // connessione al server database mysql $dbcnx = mysql_connect("$mysql_address", "$mysql_username", "$mysql_password"); if (!$dbcnx) { exit('<p>Impossibile connettersi al server database MySQL</p>'); } // selezione del database if (!mysql_select_db("$mysql_database", $dbcnx)) { exit("<p>Impossibile connettersi al database $mysql_database</p>"); } // registrazione account if ($account && $password) { if (@mysql_query($sql)) { echo "<p>Account "$account" creato con successo!"; } else { echo "<p>Errore nella creazione dell'account $account: " . mysql_error() . "</p>";; } } ?> <p><font size=2><i>Coded by <b>Shin</b></i></font></p> </center> </body> </html>