За последние 24 часа нас посетили 51580 программистов и 1756 роботов. Сейчас ищут 779 программистов ...

$_SESSION...

Тема в разделе "PHP для новичков", создана пользователем Terminator004, 8 янв 2018.

  1. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    есть такое бд:
    upload_2018-1-7_14-38-45.png

    И я делаю проверку, если у пользователя статус "4", он на сайт зайти не может. Вот такой код:
    PHP:
    1. $result2 = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1' AND status='4'",$db);
    2. $status = mysql_fetch_assoc($result2);
    3. // тут ещё одна проверка, поэтому тут else if
    4. else if($status['id']) {
    5.         exit("Извините, но вы заблокирован перманентно на нашем сайте.");
    6. }
    Этот код работает, но я после этой проверки, делаю ещё одну проверку, что если пользователь авторизован и он получил статус "4" когда уже авторизован, так его должно де-авторизовать. Но я тут не очень знаю как сделай такую проверку, написал только де-авторизование, но проверку есть ли на сайте авторизованный пользователей со статусом "4" не сделал, вот что получилось дальше:
    PHP:
    1. else if(($_SESSION['login']) or ($_SESSION['password']) AND/* тут я думаю он должен как-то статус узнать у сессии, но не знаю как */ ){
    2. // ну и тут уже уничтожаем переменные в сессиях
    3.     unset($_SESSION['password']);
    4. unset($_SESSION['login']);
    5. unset($_SESSION['id']);
    6.  
    7. setcookie("auto", "", time()+9999999);
    8. exit("<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>");
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Сделай сначала проверку на статус, если 4, то не делать вход, а дальше остальное
     
  3. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Так я же сделал уже, самый первый код.
    PHP:
    1. $result2 = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1' AND status='4'",$db);
    2. $status = mysql_fetch_assoc($result2);
    3. // тут ещё одна проверка, поэтому тут else if
    4. else if($status['id']) {
    5.         exit("Извините, но вы заблокирован перманентно на нашем сайте.");
    6. }
    Тут и сказано, что если в полях авторизации введенный логин равен $login каторый в базе данных и если введенный пороль равен $password который в дб и активация у пользователя "1" и статус "4" так вместо входа, останавливаем сценарий и выводим "Извините, но вы заблокирован перманентно на нашем сайте."


    И теперь я дулаю после этого скрипта ещё один скрипт, где уже проверяет пользователя который авторизовался. И если у него статус "4" когда он уже авторизован, так его должно де-авторизовать, вот мне и надо узнать как это проверить
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    @Terminator004 зачем его авторизировать, со статусом 4?
     
  5. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Не авторизовать, я же не авторизую, а вывожу ошибку, просто если вдруг статус поменятся на 4 когда он будет авторизован, тогда надо его де-авторизовать
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    ну тогда, при каком нибудь действии пользователя, можно сделать этот запрос
     
  7. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    ну... Может дейстивии и не объязательно, просто нужно проверку сделать, если он авторизован и имеет статус 4, тка просто он автоматически де-авторизируется. Просто вот тут нужно правильно начало сдеать
    PHP:
    1. else if(($_SESSION['login']) or ($_SESSION['password']) AND  ){
    Вот, тут уже написано, что если сессия авторизирована и... И вот посля "AND" нужно как-то сделать проверку. Словами должно так быть: если пользователь авторизирован ( уже написал это) и статус у того пользователя 4, так он де-авторизируется.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.332
    Адрес:
    Лень
    Наверно ты еще не знаешь что такое Notice

    Надо попросить разработчиков, чтобы в пхп 8.0 за Notice взрывались компы, выгорала проводка, а из дисплея вылезал чужой и заживо хомячил программиста
     
  9. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    ем... ну ясно, крч ни кто не знает как всегда..
     
  10. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    тебе сложно сделать архив и скинуть его? Что бы я его распаковал, создал твою базу, одним запросом и запустил весь твой сайт и нашёл причину.
     
  11. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    тут не причину, просто нужно дописать 1 строку. Что так трудно сделать проверку, которая будет проверять есть ли на сайте авторизорован пользователь, у которого статус в бд "4"?
    --- Добавлено ---
    и если такой пользователь есть, так эго просто нужно де-автаризировать.
    PHP:
    1. unset($_SESSION['password']);
    2. unset($_SESSION['login']);
    3. unset($_SESSION['id']);
    4.  
    5. setcookie("auto", "", time()+9999999);
    6. exit("<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>");
    --- Добавлено ---
    ну вот что-то вроде этого, но опять же, не так кажется.
    PHP:
    1. else if(($_SESSION['login']) or ($_SESSION['password']) ){
    2.    if ($_SESSION['status'] == 4) {
    3.        // тут деавторизацию
    4.     }
    5. }
     
  12. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    @Terminator004 почему ты проверяешь или логин или пароль? Этого я понять не могу
     
  13. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Это значит: Если пользователь авторизован.
    --- Добавлено ---
    Но главный вопрос как проверить того пользователя статус, как в бд показано, что у каждого пользователя в поле статус есть своё значение
     
  14. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    @Terminator004 это бредовая проверка, надо проверять логин и пароль и желательно, что бы такие же данные были в базе, ну можно ещё и токен.
     
  15. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Но главный вопрос как проверить т
    Ну так не знает как проверить простой скрипт, так и всё
     
  16. karmay

    karmay Активный пользователь

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Получается что у тебя, при каждом перемещении пользователя надо ходить в БД и проверять его статус. Ты кикнул пользователя, он страничку обновляет - вылетел. Мне думается, что надо с куками мутить