Я прочитал множество сообщений об уничтожении сессии PHP через определенное количество времени, но многие ответы не уточняют, работает ли решение для бездействия или в течение определенного периода времени. Позвольте мне изложить.
Я использую php для создания и оценки викторины. Каждый вопрос динамически генерируется, и пользователь должен нажать кнопку отправки, чтобы перейти к следующему вопросу, тем самым генерируя запрос к скрипту php.
Я хочу, чтобы у пользователя было всего 15 минут, чтобы завершить его. Другими словами, если пользователю требуется 6 минут, чтобы выполнить первые 3 проблемы, у пользователя осталось 9 минут, чтобы выполнить другие 3 проблемы.
Если вы установите неактивное время на 15 минут, то предположительно у пользователя есть 15 минут между запросами на веб-страницу, правильно? Это решение, на которое, как я полагаю, дает этот ответ.
Однако это не то, что мне нужно. Мне нужно, чтобы сеанс завершился через 15 минут с самого начала, независимо от того, когда последний запрос был сделан пользователем.
спасибо
Я больше читал ссылку, которую я опубликовал, которая была столбом, и нашла ответ, который имел несколько голосов, но не был выбран как лучший, написанный @Rafee. Однако он выполнил то, что я хотел. Вот этот код:
login.php
<?php
session_start();
?>
<html>
<form name="form1" method="post">
<table>
<tr>
<td>Username</td>
<td><input type="text" name="text1"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td><input type="submit" value="SignIn" name="submit1"></td>
</tr>
</table>
</form>
</html>
<?php
if ($_POST['submit1']) {
$v1 = "FirstUser";
$v2 = "MyPassword";
$v3 = $_POST['text'];
$v4 = $_POST['pwd'];
if ($v1 == $v3 && $v2 == $v4) {
$_SESSION['luser'] = $v1;
$_SESSION['start'] = time(); // Taking now logged in time.
// Ending a session in 30 minutes from the starting time.
$_SESSION['expire'] = $_SESSION['start'] + (30 * 60);
header('Location: http://localhost/somefolder/homepage.php');
} else {
echo "Please enter the username or password again!";
}
}
?>
Homepage.php:
<?php
session_start();
if (!isset($_SESSION['luser'])) {
echo "Please Login again";
echo "<a href='http://localhost/somefolder/login.php'>Click Here to Login</a>";
}
else {
$now = time(); // Checking the time now when home page starts.
if ($now > $_SESSION['expire']) {
session_destroy();
echo "Your session has expired! <a href='http://localhost/somefolder/login.php'>Login here</a>";
}
else { //Starting this else one [else1]
?>
Я не был полностью осведомлен о том, как работает session_start, но теперь я понимаю, что он должен быть включен в файлы php, которые будут использовать переменные сеанса.