fork(1) download
  1. <?php
  2. $_POST['regName'] = "xxxDEMONxxx";
  3. $_POST['regPassword'] = "qwer123"; //ну тип это как бы юзер ввел в форму и все это прилетело в скрипт
  4. $config['salt'] = "mamu_ebal_:^)"; //у тебя где то в коде есть файлик с конфигом, и подобные вещи в нем
  5. //но я его тут всуну для наглядности, что бы все работало типа.
  6.  
  7.  
  8. //тут тип та часть начинается, коорая выполняется после кнопки 'зарехестрироваться'
  9.  
  10. if (isset($_POST)){
  11.  
  12. $registrationName = $_POST['regName'];
  13. //тут ты тип делаешь запрос в базу, проверяя что такое имя не занято
  14. //...
  15. //будь добр сам допиши sql-код который тебе будет высылать в ответ на имя пользователя всю инфу о нем в базе, ну или пустой ответ если юзера в базе нету
  16. //...
  17. if (empty($sqlAnswer)) {
  18. $error = 0; //ну тип не занято
  19. } else {
  20. $error = "Имя пользователья уже занято";
  21. }
  22.  
  23. if (!$error) {
  24. $registrationPassword = $_POST['regPassword']; //ну взяли из формы пароль
  25. $saltyRegistrationPassword = $registrationPassword . $config['salt']; //посолили
  26. $passHash = md5($saltyRegistrationPassword); //захешировали
  27.  
  28. //ну и тут отправляешь в базу свежеиспеченного юзверя
  29. //тут опять код с запросами к базе, я его пропущу, прост у тебя там лежит такое в итоге что-то:
  30. //...
  31.  
  32. $db_user = ["id" => 1, "name" => $registrationName, "pass" => $passHash];
  33. //...
  34.  
  35. } else {
  36. //выведешь ему опять форму регистрации, но теперь выведешь под ней еще красненьким цветом ошибку
  37. }
  38.  
  39. }
  40.  
  41. var_dump($db_user); //он на самом деле в базе, а не у нас в скрипте, ну надеюсь понятно.
  42.  
  43.  
  44. //а тут попер код который запускается когда юзер пытается залогиниться.
  45.  
  46. $_POST['loginName'] = "xxxDEMONxxx"; //юзер ввел поле имени
  47. $_POST['loginPassword'] = "qwer123"; //... и пароля
  48.  
  49. if (isset($_POST)){
  50. $loginName = $_POST['loginName'];
  51.  
  52. //тут делаем запрос в базу, тип есть ли вообще такой пользователь там, и если есть то его данные соберем.
  53. //ну тип база вернула нам юзера какого-нибудь, пусть это будет уже тот что у нас есть
  54. $sqlLoginAnswer = $db_user;
  55.  
  56. if (!empty($sqlLoginAnswer)) { //если в базе есть такой юзер, то ща проверим, он ли это на самом деле
  57.  
  58. $loginPassword = $_POST['loginPassword']; //взяли из формы пароль
  59. $saltyLoginPassword = $loginPassword . $config['salt']; //посолили пароль под которым юзер пытается залогиниться
  60. $loginPassHash = md5($saltyLoginPassword); //ну и тоже захешировали его
  61.  
  62. if ($sqlLoginAnswer['pass'] == $loginPassHash) { //ну и надо сверить, что зашифрованный пароль в базе теперь равен зашифрованному по такому же алгоритму паролю под которым чел пытается залогиниться
  63. //если пароли совпали, то логиним юзера тип, всё хорошо
  64. $loginedUserId = $sqlLoginAnswer['id']; //запомнили то юзер успешно залогинился
  65. //ну например в сессию
  66. //session_start();
  67.  
  68. $_SESSION['loginedUserId'] = $sqlLoginAnswer['id'];
  69. $_SESSION['loginedUserName'] = $sqlLoginAnswer['name'];
  70. } else {
  71. $error = "пароль неверен";
  72. }
  73.  
  74. } else {
  75. $error = "нет юзера с таким именем";
  76. }
  77.  
  78. }
  79.  
  80. //ну и в начале твоих страниц идет проверка, что действительно на них щемится только авторизованный юзер
  81.  
  82. if ($_SESSION['loginedUserId']) {
  83. echo "hello, " . $_SESSION['loginedUserName'] . "!";
  84. } else {
  85. //редирект на страницу логина если нет сессии :3
  86. }
  87.  
  88.  
  89.  
Success #stdin #stdout 0.03s 52480KB
stdin
Standard input is empty
stdout
array(3) {
  ["id"]=>
  int(1)
  ["name"]=>
  string(11) "xxxDEMONxxx"
  ["pass"]=>
  string(32) "6ab6909c080745fe0e46119ee98cd8b5"
}
hello, xxxDEMONxxx!