相关疑难解决方法(0)

如何在PHP中使用HTTP缓存头

我有一个PHP 5.1.0网站(实际上它是5.2.9但它也必须在5.1.0+上运行).

页面是动态生成的,但其中许多都是静态的.静态我的意思是内容不会改变,但内容周围的"模板"会随着时间的推移而改变.

我知道他们已经有几个缓存系统和PHP框架,但我的主机没有安装APC或Memcached,我没有为这个特定项目使用任何框架.

我想要缓存页面(我认为默认情况下PHP"禁止"缓存).到目前为止我正在使用:

session_cache_limiter('private'); //Aim at 'public'
session_cache_expire(180);
header("Content-type: $documentMimeType; charset=$documentCharset");
header('Vary: Accept');
header("Content-language: $currentLanguage");
Run Code Online (Sandbox Code Playgroud)

我读了很多教程,但是我找不到简单的东西(我知道缓存是复杂的,但我只需要一些基本的东西).

什么是"必须"有标题发送来帮助缓存?

php caching http

59
推荐指数
6
解决办法
7万
查看次数

如何在客户端计算机上删除PHPSESSID

更新问题:

  • 在某些浏览器上,我们有两个PHPSESSID.
  • 我脚本中的任何地方都没有设置一个PHPSESSID
  • 它有HOST(而不是我设置的PHPSESSID的DOMAIN),如www.mywebsite.com
  • 我尝试使用setcookie删除它:setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/', 'www.mywebsite.com');但是这失败了.
  • 尝试使用以下命令删除cookie:setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/');导致我设置的PHPSESSID被删除.
  • 我试过session_name用来重命名我设置的SESSION.这可以工作,但几分钟后几次崩溃了我的服务器.
  • 我没有选择.

我正在我的网站上使用PHP会话.

会话路径是/文件夹,稍后我改为/以适应新目的.

现在,老用户无法登录.

看起来他们现在有两个PHPSESSID存储在他们的浏览器上 - 一个带有路径/文件夹,另一个带有/.

我该怎么做才能确保旧用户可以登录,同时确保会话在整个网站范围内使用"/".

更多信息

当我说两个phpsessionid时,请参考图像

两个PHPSESSID

  1. 如果我使用,登录工作

一个. session_set_cookie_params(864000, '/cv', '.website.com', 0, 1);

但如果我使用,则无法工作:

B. session_set_cookie_params(864000, '/', '.website.com', 0, 1);

  • 如果我使用上面的版本2A,会话将仅在/ cv中可用,而在其他网站文件夹中不可用,例如./夹.

使用JAVASCRIPT删除PHPSESSID的更新

  • 当我运行alert(document.cookie)时,它会显示除PHPSESSID之外的所有cookie
  • 因此,删除PHPSESSID cookie的所有尝试都会失败,而其他cookie可能会被删除.

使用PHP删除PHPSESSID的更新

  • 当我var_dump($_COOKIE['PHPSESSID']);返回的是具有path/cv的PHPSESSID的值
  • 尝试删除setcookie ("PHPSESSID", "", time() - 3600);失败.

php session

26
推荐指数
3
解决办法
1万
查看次数

PHP - 为什么我不能摆脱这个会话id cookie?

我正在尝试解决Web应用程序的注销功能.当您登录时,该应用程序会为其域设置多个Cookie.这是当前的注销程序:

  • 单击一个链接,该链接将您转到注销页面
  • 注销页面运行一个函数,该函数调用session_destroy()并循环遍历域的所有cookie,并将它们设置为过去(请参阅下面的代码)
  • 然后,注销页面重定向到登录页面,这是直接的HTML.

在此过程结束时,所有其他cookie都未设置,但PHPSESSIDcookie仍然存在,具有相同的值,并且仍设置为在会话结束时到期.

我在这里错过了什么?

这是我上面提到的注销功能:

function log_out_current_user() {

        // Destroy the session
        if (isset($_SESSION)) {
            session_destroy();
        }

        // Expire all of the user's cookies for this domain:
        // give them a blank value and set them to expire
        // in the past
        if (isset($_SERVER['HTTP_COOKIE'])) {
            $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
            foreach($cookies as $cookie) {
                $parts = explode('=', $cookie);
                $name = trim($parts[0]);
                setcookie($name, '', time()-1000);
                setcookie($name, '', time()-1000, '/');
            }
            // Explicitly unset this cookie - …
Run Code Online (Sandbox Code Playgroud)

php cookies session session-cookies

16
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×3

session ×2

caching ×1

cookies ×1

http ×1

session-cookies ×1