首页 > 解决方案 > php7会话变量在并发访问中刷新页面时发生变化-云托管

问题描述

假设有两个用户(A 和 B)登录 PHP 应用程序。

在访问应用程序中的同一页面时,A 会话变量都显示给 B,反之亦然。

如果 A 刷新页面,他的原始会话值将再次显示。

如何避免这个问题?请帮我。

登录页面:

session_start();

错误报告(0);ob_start();

if( (isset($_POST['submit'])) && ($_POST['submit'] == 'login') ) {

$username=addslashes(trim($_POST['stud_id']));
$password=addslashes(trim($_POST['password']));

}

$mysqli->set_charset('utf8'); $query=sprintf("select * from register_fst where Application_id='%s'",$username);

 $result = $mysqli->query($query) or die($mysqli->error);
 $rowcount = mysqli_num_rows($result);

  if($rowcount > 0)
    { 
        $row = mysqli_fetch_array($result);


        $adm_pass= addslashes($row['Password']);
        $adm_user= addslashes($row['Application_id']);


        if(($username == $adm_user) && ($password == $adm_pass) )
        {


                $_SESSION['username']=$row['Application_id'];
                //$_SESSION['password']=$row['Password'];


                $_SESSION['mob'] = $row['Mobile_No'];
                $_SESSION['dob'] = $row['DOB'];
                $_SESSION['aadhar_no'] = $row['Adhar_no'];
                $_SESSION['zone'] = $row['Zonal_id'];
                $_SESSION['fullname'] = $row['FullName'];

                $_SESSION['loggedin_time'] = time();

                $db_sessionid=$row['Session_id'];
                $old_sessionid = session_id();
                $new_sessionid = session_regenerate_id(true);
                $_SESSION['newregid']=$new_sessionid;
                $_SESSION['odlregid']=$old_sessionid;



                if(!empty($old_sessionid))
                {

                $query_time=$mysqli->query("UPDATE registation_fst SET Session_id='".$old_sessionid."'WHERE Application_id='".$_SESSION['username']."'");

                        header("Location:Login-home.php");exit;

                } else if($db_sessionid!=$_SESSION['odlregid'])
                {

                    $query_time=$mysqli->query("UPDATE registation_fst SET Session_id ='".$new_sessionid."'WHERE Application_id='".$_SESSION['username']."'");

                    header("Location:Login-home.php");exit;
                }

        } else{
            $_SESSION['logstu']= "wrong";
            header("Location:Login.php");
                exit;
        }
    } else{
            $_SESSION['logstu']= "notavail";
            header("Location:Login.php");
                exit;

}

主页:

<?php
session_start();
 ob_start();
 print_R($_SESSION);
 ?>

会话值自动更改并在刷新时再次恢复

标签: php

解决方案


欢迎来到社区。尝试对您的 ob_start() 进行一些更改。

也许在 session_start 之前写它或删除它只是为了知道它是否有问题。


推荐阅读