This repository has been archived on 2023-05-21. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
SYSDesk/backend/create-user.php
2019-08-28 20:08:31 +02:00

286 lines
13 KiB
PHP

<?php
// Initialize the session
session_start();
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
header("location: login.php");
exit;
}
require_once "../assets/php/config.php";
$username = $password = $confirm_password = "";
$username_err = $password_err = $confirm_password_err = "";
// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
// Validate username
if(empty(trim($_POST["username"]))){
$username_err = "Please enter a username.";
} else{
// Prepare a select statement
$sql = "SELECT id FROM users WHERE username = ?";
if($stmt = mysqli_prepare($link, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "s", $param_username);
// Set parameters
$param_username = trim($_POST["username"]);
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
/* store result */
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){
$username_err = "This username is already taken.";
} else{
$username = trim($_POST["username"]);
}
} else{
echo "Oops! Something went wrong. Please try again later.";
}
}
// Close statement
mysqli_stmt_close($stmt);
}
// Validate password
if(empty(trim($_POST["password"]))){
$password_err = "Please enter a password.";
} elseif(strlen(trim($_POST["password"])) < 6){
$password_err = "Password must have atleast 6 characters.";
} else{
$password = trim($_POST["password"]);
}
// Validate confirm password
if(empty(trim($_POST["confirm_password"]))){
$confirm_password_err = "Please confirm password.";
} else{
$confirm_password = trim($_POST["confirm_password"]);
if(empty($password_err) && ($password != $confirm_password)){
$confirm_password_err = "Password did not match.";
}
}
// Check input errors before inserting in database
if(empty($username_err) && empty($password_err) && empty($confirm_password_err)){
// Prepare an insert statement
$sql = "INSERT INTO users (username, password) VALUES (?, ?)";
if($stmt = mysqli_prepare($link, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password);
// Set parameters
$param_username = $username;
$param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
// Redirect to login page
header("location: users.php");
} else{
echo "Something went wrong. Please try again later.";
}
}
// Close statement
mysqli_stmt_close($stmt);
}
// Close connection
mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>SYSDesk - Create users</title>
<meta charset="UTF-8">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="shortcut icon" type="image/x-icon" href="../assets/favicon.ico" />
<link href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic" rel="stylesheet">
<!-- STYLESHEETS -->
<style type="text/css">
[fuse-cloak],
.fuse-cloak {
display: none !important;
}
</style>
<!-- Icons.css -->
<link type="text/css" rel="stylesheet" href="../assets/icons/fuse-icon-font/style.css">
<!-- Animate.css -->
<link type="text/css" rel="stylesheet" href="../assets/node_modules/animate.css/animate.min.css">
<!-- Perfect Scrollbar -->
<link type="text/css" rel="stylesheet" href="../assets/node_modules/perfect-scrollbar/css/perfect-scrollbar.css" />
<!-- Fuse Html -->
<link type="text/css" rel="stylesheet" href="../assets/fuse-html/fuse-html.min.css" />
<!-- Main CSS -->
<link type="text/css" rel="stylesheet" href="../assets/css/main.css">
<!-- Custom CSS -->
<link type="text/css" rel="stylesheet" href="../assets/css/custom.css">
<!-- / STYLESHEETS -->
<!-- JAVASCRIPT -->
<!-- jQuery -->
<script type="text/javascript" src="../assets/node_modules/jquery/dist/jquery.min.js"></script>
<!-- Mobile Detect -->
<script type="text/javascript" src="../assets/node_modules/mobile-detect/mobile-detect.min.js"></script>
<!-- Perfect Scrollbar -->
<script type="text/javascript" src="../assets/node_modules/perfect-scrollbar/dist/perfect-scrollbar.min.js"></script>
<!-- Popper.js -->
<script type="text/javascript" src="../assets/node_modules/popper.js/dist/umd/popper.min.js"></script>
<!-- Bootstrap -->
<script type="text/javascript" src="../assets/node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- Data tables -->
<script type="text/javascript" src="../assets/node_modules/datatables.net/js/jquery.dataTables.js"></script>
<script type="text/javascript" src="../assets/node_modules/datatables-responsive/js/dataTables.responsive.js"></script>
<!-- Bootstrap Select -->
<script src="../assets/js/bootstrap-select.js" type="text/javascript"></script>
<!-- Fuse Html -->
<script type="text/javascript" src="../assets/fuse-html/fuse-html.min.js"></script>
<!-- Main JS -->
<script type="text/javascript" src="../assets/js/main.js"></script>
<!-- Custom JS -->
<script>
function yesnoCheck(that) {
if (that.value == "other") {
document.getElementById("ifYes").style.display = "block";
} else {
document.getElementById("ifYes").style.display = "none";
}
}
</script>
<!-- /Custom JS -->
<!-- / JAVASCRIPT -->
</head>
<body class="layout layout-vertical layout-left-navigation layout-below-toolbar layout-below-footer">
<main>
<div id="wrapper">
<aside id="aside" class="aside aside-left" data-fuse-bar="aside" data-fuse-bar-media-step="md" data-fuse-bar-position="left">
<div class="aside-content bg-primary-700 text-auto">
<div class="aside-toolbar">
<div class="logo">
<span class="logo-icon icon-desktop-mac"></span>
<p class="logo-text texttoolbar">SYSDesk</p>
</div>
<button id="toggle-fold-aside-button" type="button" class="btn btn-icon d-none d-lg-block" data-fuse-aside-toggle-fold>
<i class="icon icon-backburger"></i>
</button>
</div>
<ul class="nav flex-column custom-scrollbar" id="sidenav" data-children=".nav-item">
<li class="nav-item">
<a class="nav-link ripple " href="systems.php" data-url="index.html">
<i class="icon s-4 icon-desktop-tower"></i>
<span>Systems</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link ripple" href="tickets.php">
<i class="icon s-4 icon-message-bulleted"></i>
<span>Tickets</span>
</a>
</li>
<li class="nav-item" role="tab" id="heading-ecommerce">
<a class="nav-link ripple with-arrow collapsed" data-toggle="collapse" data-target="#collapse-ecommerce" href="#" aria-expanded="false" aria-controls="collapse-ecommerce">
<i class="icon s-4 icon-settings"></i>
<span>Settings</span>
</a>
<ul id="collapse-ecommerce" class='collapse ' role="tabpanel" aria-labelledby="heading-ecommerce" data-children=".nav-item">
<li class="nav-item">
<a class="nav-link ripple " href="users.php" data-url="index.html">
<span>Users</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link ripple " href="reset-password.php">
<span>Reset Password</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link ripple " href="other-settings.php" data-url="index.html">
<span>Other settings</span>
</a>
</li>
</ul>
</li>
</ul>
</div>
</aside>
<div class="content-wrapper">
<nav id="toolbar" class="bg-white">
<div class="row no-gutters align-items-center flex-nowrap">
<div class="col">
<div class="row no-gutters align-items-center flex-nowrap">
<button type="button" class="toggle-aside-button btn btn-icon d-block d-lg-none fuse-ripple-ready" data-fuse-bar-toggle="aside">
<i class="icon icon-menu"></i>
</button>
<div class="toolbar-separator d-block d-lg-none"></div>
</div>
</div>
<div class="col-auto">
<div class="row no-gutters align-items-center justify-content-end">
<a href="logout.php" class="logintoolbar ripple icon row align-items-center no-gutters px-2 px-sm-4" role="button" id="logintoolbar" aria-haspopup="true" aria-expanded="false">Logout</a>
</div>
</div>
</div>
</nav>
<div class="content custom-scrollbar">
<div class="page-layout simple full-width">
<div class="page-content-wrapper custom-scrollbar">
<!-- CONTENT -->
<div class="clearfix" style="background:white; padding:20px;">
<button class="headbnt btn btn-secondary btn-fab pull-left icon icon-arrow-left" onclick="window.history.back();"></button>
<h2 class="pull-right">Create a users</h2>
</div>
<div class="form-wrapper md-elevation-8 p-4">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group col-md-4 col-md-4col-md-4<?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
<label class="control-label">Username</label>
<input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
<span class="help-block"><?php echo $username_err; ?></span>
</div>
<div class="form-group col-md-4 col-md-4col-md-4<?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
<label class="control-label">Password</label>
<input type="password" name="password" class="form-control" value="<?php echo $password; ?>">
<span class="help-block"><?php echo $password_err; ?></span>
</div>
<div class="form-group col-md-4 <?php echo (!empty($confirm_password_err)) ? 'has-error' : ''; ?>">
<label class="control-label">Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" value="<?php echo $confirm_password; ?>">
<span class="help-block"><?php echo $confirm_password_err; ?></span>
</div>
<div class="form-group col-md-4">
<input type="submit" class="btn btn-secondary" value="Add">
</div>
</form>
</div>
<!-- / CONTENT -->
</div>
</div>
</div>
</div>
</div>
</main>
</body>
</html>