├── .idea ├── vcs.xml ├── .gitignore ├── modules.xml ├── sbase-study-task01.iml └── php.xml ├── app ├── config.php ├── Validator.php ├── header.php ├── models │ └── User.php └── controllers │ └── UserController.php └── public ├── js └── functions.js ├── index.php ├── login.php └── register.php /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /app/config.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/sbase-study-task01.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/js/functions.js: -------------------------------------------------------------------------------- 1 | function validate (username, password) { 2 | let error = false 3 | if (username.length < 4) { 4 | $("#username").css('border', 'solid red 2px') 5 | alert('Username min length 4') 6 | error = true 7 | } 8 | if (!username.match(/^[a-zA-Z0-9]*$/)) { 9 | $("#username").css('border', 'solid red 2px') 10 | alert('Username only letters or numbers') 11 | error = true 12 | } 13 | if (password.length < 6) { 14 | $("#password").css('border', 'solid red 2px') 15 | alert('Password min length 6') 16 | error = true 17 | } 18 | return !error; 19 | } -------------------------------------------------------------------------------- /app/Validator.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | <?php echo $title ?> 19 | -------------------------------------------------------------------------------- /.idea/php.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | 12 | 13 | 14 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |

Home page

7 | 8 |

Welcome,

9 | 10 | 11 |

Login | Register

12 | 13 | 14 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/models/User.php: -------------------------------------------------------------------------------- 1 | prepare($sql); 11 | $stmt->execute(['username' => $username, 'password' => md5($password)]); 12 | return ['success' => true]; 13 | } catch (PDOException $e){ 14 | return ['success' => false, 'error' => 'Username already exist']; 15 | } 16 | } 17 | static function login ($username, $password) 18 | { 19 | try { 20 | $pdo = db_connect(); 21 | $sql = 'SELECT * FROM Users WHERE username = :username'; 22 | $stmt = $pdo->prepare($sql); 23 | $stmt->execute(['username' => $username]); 24 | $user = $stmt->fetchAll(); 25 | if ($user && $user[0]['password'] == md5($password)) { 26 | return ['success' => true]; 27 | } else { 28 | return ['success' => false, 'error' => 'Invalid username or password']; 29 | } 30 | } catch (PDOException $e){ 31 | return ['success' => false, 'error' => $e]; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /public/login.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |

Login

7 |

home

8 |

register

9 |
10 | 11 | 12 | 13 | 14 | 15 |

16 |
17 | 18 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /public/register.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |

register

7 |

home

8 |

login

9 |
10 | 11 | 12 | 13 | 14 | 15 |

16 |
17 | 18 | 19 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /app/controllers/UserController.php: -------------------------------------------------------------------------------- 1 | false, 'error' => 'Username min length - 4']); 14 | break; 15 | } elseif (!$password) { 16 | echo json_encode(['success' => false, 'error' => 'Password min length - 6']); 17 | break; 18 | } 19 | $request = User::register($username, $password); 20 | if ($request['success']) { 21 | $_SESSION['username'] = $_POST['username']; 22 | echo json_encode(['success' => true]); 23 | } else { 24 | echo json_encode(['success' => false, 'error' => $request['error']]); 25 | } 26 | break; 27 | case 'login': 28 | $username = Validator::validate($_POST['username']); 29 | $password = Validator::validate($_POST['password']); 30 | $request = User::login($username,$password); 31 | if ($request['success']) { 32 | $_SESSION['username'] = $_POST['username']; 33 | echo json_encode(['success' => true]); 34 | } else { 35 | echo json_encode(['success' => false, 'username' => $_POST['username'], 'error' => $request['error']]); 36 | } 37 | break; 38 | case 'logout': 39 | unset($_SESSION['username']); 40 | echo json_encode(['success' => true]); 41 | break; 42 | default: 43 | echo json_encode('NOPE'); 44 | break; 45 | } 46 | } --------------------------------------------------------------------------------