|
|
|
 |
 |
 |
 |
|
 |
 |
|
 |
 |
|
 |
|
| Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum) |

01-30-2010, 12:53 AM
|
 |
Discordant
|
|
Join Date: Mar 2009
Location: Ottawa
Posts: 495
|
|
Awesome, thanks KLS, compiles fine now.
|
 |
|
 |

04-04-2010, 01:08 PM
|
|
Discordant
|
|
Join Date: Apr 2006
Posts: 374
|
|
Here is an Account Creation web front end tool I wrote for the SVN Loginserver. It can be added to a server webpage to allow users to create accounts, it then emails the server admin the new account information.
It consists of 2 files eqreg.php and insert.php
Note: Make sure to change the mysql server info and email address in insert.php before using.
eqreg.php
Code:
<!-- EQEMu SVN Loginserver PHP Account Registration Page - By: Cubber -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>EQEmu SVN Loginserver Account Registration Page</title>
<meta name="description" content="EQEmulator SVN Loginserver Account Registration Page.">
</head>
<body>
<h1>EQ Registration Form</h1>
<p>Please fill out the form below to create a new account.</p>
<br />
<form method="post" action="insert.php">
Username: <i>(Max 16 chars)</i><br />
<input name="username" type="text" id="username" maxlength="16" />
<br /><br />
Password: <i>(Max 16 chars)</i><br />
<input name="pw" type="password" id="pw" maxlength="16" />
<br /><br />
Email:<br />
<input name="email" type="text" id="email" maxlength="50" />
<br /><br />
<br />
<input name="Submit" type="submit" value="Create Account" />
</form>
<br />
</body>
</html>
insert.php
Code:
<!-- EQEMu SVN Loginserver PHP Account Registration Page - By: Cubber -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>>EQEmu SVN Loginserver Account Registration Page</title>
<meta name="description" content="EQEmulator SVN Loginserver Account Registration Page.">
<head>
<body>
<p>
<?php
$DB_ADDY = "localhost"; //address:port for the MySQL server
$DB_USER = "eqemu"; //username to login to MySQL with
$DB_PASS = "eqemu"; //password to login to MySQL with
$DB_DB = "peq"; //database name to use "peq" for default installation
$user = $_POST['username'];
$pass = $_POST['pw'];
$acct_email = $_POST['email'];
$sendto = "youremail@something.com";
$subject = "New EQEmu Account Created";
$message = "A new account has been created on the EQEmu Server. Account details: - email: $acct_email\n - username: $user\n - password: $pass\n";
function error_s($text) {
echo("<p>" . $text);
};
$user_chars = "#[^a-zA-Z0-9_\-]#";
$email_chars = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
if ( !isset($_POST['username']) || !isset($_POST['pw']) || !isset($_POST['email']) )
{
echo "User/Pass/Email not passed.";
return;
}
$con = @mysql_connect($DB_ADDY, $DB_USER, $DB_PASS);
if (!$con) {
error_s("Unable to connect to database: " . mysql_error());
};
if (!empty($_POST)) {
if ((empty($_POST["username"]))||(empty($_POST["pw"]))||(empty($_POST["email"])) ) {
error_s("You did not enter all the required information.");
exit();
} else {
$username = ($_POST["username"]);
$pw = ($_POST["pw"]);
$email = ($_POST["email"]);
if (strlen($username) < 5) {
error_s("Username too short.");
exit();
};
if (strlen($username) > 16) {
error_s("Username too long.");
exit();
};
if (strlen($pw) < 6) {
error_s("Password too short.");
exit();
};
if (strlen($pw) > 16) {
error_s("Password too long.");
exit();
};
if (strlen($email) < 10) {
error_s("Email was too short.");
exit();
};
if (strlen($email) > 50) {
error_s("Email was too long.");
exit();
};
if (preg_match($user_chars,$username)) {
error_s("Username contained illegal characters.");
exit();
};
if (preg_match($user_chars,$pw)) {
error_s("Password contained illegal characters.");
exit();
};
if (!preg_match($email_chars,$email)) {
error_s("Email was in an incorrect format.");
exit();
};
$username = mysql_real_escape_string($username);
$pw = mysql_real_escape_string($pw);
$email = mysql_real_escape_string($email);
$qry = @mysql_query("select AccountName from " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts where AccountName = '" . $username . "'", $con);
if (!$qry) {
error_s("Error querying database: " . mysql_error());
};
if ($existing_username = mysql_fetch_assoc($qry)) {
foreach ($existing_username as $key => $value) {
$existing_username = $value;
};
};
$existing_username = ($existing_username);
if ($existing_username == ($_POST['username'])) {
error_s("That username is already taken. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
unset($qry);
$sha_pass_hash = sha1(($pw));
$register_sql = "insert into " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts (AccountName,AccountPassword,AccountEmail) values ('" . $username . "','" . $sha_pass_hash . "','" . $email . "')";
$qry = @mysql_query($register_sql, $con);
if (!$qry) {
error_s("Error creating account: " . mysql_error());
};
mail($sendto, $subject, $message);
echo("Your account was successfully created!");
exit();
};
} else {
echo($page);
};
?>
</p>
</body>
</html>
I also added captcha to the version I use on my website, I use an opensource captcha called securimage, you can find it here http://www.phpcaptcha.org/
It works rather well and is easily incorporated into the page. I did not put it into the posted code because I figured I would leave it very simple so that folks could customize it as they see fit.
Enjoy!
|
 |
|
 |

04-04-2010, 11:23 PM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Wow, thanks for sharing that, I might have to give it a try! It probably wouldn't hurt to have something like that on the SVN for people to use and update as needed  Would have to see what the other devs think of putting something like that on the SVN though.
|

04-05-2010, 09:28 AM
|
|
Discordant
|
|
Join Date: Apr 2006
Posts: 374
|
|
Your welcome
I don't mind at all if it gets added to SVN
|
 |
|
 |

04-06-2010, 05:14 PM
|
|
Discordant
|
|
Join Date: Apr 2006
Posts: 374
|
|
Updates to Account Creation Tool
Version 1.1
Fixes:
- Added password confirmation box to eqreg.php and the logic to support it to insert.php
- The script now emails the user as well as the admin so the user gets a confirmation. ** Make sure you change the Bcc: address to your email address. **
- Updated error handling so all errors have a link to direct the user back to the main eqreg.php page to try again.
The code:
eqreg.php
Code:
<!-- EQEMu SVN Loginserver PHP Account Registration Page - By: Cubber -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>EQEmu SVN Loginserver Account Registration Page</title>
<meta name="description" content="EQEmulator SVN Loginserver Account Registration Page.">
</head>
<body>
<h1>EQ Registration Form</h1>
<p>Please fill out the form below to create a new account.</p>
<br />
<form method="post" action="insert.php">
Username: <i>(Max 16 chars)</i><br />
<input name="username" type="text" id="username" maxlength="16" />
<br /><br />
Password: <i>(Max 16 chars)</i><br />
<input name="pw" type="password" id="pw" maxlength="16" />
<br /><br />
Confirm Password: <i>(Max 16 chars)</i><br />
<input name="cpw" type="password" id="cpw" maxlength="16" />
<br /><br />
Email:<br />
<input name="email" type="text" id="email" maxlength="50" />
<br /><br />
<br />
<input name="Submit" type="submit" value="Create Account" />
</form>
<br />
</body>
</html>
insert.php
Code:
<!-- EQEMu SVN Loginserver PHP Account Registration Page - By: Cubber -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>>EQEmu SVN Loginserver Account Registration Page</title>
<meta name="description" content="EQEmulator SVN Loginserver Account Registration Page.">
<head>
<body>
<p>
<?php
$DB_ADDY = "localhost"; //address:port for the MySQL server
$DB_USER = "eqemu"; //username to login to MySQL with
$DB_PASS = "eqemu"; //password to login to MySQL with
$DB_DB = "peq"; //database name to use "peq" for default installation
$user = $_POST['username'];
$pass = $_POST['pw'];
$cpass = $_POST['cpw'];
$acct_email = $_POST['email'];
$headers = 'Bcc: admin@somewhere.com' . "\r\n";
$sendto = $acct_email;
$subject = "New EQ Account Created";
$message = "Your new account has been created on the EQEmulator Server. Account details:\n email: $acct_email\n username: $user\n password: $pass\n";
function error_s($text)
{
echo("<p>" . $text);
};
$user_chars = "#[^a-zA-Z0-9_\-]#";
$email_chars = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
if ( !isset($_POST['username']) || !isset($_POST['pw']) || !isset($_POST['cpw']) || !isset($_POST['email']) )
{
echo "User/Pass/Email not passed. Click <a href=eqreg.php>here</a> and try again.";
return;
}
$con = @mysql_connect($DB_ADDY, $DB_USER, $DB_PASS);
if (!$con)
{
error_s("Unable to connect to database: " . mysql_error());
};
if (!empty($_POST))
{
if ((empty($_POST["username"]))||(empty($_POST["pw"]))||(empty($_POST["cpw"]))||(empty($_POST["email"])) )
{
error_s("You did not enter all the required information. Click <a href=eqreg.php>here</a> and try again.");
exit();
}
else
{
$username = ($_POST["username"]);
$pw = ($_POST["pw"]);
$cpw = ($_POST["cpw"]);
$email = ($_POST["email"]);
if (strlen($username) < 5)
{
error_s("Username too short. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (strlen($username) > 16)
{
error_s("Username too long. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (strlen($pw) < 6)
{
error_s("Password too short. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (strlen($pw) > 16)
{
error_s("Password too long. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (strlen($cpw) < 6)
{
error_s("Password too short. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (strlen($cpw) > 16)
{
error_s("Password too long. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (strlen($email) < 10)
{
error_s("Email was too short. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (strlen($email) > 50)
{
error_s("Email was too long. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (preg_match($user_chars,$username))
{
error_s("Username contained illegal characters. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (preg_match($user_chars,$pw))
{
error_s("Password contained illegal characters. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (preg_match($user_chars,$cpw))
{
error_s("Password contained illegal characters. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if (!preg_match($email_chars,$email))
{
error_s("Email was in an incorrect format. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
if ($pw != $cpw)
{
error_s("Passwords do not match! Click <a href=eqreg.php>here</a> and try again.");
exit();
}
$username = mysql_real_escape_string($username);
$pw = mysql_real_escape_string($pw);
$email = mysql_real_escape_string($email);
$qry = @mysql_query("select AccountName from " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts where AccountName = '" . $username . "'", $con);
if (!$qry)
{
error_s("Error querying database: " . mysql_error());
};
if ($existing_username = mysql_fetch_assoc($qry))
{
foreach ($existing_username as $key => $value)
{
$existing_username = $value;
};
};
$existing_username = ($existing_username);
if ($existing_username == ($_POST['username']))
{
error_s("That username is already taken. Click <a href=eqreg.php>here</a> and try again.");
exit();
};
unset($qry);
$sha_pass_hash = sha1(($pw));
$register_sql = "insert into " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts (AccountName,AccountPassword,AccountEmail) values ('" . $username . "','" . $sha_pass_hash . "','" . $email . "')";
$qry = @mysql_query($register_sql, $con);
if (!$qry)
{
error_s("Error creating account: " . mysql_error());
}
else
{
mail($sendto, $subject, $message, $headers);
echo("Your account was successfully created!");
}
exit();
};
}
else
{
echo($page);
};
?>
</p>
</body>
</html>
|
 |
|
 |
 |
|
 |

04-06-2010, 05:22 PM
|
|
Discordant
|
|
Join Date: Apr 2006
Posts: 374
|
|
Here is a password reset tool I whipped up today for use with the SVN Login Server.
Same deal as the account creation tool, I stripped it down so it could be customized easily. Make sure to change the mysql info as well as the admin@somewhere.com to your email address. **Note: admin email is lower in the code.**
This script will email a confirmation to the user as well as Bcc the server admin once you change the Bcc: address. Once you verify it is working you may want to remove the $header from the mail line if you don't want users passwords mailed to you when they change them.
pwreset.php
Code:
<!-- EQEmulator SVN Login Server Account Password Reset Utility - By: Cubber -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>EQEmulator SVN Login Server Account Password Reset Utility</title>
<meta name="description" content="EQEmulator SVN Login Server Account Password Reset Utility.">
</head>
<body>
<h1>Password Reset Utility</h1>
<p>Please fill out the form below to change your login server password.</p>
<br />
<form method="post" action="insert.php">
Username: <i>(Max 16 chars)</i><br />
<input name="username" type="text" id="username" maxlength="16" />
<br /><br />
Current Password: <i>(Max 16 chars)</i><br />
<input name="pw" type="password" id="pw" maxlength="16" />
<br /><br />
New Password: <i>(Max 16 chars)</i><br />
<input name="npw" type="password" id="npw" maxlength="16" />
<br /><br />
Confirm New Password: <i>(Max 16 chars)</i><br />
<input name="cnpw" type="password" id="cnpw" maxlength="16" />
<br /><br />
<input name="Submit" type="submit" value="Change Password" />
</form>
<br />
</body>
</html>
insert.php
Code:
<!-- EQEmulator SVN Login Server Account Password Reset Utility - By: Cubber -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>EQEmulator SVN Login Server Account Password Reset Utility</title>
<meta name="description" content="EQEmulator SVN Login Server Account Password Reset Utility.">
<head>
<body>
<p>
<?php
$DB_ADDY = "localhost"; //address:port for the MySQL server
$DB_USER = "eqemu"; //username to login to MySQL with
$DB_PASS = "eqemu"; //password to login to MySQL with
$DB_DB = "peq"; //database name to use "peq" for default installation
$user = $_POST['username'];
$pass = $_POST['pw'];
$npass = $_POST['npw'];
$cnpass = $_POST['cnpw'];
function error_s($text)
{
echo("<p>" . $text);
};
$user_chars = "#[^a-zA-Z0-9_\-]#";
if ( !isset($_POST['username']) || !isset($_POST['pw']) || !isset($_POST['npw']) || !isset($_POST['cnpw']) )
{
echo "User/Pass/Email not passed. Click <a href=pwreset.php>here</a> and try again.";
return;
}
$con = @mysql_connect($DB_ADDY, $DB_USER, $DB_PASS);
if (!$con)
{
error_s("Unable to connect to database: " . mysql_error());
};
if (!empty($_POST))
{
if ((empty($_POST["username"]))||(empty($_POST["pw"]))||(empty($_POST["npw"]))||(empty($_POST["cnpw"])) )
{
error_s("You did not enter all the required information. Click <a href=pwreset.php>here</a> and try again.");
exit();
}
else
{
$username = ($_POST["username"]);
$pw = ($_POST["pw"]);
$npw = ($_POST["npw"]);
$cnpw = ($_POST["cnpw"]);
if (strlen($username) < 5)
{
error_s("Username too short. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (strlen($username) > 16)
{
error_s("Username too long. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (strlen($pw) < 6)
{
error_s("Password too short. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (strlen($pw) > 16)
{
error_s("Password too long. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (strlen($npw) < 6)
{
error_s("New password too short. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (strlen($npw) > 16)
{
error_s("New password too long. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (strlen($cnpw) < 6)
{
error_s("New password too short. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (strlen($cnpw) > 16)
{
error_s("New password too long. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (preg_match($user_chars,$username))
{
error_s("Username contained illegal characters. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (preg_match($user_chars,$pw))
{
error_s("Password contained illegal characters. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (preg_match($user_chars,$npw))
{
error_s("New password contained illegal characters. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if (preg_match($user_chars,$cnpw))
{
error_s("New password contained illegal characters. Click <a href=pwreset.php>here</a> and try again.");
exit();
};
if ($npw != $cnpw)
{
error_s("Passwords do not match! Click <a href=pwreset.php>here</a> and try again.");
exit();
}
$username = mysql_real_escape_string($username);
$pw = mysql_real_escape_string($pw);
$npw = mysql_real_escape_string($npw);
$cnpw = mysql_real_escape_string($cnpw);
$qry = @mysql_query("select AccountName from " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts where AccountName = '" . $username . "'", $con);
if (!$qry)
{
error_s("Error querying database: " . mysql_error());
};
if ($existing_username = mysql_fetch_assoc($qry))
{
foreach ($existing_username as $key => $value)
{
$existing_username = $value;
};
};
$pwqry = @mysql_query("select AccountPassword from " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts where AccountName = '" . $username . "'", $con);
if (!$pwqry)
{
error_s("Error querying database: " . mysql_error());
};
if ($pw_check = mysql_fetch_assoc($pwqry))
{
foreach ($pw_check as $key => $value)
{
$pw_check = $value;
};
};
$sha_oldpass_hash = sha1(($pw));
if ($sha_oldpass_hash != $pw_check)
{
error_s("Your account password was incorrect Click <a href=pwreset.php>here</a> and try again.");
exit();
}
$existing_username = ($existing_username);
if ($existing_username == ($_POST['username']))
{
$sha_pass_hash = sha1(($npw));
$register_sql = "UPDATE " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts SET AccountPassword='$sha_pass_hash' WHERE AccountName='$username' ";
};
$mailqry = @mysql_query("select AccountEmail from " . mysql_real_escape_string($DB_DB) . ".tblLoginServerAccounts where AccountName = '" . $username . "'", $con);
if (!$mailqry)
{
error_s("Error querying database: " . mysql_error());
};
if ($acct_email = mysql_fetch_assoc($mailqry))
{
foreach ($acct_email as $key => $value)
{
$acct_email = $value;
};
};
$headers = 'Bcc: admin@somewhere.com' . "\r\n";
$sendto = $acct_email;
$subject = "Your Login Server Password Has Been Changed";
$message = "Your Login Server password for the EQEmulator game server has been changed. Account details:\n username: $user\n password: $npass\n";
unset($mailqry);
unset($qry);
unset($pwqry);
$qry = @mysql_query($register_sql, $con);
if (!$qry)
{
error_s("Error changing password: " . mysql_error());
}
else
{
mail($sendto, $subject, $message, $headers);
echo("Your password was successfully changed!");
};
exit();
};
}
else
{
echo($page);
};
?>
</p>
</body>
</html>
|
 |
|
 |
| Thread Tools |
|
|
| Display Modes |
Hybrid Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 02:03 AM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |