-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauth.php
More file actions
128 lines (116 loc) · 4.47 KB
/
Copy pathauth.php
File metadata and controls
128 lines (116 loc) · 4.47 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
// Only start session here (not in db.php)
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
include 'db.php';
$message = '';
// Handle logout
if (isset($_GET['logout'])) {
session_destroy();
header("Location: auth.php");
exit;
}
// Handle registration
if (isset($_POST['register'])) {
$name = $conn->real_escape_string($_POST['name']);
$email = $conn->real_escape_string($_POST['email']);
$university = $conn->real_escape_string($_POST['university']);
$course = $conn->real_escape_string($_POST['course']);
$year = (int)$_POST['year'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$token = bin2hex(random_bytes(50));
// Check if email ends with .ac.zw
if (strlen($email) < 6 || substr($email, -6) !== '.ac.zw') {
$message = "❌ Use a valid <strong>.ac.zw</strong> university email.";
} else {
$check = $conn->query("SELECT * FROM users WHERE email = '$email'");
if ($check->num_rows > 0) {
$message = "⚠️ Email already registered.";
} else {
$sql = "INSERT INTO users (name, email, password, university, course, year, token, verified)
VALUES ('$name', '$email', '$password', '$university', '$course', $year, '$token', 0)";
if ($conn->query($sql)) {
$message = "✅ Registered! Verify: <a href='verify.php?token=$token'>Click to Verify</a>";
} else {
$message = "❌ DB Error: " . $conn->error;
}
}
}
}
// Handle login
if (isset($_POST['login'])) {
$email = $conn->real_escape_string($_POST['email']);
$password = $_POST['password'];
$res = $conn->query("SELECT * FROM users WHERE email = '$email'");
if ($res->num_rows == 1) {
$user = $res->fetch_assoc();
if (password_verify($password, $user['password'])) {
if ($user['verified']) {
$_SESSION['user_id'] = $user['id'];
header("Location: index.php");
exit;
} else {
$message = "📧 Verify your email first.";
}
} else {
$message = "❌ Invalid password.";
}
} else {
$message = "❌ Email not found.";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Login / Register</title>
<link rel="stylesheet" href="style.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<div class="container">
<header>
<h1>Campus Loop</h1>
<p>🎓 Zimbabwean University Students Only (.ac.zw)</p>
</header>
<nav>
<a href="index.php">← Home</a>
</nav>
<?php if ($message): ?>
<div class="alert"><?= $message ?></div>
<?php endif; ?>
<div style="display:flex; gap:30px; flex-wrap:wrap;">
<!-- Register -->
<div class="card" style="flex:1; min-width:300px;">
<h2>🔐 Register</h2>
<form method="POST">
<input type="text" name="name" placeholder="Full Name" required />
<input type="email" name="email" placeholder="Email (@xxx.ac.zw)" required />
<input type="text" name="university" placeholder="University" required />
<input type="text" name="course" placeholder="Course" required />
<select name="year" required>
<option value="">Year</option>
<option value="1">Year 1</option>
<option value="2">Year 2</option>
<option value="3">Year 3</option>
<option value="4">Year 4</option>
</select>
<input type="password" name="password" placeholder="Password" required />
<input type="submit" name="register" value="Register" />
</form>
</div>
<!-- Login -->
<div class="card" style="flex:1; min-width:300px;">
<h2>🔑 Login</h2>
<form method="POST">
<input type="email" name="email" placeholder="Your Email" required />
<input type="password" name="password" placeholder="Password" required />
<input type="submit" name="login" value="Login" />
</form>
</div>
</div>
</div>
</body>
</html>