Как отобразить сообщение только при входе на веб-страницу в PHP? - PullRequest
1 голос
/ 02 февраля 2011

У меня есть веб-сайт на PHP, и я хочу, чтобы, когда пользователь входит в свой профиль, он видел на панели инструментов сообщение «Добро пожаловать» «». Теперь здесь есть изюминка в том, что я хочу, чтобы это сообщение отображалось только тогда, когда пользователь только что вошел в систему, а не каждый раз с продолжением сеанса.

Что можно сделать в этом случае? пожалуйста, помогите ...

Спасибо

Ответы [ 5 ]

4 голосов
/ 02 февраля 2011

Сохранить переменную в сеансе.У вас на странице панели мониторинга есть условие, которое выглядит примерно так:

<?php 
if( isset($_SESSION['welcome_message']) )
{
    echo $_SESSION['welcome_message']; 
    unset($_SESSION['welcome_message']);
}
?>

Так что оно не будет отображаться при последующих посещениях страницы.

Это часто называют «флэш-сообщением».

3 голосов
/ 02 февраля 2011

Вы можете использовать флаг в массиве $_SESSION.

    <?php
    if (!isset($_SESSION['display_greeting'])){
        echo "Hello " . $name;
        $_SESSION['display_greeting']=1;
    }
    ?>
2 голосов
/ 02 февраля 2011

Это общая черта фреймворков. Идея заключается в том, что вы сохраняете сообщение в сеансе, а затем, после его отображения, удаляете его. Базовый пример мне:

session_start()
$_SESSION['message'] = "thanks for logging in";
header('Location: index.php');

тогда в вашем индексе.

if ($_SESSION['message'])
{
    echo $_SESSION['message'];
    unset($_SESSION['message'];
}

Они известны как флэш-сообщения, и реализации уже существуют. Проверить: https://github.com/jimmiw/php-flash-message

2 голосов
/ 02 февраля 2011

Я предполагаю, что вы хотите, чтобы это сообщение отображалось только один раз, например при первом входе в систему вам необходимо:

  1. Если message_displayed в базе данных имеет значение false, если это так, отобразить сообщение
  2. Установить message_displayed в базе данных для пользователя на true

Теперь последующие входы в систему будут установлены в базе данных. Выполнение этого только в сеансе будет означать, что оно может снова появиться, если они удалят свои куки или войдут в систему с другого компьютера.

Edit:

Если подумать, это не устойчиво. На самом деле вам нужна система уведомлений.

  1. Уведомление генерируется в отдельной таблице с идентификатором пользователя
  2. Когда пользователь входит в таблицу уведомлений, отмечен
  3. Если уведомление существует, оно отображается и помечается как прочитанное или удаленное

Таким образом, вы можете показывать много уведомлений только один раз, а не полагаться на один столбец базы данных в пользовательской таблице. Также вы можете иметь разные триггеры для уведомлений, например, он отображается один раз и удаляется, или он удаляется только при выполнении определенного действия, например, Принятие / отклонение запроса на добавление в друзья.

0 голосов
/ 02 февраля 2011

привет, создайте таблицу log_report (или как-нибудь еще), в которую вы вводите время, когда пользователь входит в систему, но перед вводом вводите это время в сеанс и сравниваете время с вашими существующими записями, если эта запись не существует, выведите сообщение, в противном случае нет , И сравнивайте это время сеанса все время, когда страница загружается. если существующий не показывает иначе, показывает ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...