我有一个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)
我读了很多教程,但是我找不到简单的东西(我知道缓存是复杂的,但我只需要一些基本的东西).
什么是"必须"有标题发送来帮助缓存?
更新问题:
setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/', 'www.mywebsite.com');但是这失败了.setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/');导致我设置的PHPSESSID被删除.session_name用来重命名我设置的SESSION.这可以工作,但几分钟后几次崩溃了我的服务器.我正在我的网站上使用PHP会话.
会话路径是/文件夹,稍后我改为/以适应新目的.
现在,老用户无法登录.
看起来他们现在有两个PHPSESSID存储在他们的浏览器上 - 一个带有路径/文件夹,另一个带有/.
我该怎么做才能确保旧用户可以登录,同时确保会话在整个网站范围内使用"/".
更多信息
当我说两个phpsessionid时,请参考图像
一个. session_set_cookie_params(864000, '/cv', '.website.com', 0, 1);
但如果我使用,则无法工作:
B. session_set_cookie_params(864000, '/', '.website.com', 0, 1);
使用JAVASCRIPT删除PHPSESSID的更新
使用PHP删除PHPSESSID的更新
var_dump($_COOKIE['PHPSESSID']);返回的是具有path/cv的PHPSESSID的值setcookie ("PHPSESSID", "", time() - 3600);失败.我正在尝试解决Web应用程序的注销功能.当您登录时,该应用程序会为其域设置多个Cookie.这是当前的注销程序:
session_destroy()并循环遍历域的所有cookie,并将它们设置为过去(请参阅下面的代码)在此过程结束时,所有其他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)