Я хочу уничтожить сеанс, если пользователи не выполняют какие-либо действия на веб-сайте. В это время после того, как 5 пользователей автоматически перенаправляются на индексную страницу. Как это возможно? Возможно в php с обработкой сеанса, и для этого я должен поддерживать или обновлять время входа пользователя или нет.
Довольно легко:
if(time() - $_SESSION['timestamp'] > 900) { //subtract new timestamp from the old one echo"<script>alert('15 Minutes over!');</script>"; unset($_SESSION['username'], $_SESSION['password'], $_SESSION['timestamp']); $_SESSION['logged_in'] = false; header("Location: " . index.php); //redirect to index.php exit; } else { $_SESSION['timestamp'] = time(); //set new timestamp }
Мое решение (я даю вам решение, но этот простой и синтаксис не был проверен)
checkerOrCreatorTime.php
<?php //if using the session, this additional advice me ini_set('session.cookie_httponly', 1); ini_set('session.use_only_cookies', 1); session_start(); //create session (JUST FOR ONE TIME) if (!isset($_SESSION['THE SESSION KEY FOR LOGIN (EX. USERNAME)'])){ //create anyting session you need $_SESSION['user']['THE SESSION KEY FOR LOGIN (EX. USERNAME)'] = 'USER'; $_SESSION['user']['TIME'] = '900'; }else if (time() -$_SESSION['TIME'] > 900){ unset($_SESSION['user']); // and whatever your decision } ?>
с<?php //if using the session, this additional advice me ini_set('session.cookie_httponly', 1); ini_set('session.use_only_cookies', 1); session_start(); //create session (JUST FOR ONE TIME) if (!isset($_SESSION['THE SESSION KEY FOR LOGIN (EX. USERNAME)'])){ //create anyting session you need $_SESSION['user']['THE SESSION KEY FOR LOGIN (EX. USERNAME)'] = 'USER'; $_SESSION['user']['TIME'] = '900'; }else if (time() -$_SESSION['TIME'] > 900){ unset($_SESSION['user']); // and whatever your decision } ?>
Вопросы-Ответы:
1. Why use ['user'] is session login? if you using many session for user, you just unset one var, like this. 2. why use a ini_set.... in this syntax? for more security
если вам нравится использовать современную сеть, просто используя javascript для ajax
session_start(); $t=time(); if (isset($_SESSION['logged']) && ($t - $_SESSION['logged'] > 900)) { session_destroy(); session_unset(); header('location: index.php'); }else {$_SESSION['logged'] = time();}
<form action="index.php" method="post" name="frm"><input name="uname" type="text" placeholder="User Name" /> <input name="pass" type="password" placeholder="Password" /> <input name="submit" type="submit" value="submit" /></form> In index.php <?php if(isset($_SESSION['loggedAt'])) { header('dashboard.php'); } if(isset($_POST['submit'])) { $name=$_POST['uname']; $pass=$_POST['pass']; if($name=="admin" &amp;amp;&amp;amp; $pass=="1234") { session_Start(); $_SESSION['username']=$name; $_SESSION['loggedAt']=time(); header('location:dashboard.php?msg=Welcome to dashboard'); } } ?> in dashboard.php if(time() - $_SESSION['loggedAt'] > 240) { echo"<script>alert('Your are logged out');</script>"; unset($_SESSION['username'], $_SESSION['loggedAt']); header("Location: " . index.php); exit; } else { $_SESSION['loggedAt'] = time(); } For details Follow the link