-
Notifications
You must be signed in to change notification settings - Fork 34
/
signup.php
60 lines (43 loc) · 2.01 KB
/
signup.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
//spustíme session
session_start();
//připojení k databázi
require 'db.php';
if (!empty($_POST)) {
$email = @$_POST['email'];
$password = @$_POST['password'];
//TODO tady chybí ověření vyplnění dosud neregistrovaného e-mailu a hesla - zvládli byste to doplnit?
$passwordHash = password_hash($password, PASSWORD_DEFAULT); //pokud nemáte důvod to měnit, nechte heslo zahashovat výchozí funkcí; další možnosti viz manuál
//uložíme uživatele do DB
$stmt = $db->prepare("INSERT INTO users(email, password) VALUES (?, ?)");
$stmt->execute([$email, $passwordHash]);
//teď je uživatel uložen v DB - potřebujeme jeho id
//buď můžeme vzit id posledního záznamu přes last insert id, ale co když se to potká s více requesty? = ne zcela bezpečné
//lepší je načíst uživatele podle e-mailu = OK :)
$stmt = $db->prepare("SELECT id FROM users WHERE email = ? LIMIT 1"); //limit 1 jen tu jen jako výkonnostní optimalizace
$stmt->execute([$email]);
//uživatele rovnou přihlásíme
$_SESSION['user_id'] = (int)$stmt->fetchColumn();
//přesměrujeme uživatele na homepage
header('Location: index.php');
}
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>PHP Shopping App</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h1>PHP Shopping App</h1>
<h2>New Signup</h2>
<form method="post">
<label for="email">Your Email</label><br/>
<input type="text" name="email" id="email" required value="<?php echo htmlspecialchars(@$_POST['email']);?>"><br/><br/>
<label for="password">New Password</label><br/><!--POZOR: heslo nikdy nepředvyplňujeme!-->
<input type="password" name="password" id="password" required value=""><br/><br/>
<!--TODO tady by bylo vhodné další pole pro potvrzení správnosti hesla -->
<input type="submit" value="Create Account"> or <a href="index.php">Cancel</a>
</form>
</body>
</html>