我正在尝试循环会话。但我似乎无法获得预期的结果。 我还在努力探索一些事情。所以请教我一个更好的方法来做到这一点。如果您发现我的代码不安全或不合适。 首先我有这个登录表单:
<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>
这是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'];
}
}
?>
这是循环会话的文件:
<?php
session_start();
echo "Logged in users:<br/>";
foreach($_SESSION as $sir){
}
echo "User id: ". $_SESSION['uid']."<br/>";
echo "Username: ".$_SESSION['uname']."<br/>";
?>
我明白了:
虽然我期待得到这样的东西:
用户ID:1 用户名:yoh
用户ID:2 用户名:max
答案 0 :(得分:7)
$ _ SESSION仅适用于实际打开页面的访问者。 (看到每个人的$ _SESSION变量会很高兴,不是吗?)
您可能希望将这些$ _SESSION变量存储在数据库中,然后循环遍历它们。
更新
last_seen
last_seen
值小于now
的所有行 - 服务器的会话生存期答案 1 :(得分:3)
除了非常正确的fabrik的回答,只需几行代码:
foreach($_SESSION as $sir){
}
这个循环显然什么也没做。你无法从没有输出的代码中获得任何输出:)
另外,如果你想将多个值存储到会话中,比如在购物车中,你必须存储在数组中,而不是长串联字符串:
$_SESSION['cart'][] =$result;
会产生一个名为$ _SESSION ['cart']的数组,可以按照你想要的方式迭代:
foreach ($_SESSION['cart'] as $result){
echo "Item id: ".$result['id'].", name: ".$result['name']."<br>\n";
}
答案 2 :(得分:1)
session_start();
foreach ($_SESSION as $name => $value)
{
echo $name."=".$value."<br>";
}
答案 3 :(得分:0)
更新:非数字索引。
在login.php中
while($result=mysql_fetch_assoc($check)){
$_SESSION[$result['Uname'].$result['ID']] = array(
"uid"=>$result['ID'],
"uname"=>$result['Uname']
);
}
在你的foreach
foreach($_SESSION as $uinfos){
echo "User id: ".$uinfos["uid"]."<br/>Username: ".$uinfos["uname"]."<br/>";
}
像这样,每个用户只有一个条目。
答案 4 :(得分:-1)
为什么不像
那样存储它$ _ SESSION [$ uid] = $ name;或$ _SESSION [] = array('uid'=&gt; $ uid,'name'=&gt; $ name);
然后您可以简单地遍历所有条目..
foreach($_SESSION as $uid=> $name){
....
}
或
foreach($_SESSION as $userArray){
$uid = $userArray['uid'];
$name = $userArray['name'];
}