Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据用户是否登录显示内容_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何根据用户是否登录显示内容

Javascript 如何根据用户是否登录显示内容,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试制作一个允许用户共享信息的web应用程序,但我的合作伙伴想要一种特定类型的逻辑。如果用户登录,他或她将获得比未登录时更多的内容。具体来说,我希望未登录的人能够查看项目、网格、平铺和源。然后,我希望登录的用户不仅能够看到上面的所有内容,还可以获得创建、编辑和删除项目等选项,并通过链接让用户有机会集思广益 <!-- Tab Links --> <div class="tab"> <button class="tablinks" on

我正在尝试制作一个允许用户共享信息的web应用程序,但我的合作伙伴想要一种特定类型的逻辑。如果用户登录,他或她将获得比未登录时更多的内容。具体来说,我希望未登录的人能够查看项目、网格、平铺和源。然后,我希望登录的用户不仅能够看到上面的所有内容,还可以获得创建、编辑和删除项目等选项,并通过链接让用户有机会集思广益

<!-- Tab Links -->
      <div class="tab">
        <button class="tablinks" onclick="openTab(event, 'Dashboard')">Dashboard</button>
        <button class="tablinks" onclick="openTab(event, 'Projects')">Projects</button>
        <button class="tablinks" onclick="openTab(event, 'Grids')">Grids</button>
      </div>

      <!-- Tab Contents -->
      <div id="Dashboard" class="tabcontent">
        <h3>Dashboard</h3>
        <p>Projects, Grids, Tiles, and Sources go here.</p>
      </div>

      <div id="Projects" class="tabcontent">
        <h3>Projects</h3>
        <p>Project titles, grids, tiles, and sources go here.</p>
      </div>

      <div id="Grids" class="tabcontent">
        <h3>Grids</h3>
        <p>Grid titles, tabs, tiles, and sources go here.</p>
      </div>

仪表板
项目
网格
仪表板
项目、网格、瓷砖和源都在这里

项目 项目标题、网格、平铺和来源都在这里

网格 网格标题、选项卡、平铺和源都在这里

这是HTML,下面是Javascript:

//When you click a dashboard tabs
    openTab: async function(evt, tabName) {
      // Declare all variables
      var i, tabcontent, tablinks;

      // Get all elements with class="tabcontent" and hide them
      tabcontent = document.getElementsByClassName("tabcontent");
      for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
      }

      // Get all elements with class="tablinks" and remove the class "active"
      tablinks = document.getElementsByClassName("tablinks");
      for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace("active", "");
      }

      // Show the current tab, and add an "active" class to the button that opened the tab
      document.getElementById(cityName).style.display = "block";
      evt.currentTarget.className += " active";
    }
//单击仪表板选项卡时
openTab:异步函数(evt,tabName){
//声明所有变量
var i,tabcontent,tablinks;
//使用class=“tabcontent”获取所有元素并隐藏它们
tabcontent=document.getElementsByClassName(“tabcontent”);
对于(i=0;i

如果能得到任何帮助,我将不胜感激。

正如其他人所说,最好不要向未经身份验证的用户提供“已验证”的DOM元素。这就是说,一个好的模式是在html元素上设置一个“authenticated”类(如果服务器确定用户已通过身份验证)。然后根据你的心愿使用后代css。现在,您正在使用javascript进行格式化,这是css处理的最佳方式

您可以创建一个会话变量(在PHP中,例如:)并相应地显示构建内容。我之所以谈论PHP,是因为安全性(以及身份验证)是一项服务器端工作。

您需要从服务器上用AJAX处理“操作”HTML。这是一个由两部分组成的交易

客户端:

// execute this on load
$.ajax({
     type: "GET",
     url: '/getactions',
     success: function(data) {
           // data is ur summary
          $('#buttons_div').html(data);
     }
});
服务器端:(假设您使用的是php,getactions.php)



类似这样的操作…

这是一个最好在服务器上执行的操作。您需要一些后端/服务器逻辑来实现此操作,除非您有其他方法来检测用户是否登录。顺便说一句,在html上创建一个id为“buttons\u div”的div以接收内容。
<?php
if( !isset($_SESSION['user_is_logged']) || (time() - $_SESSION['last_access']) > 60 )
  $_SESSION['last_access'] = time();
  echo '<button>Create New Project</button>'
?>