Code:
<?php
/*
* Generic Register Page
* Author: Felipe Vieira Vendramini
* Configuration
*/
$MySql["Host"] = "localhost"; // host, duuh
$MySql["User"] = "root"; // Username
$MySql["Pass"] = "test"; // Password
$MySql["Data"] = "zf"; // Database
$Database = new PDO('mysql:host='.$MySql["Host"].';dbname='.$MySql["Data"].';charset=utf8', $MySql["User"], $MySql["Pass"], array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$Database->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
/*
* Common Functions
*/
function CheckIfNegative($Number)
{
if($Number < 0)
{
$Number *= (-1);
}
return $Number;
}
function CheckINT($Number)
{
if(filter_var($Number, FILTER_VALIDATE_INT) === false)
{
return false;
}
return true;
}
function ValidateUser($string){
$expression = "[A-Za-z0-9]";
if(preg_match($expression, $string)){
return true;
}
return false;
}
function ValidateEmail($string){
$string = strtolower($string);
$expression = "/([\w\-]+\@[\w\-]+\.[\w\-]+)/";
if(preg_match($expression, $string)){
return true;
}
return false;
}
/*
* Form validation
* Fill:
* Username: varchar(16)
* Password: varchar(16)
* SecurityCode: bigint(8)
* Email: varchar(64)
*/
if(!ValidateUser($_POST["Username"]) || !ValidateUser($_POST["Password"])){
//Handle Invalid Username or Password
}
$Username = $_POST["Username"];
$Password = $_POST["Password"];
if(strlen($_POST["Username"]) < 6 || strlen($_POST["Username"]) > 16){
//Handle Username Lenght Error
}
if(strlen($_POST["Password"]) < 6 || strlen($_POST["Password"]) > 16){
//Handle Password Lenght Error
}
$CheckName = $Database->prepare("SELECT username FROM `account` WHERE `username`=:name");
$CheckName->bindValue(':name', $Username, PDO::PARAM_STR);
$CheckName->execute();
$CountN = $CheckName->rowCount();
if($CountN > 0){
//Handle Existing Username
}
if(!ValidateEmail($_POST["Email"])){
//Handle Invalid E-mail
}
$Email = $_POST["Email"];
$CheckMail = $Database->prepare("SELECT email FROM `account` WHERE `email`=:mail");
$CheckMail->bindValue(':mail', $Email, PDO::PARAM_STR);
$CheckMail->execute();
$CountM = $CheckMail->rowCount();
if($CountM > 0){
//Handle Existing Mail
}
$SecurityCode = CheckIfNegative($_POST["SecurityCode"]);
if(!CheckINT($SecurityCode)){
//Handle Invalid format Security Code
}
if($SecurityCode < 10000000){
//Handle 8 Digits Security Code Error
}
$InsertRow = $Database->prepare("INSERT INTO account (`username`,`password`,`email`,`code`) VALUES (:name, :pass, :mail, :code)");
$InsertRow->bindValue(':name', $Username, PDO::PARAM_STR);
$InsertRow->bindValue(':pass', $Password, PDO::PARAM_STR);
$InsertRow->bindValue(':mail', $Email, PDO::PARAM_STR);
$InsertRow->bindValue(':code', $SecurityCode, PDO::PARAM_INT);
$Check = $InsertRow->execute();
if(!$Check){
//Handle Insert failed
}
die("OK");