PHP会话变量丢失在同一页面上

时间:2018-08-29 13:36:45

标签: php session-variables

我有一些要分配员工的团队。经理登录到分配团队编号的帐户。然后,他们单击链接(该链接将Team ID作为变量传递)转到工作分配页面,在该页面中进行员工查找。找到该员工,然后单击链接以将该员工分配给他们的团队。

当他们首次进入此分配页面时,团队编号存在。但是,他们执行搜索后,团队编号将被清空。这些都在同一页面上。我不知道为什么“搜索”功能会清除“会话变量”值。谢谢。

<?php 
session_start();
?>

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div class="container">
    <?php 
    $_SESSION["teamid"] = $_REQUEST["tid"];
    ?>

    <?php 
    $con = new mysqli($localhost, $username, $password, $dbname); 
    if( $con->connect_error){
       die('Error: ' . $con->connect_error);
    } 
    if( isset($_GET['search']) ){  
      $team = $_SESSION["teamid"];
      $memberid = mysqli_real_escape_string($con, htmlspecialchars($_GET['search'])); 
      $sql = "SELECT * FROM employees WHERE empid ='$memberid'"; 
    } 
    $result = $con->query($sql);
    ?>

    <label>Enter Employee You Wish To Add To Your Team (<?php echo $_SESSION["teamid"]; ?>)</label>
    <form action="" method="GET">
        <input type="text" placeholder="Enter Employee ID here" name="search">&nbsp;
        <input type="submit" value="Search" name="btn" class="btn btn-sm btn-primary">
    </form>
    <br />
    <table class="table table-striped table-responsive">
        <tr>
            <th>Employee ID</th>
            <th>Name</th>
            <th>Action</th>
        </tr>
        <?php 
        while($row = $result->fetch_assoc()){
            ?>
            <tr>
                <td><?php echo $row['empid']; ?></td>
                <td><?php echo $row['firstname']; ?> <?php echo $row['lastname']; ?></td>
                <td><a href="assignemployee.php?mid=<?php echo $row['empid']; ?>&tid=<?php echo $team; ?>">Assign Employee</a></td>
            </tr>
            <?php
        }

        ?>
    </table>
</div>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

这是因为在代码的顶部,您具有以下部分:

<?php 
$_SESSION["teamid"] = $_REQUEST["tid"];
?>

因此,每次页面重新加载时,都会将teamid设置为请求中的内容。第二次访问该页面时,很可能是空的,这也导致会话也为空。

一种简单的解决方法是检查是否设置了$_REQUEST["tid"]

<?php
if (isset($_REQUEST["tid"])) {
    $_SESSION["teamid"] = $_REQUEST["tid"];
}
?>