如何在php中循环遍历会话数组

Wer*_*eta 4 php mysql session

我正试图循环整个会话.但我似乎无法获得预期的结果.我还在努力探索一些事情.所以请教我一个更好的方法来做到这一点.如果您发现我的代码不安全或不合适.首先我有这个登录表单:

<form name="x" action="login.php" method="post">

Username:<input type="text" name="uname" value=""></input><br/>
Password:<input type="password" name="pword" value=""></input>
<input type="submit" value="login"></input>
</form>
Run Code Online (Sandbox Code Playgroud)

这里是login.php,如果在mysql数据库上找到记录,它会设置会话:

<?php
require_once("conn.php");

$username=$_POST['uname'];
$pword=md5($_POST['pword']);

echo $username."<br/>";
echo $pword;

$check=mysql_query("SELECT * FROM users WHERE Uname='$username' AND Hpword='$pword'");

if(mysql_num_rows($check)==0){
    header('Location:loginform.php');
}else{

    session_start();

    while($result=mysql_fetch_assoc($check)){
        $_SESSION['uid'].=$result['ID'];
        $_SESSION['uname'].=$result['Uname'];


    }

}
?>
Run Code Online (Sandbox Code Playgroud)

这是循环会话的文件:

<?php

session_start();
echo "Logged in users:<br/>";


foreach($_SESSION as $sir){


}

echo "User id: ". $_SESSION['uid']."<br/>";
echo "Username: ".$_SESSION['uname']."<br/>";

?>
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此输入图像描述

虽然我期待得到这样的东西:

用户名:1​​用户名:yoh

用户名:2用户名:最多

fab*_*rik 7

$ _SESSION仅适用于实际打开页面的访问者.(看到每个人的$ _SESSION变量会很高兴,不是吗?)

您可能希望将这些$ _SESSION变量存储在数据库中,然后循环遍历它们.

更新:

  • 创建一个会话表,您可以在其中存储当前登录的用户
  • 每次登录用户打开页面时,都会增加一个值(时间戳) last_seen
  • 同时检查死会话(例如,删除last_seen 值小于now- 服务器会话生存期的所有行