-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreset_password.php
More file actions
60 lines (50 loc) · 1.91 KB
/
Copy pathreset_password.php
File metadata and controls
60 lines (50 loc) · 1.91 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
<?php
session_start();
require 'db.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$token = trim($_POST['token'] ?? '');
$password = trim($_POST['password'] ?? '');
$confirm = trim($_POST['confirm_password'] ?? '');
if (empty($token) || empty($password) || empty($confirm)) {
http_response_code(400);
echo json_encode(['success' => false, 'message' => 'All fields required']);
exit();
}
if ($password !== $confirm) {
http_response_code(400);
echo json_encode(['success' => false, 'message' => 'Passwords do not match']);
exit();
}
if (strlen($password) < 6) {
http_response_code(400);
echo json_encode(['success' => false, 'message' => 'Password must be at least 6 characters']);
exit();
}
// Find valid token
$stmt = $conn->prepare("SELECT email FROM password_resets WHERE token = ? AND expires > NOW() ORDER BY created_at DESC LIMIT 1");
$stmt->bind_param("s", $token);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows === 0) {
http_response_code(400);
echo json_encode(['success' => false, 'message' => 'Invalid or expired reset token']);
exit();
}
$row = $result->fetch_assoc();
$email = $row['email'];
// Update user password
$hashed = password_hash($password, PASSWORD_DEFAULT);
$update = $conn->prepare("UPDATE users SET password = ? WHERE email = ?");
$update->bind_param("ss", $hashed, $email);
if ($update->execute()) {
// Delete used token
$del = $conn->prepare("DELETE FROM password_resets WHERE email = ?");
$del->bind_param("s", $email);
$del->execute();
echo json_encode(['success' => true, 'message' => 'Password reset successful']);
} else {
http_response_code(500);
echo json_encode(['success' => false, 'message' => 'Failed to reset password']);
}
}
?>