Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $stmt = $link->prepare('SELECT username,email FROM users WHERE username=? or email=? LIMIT 1'); #
- $stmt->bindValue(1, $usr, PDO::PARAM_STR);
- $stmt->bindValue(2, $email, PDO::PARAM_STR);
- $stmt->execute();
- if( (!$result = $stmt->fetch(PDO::FETCH_ASSOC)) > 0) { # [email,username] are not taken
- # OK
- $stmt = $link->prepare('INSERT INTO users (username,email,password) VALUES (?,?,?)'); #
- $stmt->bindValue(1, $usr, PDO::PARAM_STR);
- $stmt->bindValue(2, $email, PDO::PARAM_STR);
- $stmt->bindValue(3, $pass, PDO::PARAM_STR);
- if ($stmt->execute()) { # success
- $form->success_message("Добре дошъл в системата: <b>".$usr."</b>");
- session_regenerate_id();
- } else {
- $form->add_to_errors('Проблем със заявката за регистрация, моля опитайте по-късно или се свържете с администратор.');
- } # failed
- $link = null; # close pdo when inserted
- } else { $form->add_to_errors('Името или Имейла вече е зает, моля опитайте с друг.'); } # [username,email] taken
- $link = null; # close pdo connection
- }
- ## LOGIN
- # [*] = id, name, email, password, created_at, theme, last_login_datetime - change to 1
- # limit 1 if foind dont check other rows
- #$stmt = $link->prepare('SELECT username,password FROM users WHERE username=? LIMIT 1');
- $stmt = $link->prepare('SELECT COUNT(*) AS num FROM users WHERE username=? LIMIT 1');
- $stmt->bindValue(1, $usr, PDO::PARAM_STR);
- $stmt->execute();
- if($result = $stmt->fetch(PDO::FETCH_ASSOC)) { # user found
- if (password_verify($pass, $result['password'])) { # pass is ok [ARGON2ID crypted]
- $stmt = $link->prepare('UPDATE users SET last_login = NOW() WHERE username=? LIMIT 1');
- $stmt->bindValue(1, $usr, PDO::PARAM_STR);
- $stmt->execute();
- # ==============================
- session_regenerate_id(); # https:#www.php.net/manual/en/function.session-regenerate-id.php
- $_SESSION["loggedin"] = true; # Store data in session variables
- $_SESSION["id"] = $result['id'];
- $_SESSION["username"] = $usr;
- $_SESSION["theme"] = $result['theme'];
- #$form->printr($_SESSION); # for debug
- header("location: profile.php");
- $link = null; # close pdo after login
- # ==============================
- } else { $form->error_message("Паролата не е вярна."); }
- } else { $form->error_message("Няма такъв акаунт в системата."); }
- $link = null; # close pdo after failure
Advertisement
Add Comment
Please, Sign In to add comment