我会解释我的问题 从 index.php 我发布登录和login.php我存储会话详细信息(如名称),例如:
$_SESSION['name'] = mysql_result($res,0,"name");
然后我转发回 index.php 。 在这里,我想显示登录用户的名字:
echo $_SESSION['name']
以及DB中的所有名称:
$result=mysql_query($query);
for ($i=0; $i<mysql_num_rows($result); $i++) {
$row = mysql_fetch_assoc($result);
$name =$row['name'];
echo $name;
}
问题出现了:登录后,所有内容(包括用户名和所有名称)都正确显示。但是,当我刷新页面时echo $_SESSION['name']
显示数据库中的姓氏== $name
而不是
所以我想在存储到$ _SESSION ['name']时需要克隆mysql_result($res,0,"name");
非常感谢
EDIT 我在会话中存储的唯一内容是登录名。当该人登录后,他可以从数据库中看到所有人。
答案 0 :(得分:2)
如果您要克隆对象,则可以尝试以下
$object2 = clone $object1;
从php文档中看来,某些对象似乎不支持克隆,所以如果是这种情况,那么你可以尝试以下(再次,从php文档中的注释)进行深层复制
protected function deepCopy($inputObject) {
return unserialize(serialize($inputObject));
}
文档页面的评论中还有其他一些好处,可在此处找到http://php.net/manual/en/language.oop5.cloning.php
祝你好运
答案 1 :(得分:0)
在我看来,最好不要在会话中存储所有其他名称。作为具有登录功能的数据库应用程序,我假设其他人可以使用和更新数据,这意味着只要他们改变某些内容,会话保存的数据在刷新时就会过时。
尝试让他们登录并设置他们的凭据,然后当他们回到索引检查他们是否已登录并在那时获取名称。这样您就不必担心克隆提取并且您拥有最新信息。