12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- date_default_timezone_set("Europe/Kiev");
- //правильный логин и пароль
- $credentials = array("login" => "admin",
- "password" => "qwerty");
- session_start();
- $nothingInPost = true; //этот флаг указывает, пытается ли пользователь залогиниться (что-то есть в $_POST), или только зашел на страницу.
- $passwordInPostRight = false; //этот флаг указывает, правильный ли пароль и логин, если POST не пуст (пользователь пытается залогинится)
- $login = ""; //login из $_POST или пустая строка. Используется для заполнения поля ввода, что бы пользователю не приходилось опять вводить имя пользователя
- if (isset($_GET['logout']) and $_GET['logout'] == 'true'):
- $_SESSION['logged'] = false; //если пользователь нажал Выйти, то в мы сохраняем это в сессию
- endif;
- if (!isset($_SESSION['logged'])):
- $_SESSION['logged'] = $passwordInPostRight; //создаем ключ в сессии, если его нет
- endif;
- if (isset($_POST['login']) && isset($_POST['password'])): //попытка залогиниться
- $nothingInPost = false; //значит пользователь не только зашел
- $login = $_POST['login']; //сохраняем логин, он, возможно пригодится для поля ввода login
- if (($_POST['login'] == $credentials['login']) && ($_POST['password'] == $credentials['password'])):
- $passwordInPostRight = true; //если пароль правильный, то записываем это в $passwordInPostRight
- $_SESSION['loginTimes'][] = time(); //и сохраняем время логина в сесси
- endif;
- $_SESSION['logged'] = $passwordInPostRight; //отмечаем в сессии успешность логина
- endif;
- ?>
- <html>
- <head>
- <title>
- php template hell sample
- </title>
- </head>
- <body>
- <?php if (!$_SESSION['logged']): ?> <!-- Если пользователь не залогинен -->
- <?php if (!$passwordInPostRight && !$nothingInPost): //и пароль неверный, но он пытался ?>
- <div style='color: red;'>
- Your password are wrong!!!
- </div>
- <?php endif; ?>
- <form method='post' action="">
- Login: <input type='text' name='login' value="<?php echo $login; //сюда мы засовываем login из POST или пустую строку ?>"><br/>
- Password: <input type='password' name='password'><br/>
- <input type='submit' value='Login' />
- </form>
- <?php else: // Пользователь залогинен успешно ?>
- <?php if ($passwordInPostRight): // причем только что ?>
- <div style='color: green;'> Welcome </div>
- <?php endif; ?>
- История логинов:
- <table border='1'>
- <?php foreach ($_SESSION['loginTimes'] as $time): ?>
- <tr><td> <?php echo date("Y-m-d H:i:s", $time); ?> </td></tr>
- <?php endforeach; ?>
- </table>
- <a href='?logout=true'>Выйти</a>
- <?php endif; ?>
- <pre><?php print_r(array("nothingInPost" => $nothingInPost, "passwordInPostRight" => $passwordInPostRight, "login" => $login));
- print_r($_SESSION);
- print_r($_POST);
- print_r($_GET);
- //отладочный вывод для понимания
- ?>
- </pre>
- </body>
- </html>
-
|