diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | README.md | 4 | ||||
-rwxr-xr-x | arfnet_logo.png | bin | 0 -> 78409 bytes | |||
-rw-r--r-- | dbinit.sql | 10 | ||||
-rw-r--r-- | index.php | 36 | ||||
-rwxr-xr-x | login.php | 58 | ||||
-rw-r--r-- | rack.jpg | bin | 0 -> 1914172 bytes | |||
-rwxr-xr-x | register.php | 106 | ||||
-rw-r--r-- | style.css | 57 | ||||
-rwxr-xr-x | tile1.jpg | bin | 0 -> 1500 bytes |
10 files changed, 196 insertions, 76 deletions
@@ -1 +1,2 @@ config.php +phpMyAdmin/ @@ -11,6 +11,9 @@ User types: Report problems with CST or such as password changes to admin@arf20.com FILES: + index.html + landing page, branding? + register.php -> login.php registers client to db send email with verification link @@ -53,7 +56,6 @@ FILES: SQL: -Database: arfnet2 Tables: users User logins id autoincrement, username, password (hash), email, email verification code, user type { client, helpdesk, accountant, admin }, register date diff --git a/arfnet_logo.png b/arfnet_logo.png Binary files differnew file mode 100755 index 0000000..82adbef --- /dev/null +++ b/arfnet_logo.png @@ -1,2 +1,12 @@ CREATE DATABASE arfnet2; +CREATE TABLE `arfnet2`.`users` ( + `id` INT NOT NULL AUTO_INCREMENT , + `username` VARCHAR(31) NOT NULL , + `password` VARCHAR(255) NOT NULL , + `email` VARCHAR(127) NOT NULL , + `verifycode` VARCHAR(31) NOT NULL , + `type` ENUM('client','helpdesk','accountant','admin') NOT NULL , + `regdate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , + PRIMARY KEY (`id`) +); diff --git a/index.php b/index.php new file mode 100644 index 0000000..d036d1b --- /dev/null +++ b/index.php @@ -0,0 +1,36 @@ +<!doctype html> +<html> + <head> + <meta charset="UTF-8"> + <link rel="stylesheet" type="text/css" href="/style.css"> + <title>ARFNET CSTIMS</title> + </head> + <body> + <header><a href="https://arf20.com/"> + <img src="arfnet_logo.png" width="64"><span class="title"><strong>ARFNET</strong></span> + </a></header> + <hr> + <main> + <div class="row"> + <div class="col1"> + <h2 class="center">ARFNET Client Service Ticket and Invoice Management System</h2> + <p>State of the art hosting solution with ultra personalised service</p> + <div class="row"> + <div class="col"> + <h3>Our cutting edge datacenter</h3> + <img class="img" src="/rack.jpg"><br> + </div> + <div class="col"> + <h3>Services and plans</h3> + <!-- TODO PHP list of services --> + </div> + </div> + </div> + <div class="col2"> + <h3><a href="/login.php">Login</h2> + <h3><a href="/register.php">Sign up today!</h2> + </div> + </div> + </main> + </body> +</html>
\ No newline at end of file @@ -99,32 +99,36 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){ <!DOCTYPE html>
<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title>Login</title>
- <link rel="stylesheet" type="text/css" href="arfCloud.css">
- <link rel="stylesheet" type="text/css" href="/style.css">
-</head>
-<body>
- <div class="wrapper">
- <h2>arfCloud Login</h2>
- <p>For those who don't want their data sold by Google</p>
- <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
- <div class="form-group row <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
- <div class="column"><label>Username</label></div>
- <div class="column"><input type="text" name="username" class="form-control" pattern="[a-zA-Z0-9_]+" value="<?php echo $username; ?>"></div>
- <span class="help-block"><?php echo $username_err; ?></span>
- </div>
- <div class="form-group row <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
- <div class="column"><label>Password</label></div>
- <div class="column"><input type="password" name="password" pattern="[a-zA-Z0-9_]+" class="form-control"></div>
- <span class="help-block"><?php echo $password_err; ?></span>
+ <head>
+ <meta charset="UTF-8">
+ <title>CSTIMS Login</title>
+ <link rel="stylesheet" type="text/css" href="/style.css">
+ </head>
+ <body>
+ <header><a href="https://arf20.com/">
+ <img src="arfnet_logo.png" width="64"><span class="title"><strong>ARFNET</strong></span>
+ </a></header>
+ <hr>
+ <main>
+ <div class="wrapper">
+ <h2>CSTIMS Login</h2>
+ <form action="/login.php" method="post">
+ <div class="form-group row <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
+ <div class="column"><label>Username</label></div>
+ <div class="column"><input type="text" name="username" class="form-control" pattern="[a-zA-Z0-9_]+" value="<?php echo $username; ?>"></div>
+ <span class="help-block"><?php echo $username_err; ?></span>
+ </div>
+ <div class="form-group row <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
+ <div class="column"><label>Password</label></div>
+ <div class="column"><input type="password" name="password" pattern="[a-zA-Z0-9_]+" class="form-control"></div>
+ <span class="help-block"><?php echo $password_err; ?></span>
+ </div>
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" value="Login">
+ </div>
+ <p>Don't have an account? <a href="register.php">Sign up now</a>.</p>
+ </form>
</div>
- <div class="form-group">
- <input type="submit" class="btn btn-primary" value="Login">
- </div>
- <p>Don't have an account? <a href="register.php">Sign up now</a>.</p>
- </form>
- </div>
-</body>
+ </main>
+ </body>
</html>
diff --git a/rack.jpg b/rack.jpg Binary files differnew file mode 100644 index 0000000..13155e2 --- /dev/null +++ b/rack.jpg diff --git a/register.php b/register.php index d7265b7..37565c5 100755 --- a/register.php +++ b/register.php @@ -3,15 +3,15 @@ require_once "config.php";
// Define variables and initialize with empty values
-$username = $password = $confirm_password = "";
-$username_err = $password_err = $confirm_password_err = "";
+$username = $password = $confirm_password = $email = "";
+$username_err = $password_err = $confirm_password_err = $email_err = "";
// Processing form data when form is submitted
if ($_SERVER["REQUEST_METHOD"] == "POST"){
// Validate username
if (empty($_POST["username"]))
$username_err = "Enter a username.";
- else if (preg_match("[a-zA-Z0-9_]+", $_POST["username"]) != false)
+ else if (preg_match("/[a-zA-Z0-9_]+/", $_POST["username"]) != 1)
$username_err = "Invalid username.";
else {
// Prepare a select statement
@@ -22,7 +22,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST"){ mysqli_stmt_bind_param($stmt, "s", $param_username);
// Set parameters
- $param_username = trim($_POST["username"]);
+ $param_username = $_POST["username"];
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
@@ -32,7 +32,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST"){ if(mysqli_stmt_num_rows($stmt) == 1){
$username_err = "This username is already taken.";
} else{
- $username = trim($_POST["username"]);
+ $username = $_POST["username"];
}
} else{
echo "SQL failed. Idk, ask arf20.";
@@ -45,17 +45,19 @@ if ($_SERVER["REQUEST_METHOD"] == "POST"){ // Validate email
if (empty($_POST["email"]))
- $username_err = "Enter a username.";
- else if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))
- $username_err = "Invalid username.";
+ $email_err = "Enter a email address.";
+ else if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false)
+ $email_err = "Invalid email address.";
+ else
+ $email = $_POST["email"];
// Validate password
if (empty($_POST["password"]))
$password_err = "Enter a password.";
- else if (length($_POST["password"]) < 8)
+ else if (strlen($_POST["password"]) < 8)
$password_err = "Password must have at least 8 characters.";
- else if (preg_match("[a-zA-Z0-9!@^*$%&)(=+çñÇ[]{}-.,_:;]+", $_POST["password"]) != false)
- $password_err = "Password must be in the format [a-zA-Z0-9!@^*$%&)(=+çñÇ[]{}-.,_:;].";
+ else if (preg_match("/[a-zA-Z0-9!@^*$%&)(=+çñÇ][}{\-.,_:;]+/", $_POST["password"]) != false)
+ $password_err = "Password must be in the format [a-zA-Z0-9!@^*$%&)(=+çñÇ][}{-.,_:;].";
else
$password = $_POST["password"];
@@ -67,18 +69,22 @@ if ($_SERVER["REQUEST_METHOD"] == "POST"){ // 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 (?, ?)";
+ $sql = "INSERT INTO users (username, password, email, verifycode) VALUES (?, ?, ?, ?)";
- if ($stmt = mysqli_prepare($link, $sql)){
+ if ($stmt = mysqli_prepare($link, $sql)) {
// Bind variables to the prepared statement as parameters
- mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password);
+ mysqli_stmt_bind_param($stmt, "ssss", $param_username, $param_password, $param_email, $param_verifycode);
// Set parameters
$param_username = $username;
$param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
+ $param_email = $email;
+ $param_verifycode = base64_encode(random_bytes(12)); // code of size 16
// Attempt to execute the prepared statement
- if (mysqli_stmt_execute($stmt)){
+ if (mysqli_stmt_execute($stmt)) {
+ // Send verification email
+
// Redirect to login page
header("location: login.php");
} else {
@@ -99,41 +105,45 @@ if ($_SERVER["REQUEST_METHOD"] == "POST"){ <html lang="en">
<head>
<meta charset="UTF-8">
- <title>Register</title>
- <link rel="stylesheet" type="text/css" href="arfCloud.css">
+ <title>CSTIMS Register</title>
<link rel="stylesheet" type="text/css" href="/style.css">
</head>
<body>
- <div class="wrapper">
- <h2>ARFNET2 Register</h2>
- <p>For those who don't want their data sold</p>
- <form action="register.php" method="post">
- <div class="form-group row <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
- <div class="column"><label>Username</label></div>
- <div class="column"><input type="text" name="username" class="form-control" pattern="[a-zA-Z0-9_]+" value="<?php echo $username; ?>"></div>
- <span class="help-block"><?php echo $username_err; ?></span>
- </div>
- <div class="form-group row <?php echo (!empty($mail_err)) ? 'has-error' : ''; ?>">
- <div class="column"><label>Email address</label></div>
- <div class="column"><input type="email" name="email" class="form-control" value="<?php echo $email; ?>"></div>
- <span class="help-block"><?php echo $email_err; ?></span>
- </div>
- <div class="form-group row <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
- <div class="column"><label>Password</label></div>
- <div class="column"><input type="password" name="password" class="form-control" pattern="[a-zA-Z0-9!@^*$%&)(=+çñÇ[]{}-.,_:;]+" value="<?php echo $password; ?>"></div>
- <span class="help-block"><?php echo $password_err; ?></span>
- </div>
- <div class="form-group row <?php echo (!empty($confirm_password_err)) ? 'has-error' : ''; ?>">
- <div class="column"><label>Confirm Password</label></div>
- <div class="column"><input type="password" name="confirm_password" class="form-control" pattern="[a-zA-Z0-9!@^*$%&)(=+çñÇ[]{}-.,_:;]+" value="<?php echo $confirm_password; ?>"></div>
- <span class="help-block"><?php echo $confirm_password_err; ?></span>
- </div>
- <div class="form-group">
- <input type="submit" class="btn btn-primary" value="Submit">
- <input type="reset" class="btn btn-default" value="Reset">
- </div>
- <p><a href="login.php">Login</a>.</p>
- </form>
- </div>
+ <header><a href="https://arf20.com/">
+ <img src="arfnet_logo.png" width="64"><span class="title"><strong>ARFNET</strong></span>
+ </a></header>
+ <hr>
+ <main>
+ <div class="wrapper">
+ <h2>CSTIMS Register</h2>
+ <p>For those who don't want their data sold</p>
+ <form action="/register.php" method="post">
+ <div class="form-group row <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
+ <div class="column"><label>Username</label></div>
+ <div class="column"><input type="text" name="username" class="form-control" pattern="[a-zA-Z0-9_]+" value="<?php echo $username; ?>"></div>
+ <span class="help-block"><?php echo $username_err; ?></span>
+ </div>
+ <div class="form-group row <?php echo (!empty($mail_err)) ? 'has-error' : ''; ?>">
+ <div class="column"><label>Email address</label></div>
+ <div class="column"><input type="email" name="email" class="form-control" value="<?php echo $email; ?>"></div>
+ <span class="help-block"><?php echo $email_err; ?></span>
+ </div>
+ <div class="form-group row <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
+ <div class="column"><label>Password</label></div>
+ <div class="column"><input type="password" name="password" class="form-control" pattern="[a-zA-Z0-9!@^*$%&)(=+çñÇ[]{}-.,_:;]+" value="<?php echo $password; ?>"></div>
+ <span class="help-block"><?php echo $password_err; ?></span>
+ </div>
+ <div class="form-group row <?php echo (!empty($confirm_password_err)) ? 'has-error' : ''; ?>">
+ <div class="column"><label>Confirm Password</label></div>
+ <div class="column"><input type="password" name="confirm_password" class="form-control" pattern="[a-zA-Z0-9!@^*$%&)(=+çñÇ[]{}-.,_:;]+" value="<?php echo $confirm_password; ?>"></div>
+ <span class="help-block"><?php echo $confirm_password_err; ?></span>
+ </div>
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" value="Submit">
+ </div>
+ <p><a href="login.php">Login</a>.</p>
+ </form>
+ </div>
+ </main>
</body>
</html>
diff --git a/style.css b/style.css new file mode 100644 index 0000000..a02aae1 --- /dev/null +++ b/style.css @@ -0,0 +1,57 @@ +header *{ + display: inline-block; + vertical-align: middle; +} + +.title { + font-size: 36px; + vertical-align: middle; +} + +body { + background-image: url("tile1.jpg"); + background-repeat: repeat; +} + +.fst { + font-size: 150%; +} + +.sec { + margin-left: 20px; + font-size: 150%; +} + +.col { + float: left; + width: 50%; +} + +.col1 { + float: left; + width: 80%; +} + +.col2 { + float: left; + width: 20%; +} + +.row:after { + content: ""; + display: table; + clear: both; +} + +.img { + width: 60%; +} + +.wrapper{ + width: 350px; + padding: 20px; + border-style: double; + margin: auto; + margin-top: 200px; +} + diff --git a/tile1.jpg b/tile1.jpg Binary files differnew file mode 100755 index 0000000..2e993e3 --- /dev/null +++ b/tile1.jpg |