如果登录用户的“loginid”位于由getEditorList();确定的列表中,则下面的PHP代码会回显链接。它工作得相当好,但我认为如果我用Javascript代替它可能会更好。
我怎么能用Javascript完成同样的事情?
提前致谢,
约翰
$editors = getEditorsList();
foreach($editors as $editor)
{
$editorids[] = $editor['loginid'];
}
if(in_array($_SESSION['loginid'], $editorids))
{
echo "<div class='footervote'><a href='http://www...com/.../footervote.php'>Vote</a></div>";
}
登录功能:
<?php
if (!isLoggedIn())
{
if (isset($_POST['cmdlogin']))
{
if (checkLogin($_POST['username'], $_POST['password']))
{
show_userbox();
} else
{
echo "Incorrect Login information !";
show_loginform();
}
} else
{
show_loginform();
}
} else
{
show_userbox();
}
?>
答案 0 :(得分:0)
实际上,您的问题是“在用户登录后,他经常仍会获取未登录的页面版本”,并建议“将链接显示在Javascript中”作为解决方案。然后你问如何做到这一点:)
RoToRa已经指出问题的原因可能与浏览器兑现页面有关,而不是在用户登录后请求新页面,而是显示旧页面缓存。即使使用Javascript,也有几种解决方案。
避免缓存:
检查PHP header function以获取有关如何在PHP中执行此操作的更多信息,或阅读您的网络服务器文档。
另一种可能的解决方案是将页面用作静态,然后使用AJAX 检查用户是否已登录,如果是,则加载自定义该用户的内容。通常,您将创建一个额外的php脚本来检查用户是否已登录,并让AJAX调用此脚本。使用像jQuery这样不错的Javascript库很容易做到,但如果你真的需要这样做,你可以在没有库的情况下做到这一点。
结帐PHP JSON,jQuery AJAX了解有关这些解决方案的更多信息。
最后一个常用(ab)使用的解决方案是为您的网页设置查询字符串 - 浏览器会看到查询字符串不同,并且不会缓存页面。