Php 是否使用COOKIE检查仅向非成员显示缓存数据?(菲律宾)

Php 是否使用COOKIE检查仅向非成员显示缓存数据?(菲律宾),php,session,caching,Php,Session,Caching,缓存非重要页面(如博客帖子)的HTML输出确实有助于提高网站的速度,因为它跳过了整个系统的加载(和渲染时间),只需输出一个预先制作好的页面副本。这将是一种防止大量用户访问站点索引或其他资源的方法 但是,缓存页面的问题之一是,为了检查是否萎缩,您可以显示页面-您必须加载整个系统(和用户库)以检查用户是否登录。(Wordpress、CodeIgniter、Drupal等) 然后,您可以确定显示页面的缓存版本是否安全,或者是否应该为登录用户重新呈现页面。反之亦然;为登录用户呈现的页面不应显示给来宾 无

缓存非重要页面(如博客帖子)的HTML输出确实有助于提高网站的速度,因为它跳过了整个系统的加载(和渲染时间),只需输出一个预先制作好的页面副本。这将是一种防止大量用户访问站点索引或其他资源的方法

但是,缓存页面的问题之一是,为了检查是否萎缩,您可以显示页面-您必须加载整个系统(和用户库)以检查用户是否登录。(Wordpress、CodeIgniter、Drupal等)

然后,您可以确定显示页面的缓存版本是否安全,或者是否应该为登录用户重新呈现页面。反之亦然;为登录用户呈现的页面不应显示给来宾

无论如何,我终于有了一个想法,我可以使用if(empty($\u COOKIE))来测试用户会话,因为我从来没有使用URL来传输会话ID。然后我记得,由于会话库加载在每个页面上,可能无法工作,因为它会在调用会话\u start()时创建COOKIE


有人知道如何在不加载数据库连接->会话库->用户库的情况下测试用户会话吗?

用户登录后,您可以设置某种会话变量,即

//user has successfully logged in
$_SESSION['logged_in'] = true;
然后,在页面加载的早期(在任何库加载之前),您可以执行以下操作:

@session_start();
if(!(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true))
{
  //not a logged in user, show the cache!
  load_cache();  //or however this works
  exit();
}

注销时,您可以执行
session\u destroy()
$\u session['logged\u in']=false

用户登录后,可以设置某种会话变量,即

//user has successfully logged in
$_SESSION['logged_in'] = true;
然后,在页面加载的早期(在任何库加载之前),您可以执行以下操作:

@session_start();
if(!(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true))
{
  //not a logged in user, show the cache!
  load_cache();  //or however this works
  exit();
}

注销时,您可以执行
session\u destroy()
$\u session['logged\u in']=false

我最近才学会这一点,所以我希望我把一切都搞清楚了

为了访问保存的会话变量,必须启动会话。在我正在处理的项目中,“用户登录”和“创建新用户”页面都以session_start()开头。我还试着测试cookie是否已设置,但效果不太好。如果用户是否登录,这并不重要,因为将为来宾和登录用户提供cookie。如果您有一个会话,那么您将有一个cookie(前提是您的php设置是这样的,听起来像是这样)。因此,我没有测试cookie,而是测试是否设置了会话变量。此变量仅在用户成功登录后设置

如果(loginsAccess()){$\u会话['login']=“true”;}

在此之后,我现在可以测试会话变量是否已设置,并适当地显示内容。我的用户可以离开这些页面,返回,它仍然会记住会话变量


不过,我相信有更好、更安全的方法可以做到这一点。

我最近才学到这一点,所以我希望我能把一切都搞清楚

为了访问保存的会话变量,必须启动会话。在我正在处理的项目中,“用户登录”和“创建新用户”页面都以session_start()开头。我还试着测试cookie是否已设置,但效果不太好。如果用户是否登录,这并不重要,因为将为来宾和登录用户提供cookie。如果您有一个会话,那么您将有一个cookie(前提是您的php设置是这样的,听起来像是这样)。因此,我没有测试cookie,而是测试是否设置了会话变量。此变量仅在用户成功登录后设置

如果(loginsAccess()){$\u会话['login']=“true”;}

在此之后,我现在可以测试会话变量是否已设置,并适当地显示内容。我的用户可以离开这些页面,返回,它仍然会记住会话变量


我相信有更好、更安全的方法可以做到这一点。

是的,正如我所说的,当前的方法包括加载系统、数据库(假设会话使用数据库),最后启动会话,如果您只想显示缓存的内容,这是一种浪费

也许除了会话cookie之外,您还可以设置一个名为“logged_out”(或“logged_in”)的cookie。然后,您可以在每次页面加载时测试“注销”cookie,而无需加载会话和数据库


实际上,由于您将拥有机器人和其他非cookie用户代理,因此最好在登录时创建一个“登录”cookie,然后在其他任何地方检查是否有虚假/不存在的cookie作为来宾的标志。

是的,正如我所述,当前方法包括加载系统、数据库(假设您的会话使用数据库),最后启动会话,如果您只想显示缓存的内容,这将是一种浪费

也许除了会话cookie之外,您还可以设置一个名为“logged_out”(或“logged_in”)的cookie。然后,您可以在每次页面加载时测试“注销”cookie,而无需加载会话和数据库


事实上,由于您将拥有机器人和其他非cookie用户代理,因此最好在登录时创建一个“登录”cookie,然后在其他任何地方检查一个虚假/不存在的cookie作为来宾的标志。

是的,但问题是您仍然必须加载数据库和会话处理程序(可能还有)系统的大部分。是的,问题是您仍然必须加载数据库和会话处理程序(可能还有)大部分系统。是的,问题是您仍然必须加载数据库和会话处理程序(可能还有)大部分系统。这违背了整个缓存的目的。六羟甲基三聚氰胺六甲醚。。。我想我已经说过了;P@Xeoncross:你