Tell me, please, how do I check it is authorized and is it registered at all on the site? If yes, then we transfer to another page. I also need the rest of the blocks that are on the site to be checked. Here is the code I write in the index:

<? include('connectdb.php'); // подключение к серверу MySql и выбор БД $userinfo = ''; $state = '0'; if ((isset($_COOKIE['login'])) & (isset($_COOKIE['pass']))) { // если в куках лежит логин и зашифрованый пароля if (!isset($_GET['exit'])) { // если кнопка выход не была нажата $login = $_COOKIE['login']; $pass = $_COOKIE['pass']; // проверяем наличие пользователя в БД и достаём оттуда пароль $sql = "SELECT id, pass FROM users WHERE login='$login'"; $res = mysql_query($sql); if (mysql_num_rows($res) > 0) { // если пользователь есть в БД $userinfo = mysql_fetch_array($res); // в этой переменной лежит пароль из БД if (strcmp($pass, md5($userinfo['pass'])) == 0) { //проверяем схожесть пароля из БД с паролем из куков // достаём все данные из БД $sql = "SELECT * FROM users WHERE login='$login'"; $res = mysql_query($sql); $userinfo = mysql_fetch_array($res); // в этой переменной будет лежать вся информация о пользователе из БД $time = time(); // устанавливаем куки для запоминания статуса пользователя setcookie("login", $login, $time + 1800); setcookie("pass", $pass, $time + 1800); $state = 1; // статус, если 1, тогда пользователь авторизован } } } else { //обнуляем куки, если была нажата кнопка выход setcookie("login"); setcookie("pass"); } } if ($state != 1) { // если после проверки куков, оказалось, что пользователь не авторизован, то идем дальше if ((isset($_POST['login'])) & (isset($_POST['pass']))) { // если пользователь ввёл логин и пароль $login = $_POST['login']; // проверяем наличие пользователя в БД и достаём оттуда пароль $sql = "SELECT id, pass FROM users WHERE login='$login'"; $res = mysql_query($sql); if (mysql_num_rows($res) > 0) { // если пользователь есть в БД $userinfo = mysql_fetch_array($res); // в этой переменной лежит пароль из БД и номер пользователя $pass = $_POST['pass']; if (strcmp($pass, $userinfo['pass']) == 0) { // достаём все данные из БД $sql = "SELECT * FROM users WHERE login='$login'"; $res = mysql_query($sql); $userinfo = mysql_fetch_array($res); // в этой переменной будет лежать вся информация о пользователе из БД $time = time(); // устанавливаем куки для запоминания статуса пользователя, пароль шифруем setcookie("login", $login, $time + 1800); setcookie("pass", md5($pass), $time + 1800); $state = 1; // статус, если 1, тогда пользователь авторизован } } } } if ($state != 1) { include_once("/blocks/autoriz.php"); } else { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body> <table width="912" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <th colspan="2" scope="col"><?php include("blocks/header.php"); ?></th> </tr> <tr> <td width="155"><?php include("blocks/sidebar.php"); ?></td> <td width="800">{</td> </tr> <tr> <td colspan="2"><?php include("blocks/footer.php"); ?></td> </tr> </table> </body> </html> <?php } ?> 
  • @ Sasha Osipov, a small request: clean your code, you have a footer here, which has nothing to do with the question! - Alexey Lobanov
  • Bad idea to store, password in cookies, very bad. A naked md5 already not scare anyone. Read about the session, and generally look through php.net and other resources. [ php.net/manual/ru/features.sessions.php] [1]: php.net/manual/ru/features.sessions.php Do not use native mysql_ *, there are good extensions: PDO, MySQLi etc. - Arseniy

1 answer 1

Algorithm like this:

  1. When automating / registering a user, you save the login and authorization tag and a random number that is stored both in the database and in cookies.
  2. Create a file, for example, firewall.php
  3. In this file, you implement a check in the database: is there a user with such a login in the database. You check a random number for conformity (kaneshn sooo primitive, but for example). If the data does not converge, then on the login page.
  4. Also there you implement the function of checking rights.
  5. In the main script:

     include('firewall.php'); // Автоматом проверяет авторизацию пользователя, если //нет - то на стр. авторизации. // Далее код выполняется, только если пользователь авторизован, и в $role хранится //id //роли пользователя. if( check_access( 'this_page', $role ){ // this-page - id страницы, check_access //проверяет возможность доступа юзера с правами $role для данной страницы. 

This is an option for role-based access control. A more complex option is the ACL, which allows you to check a specific user's access to a particular object.