58 lines
No EOL
1.8 KiB
PHP
58 lines
No EOL
1.8 KiB
PHP
<?php
|
|
require("../libs/page.php");
|
|
require("../libs/form.php");
|
|
|
|
function post_handler() {
|
|
global $db;
|
|
|
|
// there is 100% a better way to do this but i need to test
|
|
if (!array_key_exists('pass',$_POST) || !array_key_exists('user',$_POST) || !array_key_exists('pass2',$_POST)) {
|
|
return '';
|
|
}
|
|
|
|
$user = $_POST['user'];
|
|
$pass = $_POST['pass'];
|
|
$pass2 = $_POST['pass2'];
|
|
|
|
preg_match("/[^A-Za-z0-9\-\_]/",$user,$matches);
|
|
|
|
if ($pass != $pass2) {
|
|
return 'Passwords are not the same.';
|
|
}
|
|
|
|
if (isset($matches) && count($matches) > 0) {
|
|
return 'Username contains invalid characters.';
|
|
}
|
|
|
|
if (strlen($user) < 1 || strlen($user) > 32) {
|
|
return 'Username is too long or short.';
|
|
}
|
|
|
|
$stmt = $db->prepare("SELECT username FROM main.auth WHERE UPPER(username) LIKE UPPER(?)");
|
|
$stmt->execute([$user]);
|
|
|
|
$result = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if ($result) return 'Username is taken.';
|
|
|
|
$hashed = password_hash($pass, PASSWORD_DEFAULT);
|
|
|
|
$stmt = $db->prepare("INSERT INTO main.auth (username, password) VALUES (?, ?)");
|
|
$stmt->execute([$user,$hashed]);
|
|
|
|
header("Location: /");
|
|
die();
|
|
}
|
|
|
|
page_header();
|
|
|
|
$form_message = post_handler();
|
|
|
|
form("Join", $form_message, array(
|
|
array('key' => 'Username', 'type' => 'text', 'name' => 'user', 'default' => ''),
|
|
array('key' => 'Password', 'type' => 'password', 'name' => 'pass', 'default' => ''),
|
|
array('key' => 'Password (again)', 'type' => 'password', 'name' => 'pass2', 'default' => '')
|
|
));
|
|
|
|
page_footer();
|
|
?>
|