Guest User

Untitled

a guest
Apr 2nd, 2021
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. $stmt = $link->prepare('SELECT username,email FROM users WHERE username=? or email=? LIMIT 1'); #
  2. $stmt->bindValue(1, $usr, PDO::PARAM_STR);
  3. $stmt->bindValue(2, $email, PDO::PARAM_STR);
  4. $stmt->execute();
  5. if( (!$result = $stmt->fetch(PDO::FETCH_ASSOC)) > 0) { # [email,username] are not taken
  6. # OK
  7. $stmt = $link->prepare('INSERT INTO users (username,email,password) VALUES (?,?,?)'); #
  8. $stmt->bindValue(1, $usr, PDO::PARAM_STR);
  9. $stmt->bindValue(2, $email, PDO::PARAM_STR);
  10. $stmt->bindValue(3, $pass, PDO::PARAM_STR);
  11. if ($stmt->execute()) { # success
  12. $form->success_message("Добре дошъл в системата: <b>".$usr."</b>");
  13. session_regenerate_id();
  14. } else {
  15. $form->add_to_errors('Проблем със заявката за регистрация, моля опитайте по-късно или се свържете с администратор.');
  16. } # failed
  17. $link = null; # close pdo when inserted
  18. } else { $form->add_to_errors('Името или Имейла вече е зает, моля опитайте с друг.'); } # [username,email] taken
  19. $link = null; # close pdo connection
  20. }
  21.  
  22. ## LOGIN
  23. # [*] = id, name, email, password, created_at, theme, last_login_datetime - change to 1
  24. # limit 1 if foind dont check other rows
  25. #$stmt = $link->prepare('SELECT username,password FROM users WHERE username=? LIMIT 1');
  26. $stmt = $link->prepare('SELECT COUNT(*) AS num FROM users WHERE username=? LIMIT 1');
  27. $stmt->bindValue(1, $usr, PDO::PARAM_STR);
  28. $stmt->execute();
  29. if($result = $stmt->fetch(PDO::FETCH_ASSOC)) { # user found
  30. if (password_verify($pass, $result['password'])) { # pass is ok [ARGON2ID crypted]
  31. $stmt = $link->prepare('UPDATE users SET last_login = NOW() WHERE username=? LIMIT 1');
  32. $stmt->bindValue(1, $usr, PDO::PARAM_STR);
  33. $stmt->execute();
  34. # ==============================
  35. session_regenerate_id(); # https:#www.php.net/manual/en/function.session-regenerate-id.php
  36. $_SESSION["loggedin"] = true; # Store data in session variables
  37. $_SESSION["id"] = $result['id'];
  38. $_SESSION["username"] = $usr;
  39. $_SESSION["theme"] = $result['theme'];
  40. #$form->printr($_SESSION); # for debug
  41. header("location: profile.php");
  42. $link = null; # close pdo after login
  43. # ==============================
  44. } else { $form->error_message("Паролата не е вярна."); }
  45. } else { $form->error_message("Няма такъв акаунт в системата."); }
  46. $link = null; # close pdo after failure
Advertisement
Add Comment
Please, Sign In to add comment