会话注销而无需结束会话



我们有一个会话注销脚本,例如:

<?php
    //24 2 2015
    session_start();
    session_destroy();
    header("location:login.php")
?>

现在,此脚本登录并将其重定向到登录页面,需要再次登录用户名和密码。

如果我想进行临时注销,登录后将我们将我们引向一个只需要密码的登录页面,因为会话不会被销毁,并且用户名被传递到该页面...

因此,当您输入密码时,它将在数据库表中检查输入,其中用户名= session用户名。

希望我很清楚。


更新::

templogout.php

<?php
    //24 2 2015
    session_start();
    $_SESSION['temp_logout'] = true;
    header("location:templogin.php")
?>

templogin.php

<?php
    //24 2 2015
    session_start();
?>
<form id="msform" action="templogincheck.php" method="post">
  <fieldset>
      <input type="password" name="password" placeholder="Enter password here" required />
    <button type="submit" name="submit" class="submit action-button"> LogIn </button>
</form>

templogincheck.php

<?php
    //15 2 2015
    session_start();
    $Cser =mysqli_connect("localhost","text","text","text") or die("Server connection failed : ".mysqli_error($Cser));
    $password = md5($_REQUEST["password"]);
    $mobile = $_SESSION['mobile'];
    $s = "select * from users where password = '".$password."' and mobile = '".$mobile."'";
    $result = mysqli_query($Cser,$s);
    $count = mysqli_num_rows($result);
    if($count>0)
    {
        $_SESSION["mobile"] = $mobile;
        $_SESSION["login"]="1";
        header("location:/index.php");
    }
    else
    {
     header("location:/templogin.php");   
  }
?>

index.php

<?php 
    //15 2 2015
    session_start();
        unset($_SESSION["temp_logout"]);
    if(!isset($_SESSION["login"]))
        header("location:login.php");
?>

我希望我做对了,但是我必须假设我有一些错误的原因,因为它不起作用。

我是否将会话移动移动到登录检查页面?

用户首次登录页面:

<form id="msform" action="ulogincheck.php" method="post">
  <fieldset>
    <h2 class="fs-title">LogIn</h2>
    <h3 class="fs-subtitle">Please Enter your details accordingly<br/><br/> <small>(case sensitive)</small></h3>
      <input type="text" name="email" placeholder="Email" required />
      <input type="text" name="mobile" placeholder="Mobile" required />
      <input type="password" name="password" placeholder="Password" required />
    <button type="submit" name="submit" class="submit action-button"> LogIn </button>
</form>

第一个LoginCheck Page

session_start();
$email = $_REQUEST["email"];
    $mobile = $_REQUEST["mobile"];
    $password = md5($_REQUEST["password"]);

    $s = "select * from users where email='".$email."' and password = '".$password."' and mobile = '".$mobile."'";
    $result = mysqli_query($Cser,$s);
    $count = mysqli_num_rows($result);
    if($count>0)
    {
        $_SESSION["email"] = $email; 
        $_SESSION["mobile"] = $mobile;
        $_SESSION["login"]="1";
        header("location:/index2.php");
    }
    else
    {
           header("location:/usersignin.php");   

您可以将"temp_logout"字段添加到$_SESSION变量,当您将用户重定向到登录页面时,您可以检查 $_SESSION["temp_logout"],如果它是正确的,请在输入中添加用户名字段。

注销脚本:

<?php
    //24 2 2015
    session_start();
    $_SESSION['temp_logout'] = true;
    header("location:login.php")
?>

登录页面:

session_start()
...
//where the "username" input is
<input name="username" <?php if(isset($_SESSION["temp_logout"]){
    echo 'value="'.$_SESSION["username"] .'" ';
} ?> />
...

成功登录后:

<?php
    session_start();
    unset($_SESSION["temp_logout"]);
?>

另外,在网站上的任何地方,不要忘记检查用户是否临时登录;然后立即将他重定向到登录页

这确实取决于您的平台:您只能拆除诸如password之类的东西,而不是销毁会话,

unset($_SESSION['password']);

或设置会话中的另一个键:

$_SESSION['loggedIn'] = false;

并重定向到登录页面。

您也可以将用户名放入cookie和销毁会话中。

setCookie

如果要将用户名存储在cookie中,则最好出于安全原因加密。

最新更新