Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1. class User {
  2. private $username;
  3. private $password;
  4. public $ISLOGGEDIN = 'ISLOGGEDIN';
  5.  
  6. ## Make a class function
  7. public function __construct() {
  8. $this->pdo = new PDO("mysql:host=localhost;dbname=login",'root','');
  9. }
  10.  
  11. ## TJEK OM BRUGER EKSISTERE, return true, hvis ja
  12. private function userExists($username) {
  13. $this->username = $username;
  14. if ($stmt = $this->pdo->prepare("SELECT id FROM users WHERE username = :username")) {
  15. $stmt->bindParam(':username', $this->username);
  16. if ($stmt->execute()) {
  17. if ($stmt->rowCount() > 0) {
  18. return true;
  19. } else {
  20. return false;
  21. }
  22. } else {
  23. return true;
  24. }
  25. } else {
  26. return true;
  27. }
  28. }
  29.  
  30. ## Opret ny bruger
  31. public function create($username, $password) {
  32. $this->username = $username;
  33. $this->password = $password;
  34.  
  35. if (!$this->userExists($this->username)) {
  36. // Connect to database
  37. if ($stmt = $this->pdo->prepare("INSERT INTO users (username, password) VALUES (:username, :password)")) {
  38. $stmt->bindParam(':username', $this->username);
  39. $stmt->bindParam(':password', password_hash($this->password, PASSWORD_BCRYPT, ['cost' => 12]));
  40. if ($stmt->execute()) {
  41. return true;
  42. } else {
  43. return false;
  44. }
  45. } else {
  46. return false;
  47. }
  48. } else {
  49. return false;
  50. }
  51. }
  52.  
  53. ## Get the latest userID
  54. public function getLastUserId() {
  55. $result = $this->pdo->query("SELECT id FROM users ORDER BY id DESC LIMIT 1");
  56. $row = $result->fetch(PDO::FETCH_ASSOC);
  57. return $row['id'];
  58. }
  59.  
  60. ## Verify users
  61. public function verifyUser($username, $password) {
  62. $this->username = $username;
  63. $this->password = $password;
  64.  
  65. if ($stmt = $this->pdo->prepare("SELECT id, password FROM users WHERE username = :username")) {
  66. $stmt->bindParam(':username', $this->username, PDO::PARAM_STR);
  67. if ($stmt->execute()) {
  68. $result = $stmt->fetch(PDO::FETCH_ASSOC);
  69. if (password_verify($this->password, $result['password'])) {
  70. return true;
  71. } else {
  72. return false;
  73. }
  74. } else {
  75. return false;
  76. }
  77. } else {
  78. return false;
  79. }
  80. }
  81.  
  82. ## Get userID from users
  83. public function getUserId($username) {
  84. $this->username = $username;
  85. if ($stmt = $this->pdo->prepare("SELECT id FROM users WHERE username = :username")) {
  86. $stmt->bindParam(':username', $this->username, PDO::PARAM_STR);
  87. if ($stmt->execute()){
  88. $result = $stmt->fetch(PDO::FETCH_ASSOC);
  89. return $result['id'];
  90. } else {
  91. return false;
  92. }
  93. } else {
  94. return false;
  95. }
  96. }
  97.  
  98. ## Login Method Filter Function
  99. public function methodCheck($method) {
  100. $requestMethod = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_SPECIAL_CHARS);
  101. if ($requestMethod === $method) {
  102. return TRUE;
  103. } else {
  104. return FALSE;
  105. }
  106. }
  107.  
  108. ## Login Session
  109. public function doLogin($id) {
  110. if ($this->isSessionStarted() == false) {
  111. session_start();
  112. }
  113. $_SESSION[$this->ISLOGGEDIN] = TRUE;
  114. $_SESSION['userId'] = $id;
  115. }
  116.  
  117. ## Token Generator
  118. private function generateToken() {
  119. if ($this->isSessionStarted() == false) {
  120. session_start();
  121. }
  122. $_SESSION['token'] = sha1(time()*rand(5,1000));
  123. $_SESSION['tokentime'] = time();
  124. }
  125.  
  126. ## Get token
  127. public function getToken() {
  128. if ($this->isSessionStarted() == false) {
  129. session_start();
  130. }
  131. if(isset($_SESSION['token'])) {
  132. return $_SESSION['token'];
  133. } else {
  134. $this->generateToken();
  135. return $_SESSION['token'];
  136. }
  137. }
  138.  
  139. ## Validate Token
  140. public function validateToken($token) {
  141. if ($this->isSessionStarted() == false) {
  142. session_start();
  143. }
  144. if ($token === $_SESSION['token']) {
  145. if ((time() - $_SESSION['tokentime']) > 120) {
  146. return FALSE;
  147. } else {
  148. return TRUE;
  149. }
  150. } else {
  151. return FALSE;
  152. }
  153. }
  154.  
  155. ## Delete the token after use
  156. public function destroyToken(){
  157. if ($this->isSessionStarted() == false) {
  158. session_start();
  159. }
  160. if(isset($_SESSION['token']) && isset($_SESSION['tokentime'])) {
  161. unset($_SESSION['token']);
  162. unset($_SESSION['tokentime']);
  163. }
  164. }
  165.  
  166. ## Is session started
  167. private function isSessionStarted() {
  168. if (php_sapi_name() !== 'cli') {
  169. if (version_compare(phpversion(), '5.4.0', '>=') ) {
  170. return session_status() === PHP_SESSION_ACTIVE ? true : false;
  171. } else {
  172. return session_id() === '' ? false : true;
  173. }
  174. }
  175. return true;
  176. }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement