Пользователи Выхода из системы силы, если пользователи неактивны в течение определенного промежутка времени

В C ++ {} используется для предоставления объекту значения инициализации и применяется с C ++ 03.

Вот некоторая полезная информация об инициализации значения:
https://en.cppreference.com/w/cpp/language/value_initialization
и форум пост, задающий очень похожий вопрос с хорошим ответом пользователя Alok Save:
Что означает «инициализация значения» чего-либо?

Что вы должны использовать, зависит от что вы будете делать с объектом, и принимают ли его конструкторы инициализацию значения. После C ++ 03, если создается массив объектов, и вы помещаете данные в {} и конструктор объекта принимает инициализацию значения, каждый элемент массива будет инициализирован значением, но если вы просто поместите {}, массив будет инициализироваться нулями, если это поддерживается.
Например, вот несколько способов инициализации массива целых чисел:

Для value-initialize список делает это:
int* intArray = new int[5]{1, 2, 3, 4, 5};
И список будет инициализирован так:
1, 2, 3, 4, 5

Но если вы попытаетесь инициализировать список следующим образом:
int* intArray = new int[5]{1};
В итоге вы получите:
1, 0, 0, 0, 0
Это потому, что для целочисленных массивов ожидается значение инициализатора для каждого элемента.

Также обратите внимание, что при использовании конструктора по умолчанию список вообще не инициализируется (во всяком случае, для целочисленных списков), поэтому это:
int* intArray = new int[5];
Результатом будет каждый элемент сохранение любого значения, которое уже находится в этой ячейке памяти, например:
16256696, 16253120, 0, 0, -1543503708
Если первое, что вы планируете сделать, это заполнить массив данными из вашей программы, это быстрее и более эффективный, поскольку вам не нужно устанавливать данные в каждой ячейке памяти дважды. Однако, как указано в комментариях, это в конечном итоге означает, что данные в вашем массиве БУДУТ непредсказуемыми, поэтому вы должны быть уверены, что заполняете весь массив как можно скорее, чтобы предотвратить возможные ошибки.

В качестве альтернативы, если вы хотите, чтобы эти данные были инициализированы нулями , вы должны сделать следующее:
int* intArray = new int[5]{};
И список qill будет инициализирован as:
0, 0, 0, 0, 0

Однако нет гарантии, что это будет то же самое для типа данных _Elem, поэтому я бы рекомендовал провести некоторое тестирование, подобное тому, что я сделал здесь выяснить, что наиболее актуально для вас.

7
задан Graviton 21 February 2009 в 13:20
поделиться

6 ответов

Если пользователь запрашивает новые страницы/данные с Вашего сервера регулярно, то корректировка тайм-аута сессии в PHP должна работать на это (предположение, что Вы используете сессии PHP).

Если беспокойство - то, что они могли находиться на одной странице в течение хорошего отрезка времени без прохождений в сервер (например, заполнять подробную форму), и Вы хотите различать это и пользователя, просто переключающегося на другое окно, Вы могли сделать что-то, любят, используют JavaScript для запроса некоторых данных с помощью XMLHTTPRequest каждые пять минут или так поддерживать сессию. Вы могли использовать window.focus и window.onblur события в JavaScript, чтобы остановить и перезапустить этот механизм (я думаю, что существуют некоторые различия для IE, существует хорошее объяснение здесь).

7
ответ дан 6 December 2019 в 05:43
поделиться

Очень легкий и эффективный способ сделать это путем размещения чего-то вроде этого в раздел HTML HEAD:

<META HTTP-EQUIV="refresh" CONTENT="1800;URL=logout.php?timeout"> 

Заменить logout.php? тайм-аут с соответствующим сценарием.. В примере выше, если? тайм-аут находится в строке запроса, я показываю им страницу входа в систему с информацией, указывающей, что они вышлись из системы из-за неактивности.

Замените 1800 временем в секундах, что Вы хотите позволить им оставаться неактивными прежде автоматически зарегистрировать их. Установите это на то же время, когда Вам установили Ваше истечение сессии на.

Редактирование - Другой легкий механизм для реализации должен иметь переменную сеанса, названную last_time, или last_activity или чем-то вдоль тех строк, и установить его на метку времени каждый раз существует действие. В большей части моего материала у меня есть генерал, включают файл, что я выполняю в этом. В том же файле Вы могли проверить, чтобы гарантировать, что именно в рамках ограничений Вы сформулировали для активной сессии. Если это было слишком длинно - просто делают 300 перенаправлений к странице выхода из системы и отображают соответствующее сообщение неактивности там.

Удачи!

Ian

4
ответ дан 6 December 2019 в 05:43
поделиться

Это зависит, как они "зарегистрированы" во-первых. Не истечение сессии на сервере делают это для Вас? Если Вы действительно хотите сделать это вручную затем, Вы могли бы использовать некоторый JavaScript в setTimeout, но это ужасно

1
ответ дан 6 December 2019 в 05:43
поделиться

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

0
ответ дан 6 December 2019 в 05:43
поделиться

У Вас может быть немного JavaScript, который проверяет сервер каждый x минуты для наблюдения, когда последнее действие пользователя было. Не должны быть больше, чем несколько строк кода. Я также добавил бы обновление meta, если пользователю отключили JavaScript.

0
ответ дан 6 December 2019 в 05:43
поделиться

Привет, ребята, это код, который я использую. Он не мой, но я модифицировал его до «совершенства».

// Add the following into your HEAD section
var timer = 0;
function set_interval() {
  // the interval 'timer' is set as soon as the page loads
  timer = setInterval("auto_logout()", 10000);
  // the figure '10000' above indicates how many milliseconds the timer be set to.
  // Eg: to set it to 5 mins, calculate 5min = 5x60 = 300 sec = 300,000 millisec.
  // So set it to 300000
}

function reset_interval() {
  //resets the timer. The timer is reset on each of the below events:
  // 1. mousemove   2. mouseclick   3. key press 4. scroliing
  //first step: clear the existing timer

  if (timer != 0) {
    clearInterval(timer);
    timer = 0;
    // second step: implement the timer again
    timer = setInterval("auto_logout()", 10000);
    // completed the reset of the timer
  }
}

function auto_logout() {
  // this function will redirect the user to the logout script
  window.location = "your_logout_script.php";
}

// Add the following attributes into your BODY tag
onload="set_interval()"
onmousemove="reset_interval()"
onclick="reset_interval()"
onkeypress="reset_interval()"
onscroll="reset_interval()"

Удачи

Ричард

15
ответ дан 6 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: