Changes between Version 7 and Version 8 of ImportantCase0
- Timestamp:
- 02/24/25 15:53:35 (6 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ImportantCase0
v7 v8 29 29 } 30 30 31 // Sanitize and validate inputs 31 32 $input_name = trim(htmlspecialchars($_POST['username'])); 32 33 $input_email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); … … 55 56 require 'connect.php'; 56 57 58 $conn->beginTransaction(); 59 57 60 // Check for existing username 58 $stmt = $conn->prepare("SELECT COUNT(*) FROM Users WHERE username = :username"); 59 $stmt->bindParam(':username', $input_name, PDO::PARAM_STR); 60 $stmt->execute(); 61 62 if ($stmt->fetchColumn() > 0) { 63 header("Location: /Sign&Log.php?error=USERNAME_TAKEN&email=" . urlencode($_POST['email'])); 64 exit(); 65 } 66 67 // Check for existing email 68 $stmt = $conn->prepare("SELECT COUNT(*) FROM Users WHERE email = :email"); 69 $stmt->bindParam(':email', $input_email, PDO::PARAM_STR); 70 $stmt->execute(); 71 72 if ($stmt->fetchColumn() > 0) { 73 header("Location: /Sign&Log.php?error=EMAIL_TAKEN&username=" . urlencode($input_name)); 74 exit(); 75 } 76 61 $stmt = $conn->prepare("CALL register_user(:username, :email, :password, :role)"); 77 62 // Hash password 78 63 $hashed_password = password_hash($input_password, PASSWORD_ARGON2ID, [ … … 81 66 'threads' => 3 82 67 ]); 83 84 // Insert new user85 $stmt = $conn->prepare('86 INSERT INTO Users (username, email, password, role)87 VALUES (:username, :email, :password, :role)88 ');89 68 90 69 $stmt->bindParam(':username', $input_name, PDO::PARAM_STR); … … 95 74 $stmt->execute(); 96 75 76 // Commit the transaction 77 $conn->commit(); 78 79 // Set session variables for automatic login 97 80 session_regenerate_id(true); 98 81 $_SESSION['username'] = $input_name; … … 107 90 108 91 } catch (PDOException $e) { 92 // Roll back the transaction if something failed 93 $conn->rollBack(); 109 94 error_log("Registration error: " . $e->getMessage()); 110 95 header("Location: /Sign&Log.php?error=SERVER_ERROR"); 111 96 exit(); 112 97 } 98 99 100 ?> 113 101 }}} 114 102 115 103 104 * '''''Се користи POST метод за испраќање на податоците од формата. Кодот врши основна валидација на внесените податоци (email, корисничко име, лозинка) и проверува дали се соодветни (на пр., дали лозинката е доволно силна, дали email-от е валиден). Ако сите податоци се точни, кодот ги чисти и валидира внесените вредности, а потоа ги зачувува во базата на податоци преку SQL процедура (CALL register_user). Лозинката се хашира со PASSWORD_ARGON2ID за подобар ентитет. Ако регистрацијата е успешна, корисникот се логира автоматски и се пренасочува кон почетната страница (HomePage.php). Ако има грешка, корисникот се враќа на страницата за регистрација со соодветна порака за грешка. Се користат сесии за следење на активност и зачувување на корисничките податоци.''''' 116 105 === Чекор 2 === 117 106 По успешна регистрација корисникот се најавува со своето корисничко име и лозинка за да да пристапи до платформата.