phphell.php 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. date_default_timezone_set("Europe/Kiev");
  3. //правильный логин и пароль
  4. $credentials = array("login" => "admin",
  5. "password" => "qwerty");
  6. session_start();
  7. $nothingInPost = true; //этот флаг указывает, пытается ли пользователь залогиниться (что-то есть в $_POST), или только зашел на страницу.
  8. $passwordInPostRight = false; //этот флаг указывает, правильный ли пароль и логин, если POST не пуст (пользователь пытается залогинится)
  9. $login = ""; //login из $_POST или пустая строка. Используется для заполнения поля ввода, что бы пользователю не приходилось опять вводить имя пользователя
  10. if (isset($_GET['logout']) and $_GET['logout'] == 'true'):
  11. $_SESSION['logged'] = false; //если пользователь нажал Выйти, то в мы сохраняем это в сессию
  12. endif;
  13. if (!isset($_SESSION['logged'])):
  14. $_SESSION['logged'] = $passwordInPostRight; //создаем ключ в сессии, если его нет
  15. endif;
  16. if (isset($_POST['login']) && isset($_POST['password'])): //попытка залогиниться
  17. $nothingInPost = false; //значит пользователь не только зашел
  18. $login = $_POST['login']; //сохраняем логин, он, возможно пригодится для поля ввода login
  19. if (($_POST['login'] == $credentials['login']) && ($_POST['password'] == $credentials['password'])):
  20. $passwordInPostRight = true; //если пароль правильный, то записываем это в $passwordInPostRight
  21. $_SESSION['loginTimes'][] = time(); //и сохраняем время логина в сесси
  22. endif;
  23. $_SESSION['logged'] = $passwordInPostRight; //отмечаем в сессии успешность логина
  24. endif;
  25. ?>
  26. <html>
  27. <head>
  28. <title>
  29. php template hell sample
  30. </title>
  31. </head>
  32. <body>
  33. <?php if (!$_SESSION['logged']): ?> <!-- Если пользователь не залогинен -->
  34. <?php if (!$passwordInPostRight && !$nothingInPost): //и пароль неверный, но он пытался ?>
  35. <div style='color: red;'>
  36. Your password are wrong!!!
  37. </div>
  38. <?php endif; ?>
  39. <form method='post' action="">
  40. Login: <input type='text' name='login' value="<?php echo $login; //сюда мы засовываем login из POST или пустую строку ?>"><br/>
  41. Password: <input type='password' name='password'><br/>
  42. <input type='submit' value='Login' />
  43. </form>
  44. <?php else: // Пользователь залогинен успешно ?>
  45. <?php if ($passwordInPostRight): // причем только что ?>
  46. <div style='color: green;'> Welcome </div>
  47. <?php endif; ?>
  48. История логинов:
  49. <table border='1'>
  50. <?php foreach ($_SESSION['loginTimes'] as $time): ?>
  51. <tr><td> <?php echo date("Y-m-d H:i:s", $time); ?> </td></tr>
  52. <?php endforeach; ?>
  53. </table>
  54. <a href='?logout=true'>Выйти</a>
  55. <?php endif; ?>
  56. <pre><?php print_r(array("nothingInPost" => $nothingInPost, "passwordInPostRight" => $passwordInPostRight, "login" => $login));
  57. print_r($_SESSION);
  58. print_r($_POST);
  59. print_r($_GET);
  60. //отладочный вывод для понимания
  61. ?>
  62. </pre>
  63. </body>
  64. </html>