php会话超时一页中的所有代码
关于,我从第二个答案中复制了一些代码PHP会话30分钟内到期的简单方法。我想将登录和信息合并到一个页面,另一个页面是logout.PHP 这是我的密码 homepage.phpphp会话超时一页中的所有代码,php,session,Php,Session,关于,我从第二个答案中复制了一些代码PHP会话30分钟内到期的简单方法。我想将登录和信息合并到一个页面,另一个页面是logout.PHP 这是我的密码 homepage.php if(isset($_POST["submitform"])){ $v1 = "admin"; $v2 = "admin"; $v3 = $_POST['username']; $v4 = $_POST['password']; if($v1 == $v3 &&
if(isset($_POST["submitform"])){
$v1 = "admin";
$v2 = "admin";
$v3 = $_POST['username'];
$v4 = $_POST['password'];
if($v1 == $v3 && $v2 == $v4){
session_start();
$_SESSION['username'] = $v1;
$_SESSION['start'] = time(); // taking now logged in time
$_SESSION['expire'] = $_SESSION['start'] + (1* 30) ; // ending a session in 30 seconds
if(!isset($_SESSION['username'])){
echo "Please Login again <a href='logout.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 expire ! <a href='logout.php'>Click Here to Login</a>";
}else{
echo "This should be expired in 1 min <a href='logout.php'>Click Here to Login</a>";
}
}
}else{
echo '
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit" name="submitform">Sign in</button>
</form>';
echo '<font color="red">wrong password</font>"';
}
}else{
echo '
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit" name="submitform">Sign in</button>
</form>';
}
?>
<?php
session_start();
session_destroy();
header('Location: homepage.php');
?>
if(isset($\u POST[“submitform”])){
$v1=“管理”;
$v2=“admin”;
$v3=$_POST['username'];
$v4=$_POST['password'];
如果($v1=$v3&$v2=$v4){
会话_start();
$\会话['username']=$v1;
$\u SESSION['start']=time();//使用现在已登录的时间
$\u会话['expire']=$\u会话['start']+(1*30);//在30秒内结束会话
如果(!isset($\u会话['username'])){
回显“请再次登录”;
}否则{
$now=time();//检查主页启动的时间
如果($now>$\会话['expire']){
会话_destroy();
echo“您的会话已过期!”;
}否则{
echo“该时间应在1分钟内到期”;
}
}
}否则{
回声'
登录
';
回显“错误密码”;
}
}否则{
回声'
登录
';
}
?>
Logout.php
if(isset($_POST["submitform"])){
$v1 = "admin";
$v2 = "admin";
$v3 = $_POST['username'];
$v4 = $_POST['password'];
if($v1 == $v3 && $v2 == $v4){
session_start();
$_SESSION['username'] = $v1;
$_SESSION['start'] = time(); // taking now logged in time
$_SESSION['expire'] = $_SESSION['start'] + (1* 30) ; // ending a session in 30 seconds
if(!isset($_SESSION['username'])){
echo "Please Login again <a href='logout.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 expire ! <a href='logout.php'>Click Here to Login</a>";
}else{
echo "This should be expired in 1 min <a href='logout.php'>Click Here to Login</a>";
}
}
}else{
echo '
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit" name="submitform">Sign in</button>
</form>';
echo '<font color="red">wrong password</font>"';
}
}else{
echo '
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit" name="submitform">Sign in</button>
</form>';
}
?>
<?php
session_start();
session_destroy();
header('Location: homepage.php');
?>
我将session expire设置为30秒,但是我发现session没有按预期过期。session从未过期。我想知道我是否将session_start();
放在了正确的位置?谢谢session_start()
需要作为第一行代码
此外,您可以将cookie设置为过期。您只是在表单post上检查会话的状态 如果您刷新页面,它将重新发送帖子,让您登录并扩展会话 您的逻辑需要是: 如果是post,请检查密码并扩展会话 检查会话是否已过期(如果post未过期,则必须执行此操作,没有区别。) 根据会话检查的结果显示登录表单或注销消息
if (isset($_POST["submitform"])) {
$v1 = "admin";
$v2 = "admin";
$v3 = $_POST['username'];
$v4 = $_POST['password'];
if ($v1 == $v3 && $v2 == $v4) {
session_start();
$_SESSION['username'] = $v1;
$_SESSION['start'] = time();
// taking now logged in time
$_SESSION['expire'] = $_SESSION['start'] + (1 * 30);
// ending a session in 30 seconds
} else {
echo '
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit" name="submitform">Sign in</button>
</form>';
echo '<font color="red">wrong password</font>"';
die();
}
if (!isset($_SESSION['username'])) {
echo "Please Login";
echo '
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit" name="submitform">Sign in</button>
</form>';
} else {
$now = time();
// checking the time now when home page starts
if ($now > $_SESSION['expire']) {
session_destroy();
echo "Your session has expired ! <a href='logout.php'>Click Here to Login</a>";
} else {
echo "This should be expired in 1 min <a href='logout.php'>Click Here to Login</a>";
}
}
if(isset($\u POST[“submitform”])){
$v1=“管理”;
$v2=“admin”;
$v3=$_POST['username'];
$v4=$_POST['password'];
如果($v1=$v3&$v2=$v4){
会话_start();
$\会话['username']=$v1;
$\u会话['start']=time();
//现在需要登录时间
$\会话['expire']=$\会话['start']+(1*30);
//在30秒内结束会话
}否则{
回声'
登录
';
回显“错误密码”;
模具();
}
如果(!isset($\u会话['username'])){
回显“请登录”;
回声'
登录
';
}否则{
$now=时间();
//正在检查主页启动的时间
如果($now>$\会话['expire']){
会话_destroy();
echo“您的会话已过期!”;
}否则{
echo“该时间应在1分钟内到期”;
}
}
是否可以在同一页面上有不同的会话
YES
所以使用
一个用户,一个会话
http://us3.php.net/manual/en/ref.session.php
“永不过期”是什么意思?你离开页面30分钟后回来发现自己仍在登录吗?@PhillSparks.30秒而不是30分钟,我缩短了过期时间。是的,我仍在登录。只需检查$\u会话['expire']时间越长,破坏会话,如果时间越长,我个人从未见过时间小于5的cookieminutes@tpow谢谢,我移动了
session\u start()
在页面顶部和代码的第一行。仍然一样,会话不会在30秒后过期。是的,你是对的,可以在同一页面上有不同的会话吗?还是我必须分开页面?我在回答中添加了更多的细节,希望能有所帮助