Step 1: Create MySQL Database and Tables
// Table structure for table `user`
CREATE TABLE `user` (
`user_id` int(12) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`user_name` varchar(50) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`status` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
// Indexes for table `user`
ALTER TABLE `user`
ADD PRIMARY KEY (`user_id`),
ADD UNIQUE KEY `email` (`email`);
// AUTO_INCREMENT for table `user`
ALTER TABLE `user`
MODIFY `user_id` int(12) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
?>
Step 2: Create DBConnection Class
Create a Class file named "DBConnection.php" define constant and connect DB code.
/**
* @package Login & Registration
*
* @author TechArise Team
*
* @email info@techarise.com
*
*/
if(!isset($_SESSION))
{
session_start();
}
date_default_timezone_set('Asia/Kolkata');
$root = "http://" . $_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
$constants['base_url'] = $root;
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'test_DB');
define('SITE_URL', $constants['base_url']);
define('HTTP_BOOTSTRAP_PATH', $constants['base_url'] . 'assets/vendor/');
define('HTTP_CSS_PATH', $constants['base_url'] . 'assets/css/');
define('HTTP_JS_PATH', $constants['base_url'] . 'assets/js/');
// windows path
//define('BASH_PATH', 'C:/xampp/htdocs/login-registration-system-using-php-oops-mysql/');
// ubuntu path
//define('BASH_PATH', '/var/www/login-registration-system-using-php-oops-mysql/');
// MAC path
define('BASH_PATH', '/Applications/XAMPP/htdocs/login-registration-system-using-php-oops-mysql/');
class DBConnection {
private $_con;
function __construct(){
$this->_con = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD,DB_DATABASE);
if ($this->_con->connect_error) die('Database error -> ' . $this->_con->connect_error);
}
// return Connection
function returnConnection() {
return $this->_con;
}
}
?>
Step 3: Create a Class file
Next create a file named User.php & include DBconnection file also:
/**
* @package Login & Registration
*
* @author TechArise Team
*
* @email info@techarise.com
*
*/
include "DBConnection.php";
class User
{
protected $db;
private $_userID;
private $_name;
private $_email;
private $_username;
private $_password;
public function setUserID($userID) {
$this->_userID = $userID;
}
public function setName($name) {
$this->_name = $name;
}
public function setEmail($email) {
$this->_email = $email;
}
public function setUsername($username) {
$this->_username = $username;
}
public function setPassword($password) {
$this->_password = $password;
}
public function __construct() {
$this->db = new DBConnection();
$this->db = $this->db->returnConnection();
}
// User registration Method
public function userRegistration() {
$password = $this->hash($this->_password);
$query = 'SELECT * FROM user WHERE user_name="'.$this->_username.'" OR email="'.$this->_username.'"';
$result = $this->db->query($query) or die($this->db->error);
$count_row = $result->num_rows;
if($count_row == 0) {
$query = 'INSERT INTO user SET user_name="'.$this->_username.'", password="'.$password.'", name="'.$this->_name.'", email="'.$this->_email.'", status="1"';
$result = $this->db->query($query) or die($this->db->error);
return true;
} else {
return false;
}
}
// User Login Method
public function doLogin() {
$query = 'SELECT user_id,password from user WHERE email="'.$this->_username.'" or user_name="'.$this->_username.'"';
$result = $this->db->query($query) or die($this->db->error);
$user_data = $result->fetch_array(MYSQLI_ASSOC);
print_r($user_data);
$count_row = $result->num_rows;
if ($count_row == 1) {
if (!empty($user_data['password']) && $this->verifyHash($this->_password, $user_data['password']) == TRUE) {
$_SESSION['login'] = TRUE;
$_SESSION['user_id'] = $user_data['user_id'];
return TRUE;
} else {
return FALSE;
}
}
}
// get User Information
public function getUserInfo() {
$query = "SELECT user_id, name, email FROM user WHERE user_id = ".$this->_userID;
$result = $this->db->query($query) or die($this->db->error);
$user_data = $result->fetch_array(MYSQLI_ASSOC);
return $user_data;
}
//get Session
public function getSession() {
if(!empty($_SESSION['login']) && $_SESSION['login']==TRUE) {
return TRUE;
} else {
return FALSE;
}
}
// logout method
public function logout() {
$_SESSION['login'] = FALSE;
unset($_SESSION);
session_destroy();
}
// password hash
public function hash($password) {
$hash = password_hash($password, PASSWORD_DEFAULT);
return $hash;
}
// password verify
public function verifyHash($password, $vpassword) {
if (password_verify($password, $vpassword)) {
return TRUE;
} else {
return FALSE;
}
}
}
?>
Step 4: Create registration file
Create a file named registration.php
function __autoload($class) {
include "include/$class.php";
}
$user = new User();
if ($user->getSession()===TRUE) {
header("location:home.php");
}
$status = '';
$errors = array();
//If our form has been submitted.
if(isset($_POST['submit'])){
extract($_POST);
//Get the values of our form fields.
$fullname = isset($fullname) ? $fullname : null;
$uemail = isset($uemail) ? $uemail : null;
$uname = isset($uname) ? $uname : null;
$password = isset($password) ? $password : null;
//Check the name and make sure that it isn't a blank/empty string.
if(strlen(trim($fullname)) === 0){
//Blank string, add error to $errors array.
$errors[] = "You must enter your fullname!";
}
if(strlen(trim($uname)) === 0){
//Blank string, add error to $errors array.
$errors[] = "You must enter your user name!";
}
if(strlen(trim($password)) === 0){
//Blank string, add error to $errors array.
$errors[] = "You must enter your password!";
}
//email address is valid.
if(!filter_var($uemail, FILTER_VALIDATE_EMAIL)) {
//$email is not a valid email. Add error to $errors array.
$errors[] = "That is not a valid email address!";
}
//If our $errors array is empty, we can assume that everything went fine.
if(empty($errors)){
//insert data into database.
$user->setName($fullname);
$user->setEmail($uemail);
$user->setUsername($uname);
$user->setPassword($password);
$register = $user->userRegistration();
if ($register) {
$status = "Registration successful Click here to login";
} else {
$status = "Registration failed. Email or Username already exits please try again.";
}
}
}
?>
include('templates/header.php');
?>
Simple Login & Registration system using PHP & MySQL
foreach ($errors as $value) {
echo '- '.$value.'
' ;
}
?>
include('templates/footer.php');
?>
Step 5: Create a file
Create a view file named index.php(Login File)
function __autoload($class) {
include "include/$class.php";
}
$msg = '';
$user = new User();
if (isset($_POST['submit'])) {
extract($_POST);
$user->setUsername($emailusername);
$user->setPassword($password);
$login = $user->doLogin();
if ($login) {
header("location:home.php");
} else {
$msg = 'Wrong username or password';
}
}
?>
include('templates/header.php');
?>
Simple Login & Registration system using PHP & MySQL
echo 'Wrong username or password';
} ?>
include('templates/footer.php');
?>
Step 6: Create a file
Create a view file named home.php
function __autoload($class) {
include "include/$class.php";
}
$user = new User();
if(!empty($_SESSION['user_id'])){
$uid = $_SESSION['user_id'];
}
if ($user->getSession()===FALSE) {
header("location:index.php");
}
if (isset($_GET['q'])) {
$user->logout();
header("location:index.php");
}
$user->setUserID($uid);
$userInfo = $user->getUserInfo();
?>
include('templates/header.php');
?>
Simple Login & Registration system using PHP & MySQL
Full Name:
Email:
include('templates/footer.php');
?>
Demo [sociallocker] Download[/sociallocker]