aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--README.md4
-rwxr-xr-xarfnet_logo.pngbin0 -> 78409 bytes
-rw-r--r--dbinit.sql10
-rw-r--r--index.php36
-rwxr-xr-xlogin.php58
-rw-r--r--rack.jpgbin0 -> 1914172 bytes
-rwxr-xr-xregister.php106
-rw-r--r--style.css57
-rwxr-xr-xtile1.jpgbin0 -> 1500 bytes
10 files changed, 196 insertions, 76 deletions
diff --git a/.gitignore b/.gitignore
index 4f4773f..c9f1731 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
config.php
+phpMyAdmin/
diff --git a/README.md b/README.md
index 788add9..b7441af 100644
--- a/README.md
+++ b/README.md
@@ -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
new file mode 100755
index 0000000..82adbef
--- /dev/null
+++ b/arfnet_logo.png
Binary files differ
diff --git a/dbinit.sql b/dbinit.sql
index 271eb2b..95cdf2f 100644
--- a/dbinit.sql
+++ b/dbinit.sql
@@ -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
diff --git a/login.php b/login.php
index c26b2e7..214eb2e 100755
--- a/login.php
+++ b/login.php
@@ -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
new file mode 100644
index 0000000..13155e2
--- /dev/null
+++ b/rack.jpg
Binary files differ
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
new file mode 100755
index 0000000..2e993e3
--- /dev/null
+++ b/tile1.jpg
Binary files differ