如果符合条件,则出现链接

时间:2010-06-11 08:28:15

标签: javascript

如果登录用户的“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();

}



?>

1 个答案:

答案 0 :(得分:0)

实际上,您的问题是“在用户登录后,他经常仍会获取未登录的页面版本”,并建议“将链接显示在Javascript中”作为解决方案。然后你问如何做到这一点:)

RoToRa已经指出问题的原因可能与浏览器兑现页面有关,而不是在用户登录后请求新页面,而是显示旧页面缓存。即使使用Javascript,也有几种解决方案。

避免缓存:

  • 在您的信息页中添加“ Pragma:No-Cache ”标题。
  • 在您的信息页上添加“过期:-1 ”标题。
  • 使用HTTP 1.1
  • 中的 Cache-Control HTTP标头

检查PHP header function以获取有关如何在PHP中执行此操作的更多信息,或阅读您的网络服务器文档。

另一种可能的解决方案是将页面用作静态,然后使用AJAX 检查用户是否已登录,如果是,则加载自定义该用户的内容。通常,您将创建一个额外的php脚本来检查用户是否已登录,并让AJAX调用此脚本。使用像jQuery这样不错的Javascript库很容易做到,但如果你真的需要这样做,你可以在没有库的情况下做到这一点。

结帐PHP JSONjQuery AJAX了解有关这些解决方案的更多信息。

最后一个常用(ab)使用的解决方案是为您的网页设置查询字符串 - 浏览器会看到查询字符串不同,并且不会缓存页面。