PHP 5.3.3和kirby中的会话

时间:2014-06-02 09:10:15

标签: php session kirby

情况

我在客户端网站上实现了kirby Auth插件的修改版本,它基本上就是这样工作

  • 用户帐户是简单的kirby内容文件,其标题用作登录名,密码字段包含用户密码的bcrypt加密版本
  • 在网站上,访问者可以点击“客户专区”,转到由修改后的auth插件管理的模板(重定向到“登录”表单)。
  • 该网站是多语言的。因此,帐户文件看起来像content/extranet/login/login.fr.txt或作为示例content/extranet/bastian/bastian.fr.txt,这是修改的Auth插件正在查找的内容,它找到文件并读取它,检查密码,然后登录用户。
  • 此系统要求帐户页面标题与其网址相同,并始终为不可见页面
  • 用户已登录,只能在“安全»模板中查看其文件夹中的文件

这一切在我的本地MAMP服务器上运行良好,如截图所示,但在生产服务器上http://www.driving-evolution.com,这不起作用,我不知道为什么,我已查看很多地方,我不明白发生了什么。 (它也不适用于登台服务器)

在生产服务器上,您输入好的或坏的登录信息,表单不会显示任何错误消息,也不会记录用户。起初我认为这可能是因为我的bcrypt安装,但它不是,因为我禁用它(并使用普通密码代替),它仍然无法正常工作。

问题似乎不是来自这里的插件,而是来自我的实时PHP堆栈和本地php堆栈之间的区别(我的猜测是在php会话处理上)。

远程PHP是5.3.3

以下是两个安装中CURL的示例输出:

工作(本地)

curl -d "username=test&password=test" -i devo.loc/fr/login

HTTP/1.1 302 Found
Date: Tue, 27 May 2014 12:59:49 GMT
Server: Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/0.9.8y DAV/2 PHP/5.5.3
X-Powered-By: PHP/5.5.3
Set-Cookie: PHPSESSID=9249a942248a2382d8eb10090bf5d825; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: authFrontend=mc06csp25; expires=Wed, 28-May-2014 12:59:49 GMT; Max-Age=86400; path=/
Set-Cookie: PHPSESSID=b38ec0b342356c2c38778e4a6925f085; path=/
Set-Cookie: authFrontend=8qyyn; expires=Wed, 28-May-2014 12:59:49 GMT; Max-Age=86400; path=/
Location: http://devo.loc/fr/extranet
X-UA-Compatible: IE=edge
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=utf-8

FAILING(远程)

curl -d "username=test&password=test" -i www.driving-evolution.com/fr/login

HTTP/1.1 200 OK
Date: Tue, 27 May 2014 13:01:32 GMT
Server: Apache
X-Powered-By: PHP/5.3.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=6j9o1i4djetojtbg444i51efm7; path=/
Vary: Accept-Encoding
X-UA-Compatible: IE=edge
Connection: Keep-Alive, close
Transfer-Encoding: chunked
Content-Type: text/html

有用的链接

远程PHPVER:http://www.driving-evolution.com/phpver.php

在本地

上工作时屏幕显示

login-good login-done

希望有人能够帮助我!询问任何进一步的信息,我会给它。

1 个答案:

答案 0 :(得分:0)

原来它是CMS的问题,文件缓存已打开而不是忽略“登录”,“注销”和“外联网”文件(都与客户区域相关),不得不添加:

c::set('cache.ignore', array('api', 'sitemap', 'extranet', 'account', 'login', 'logout'));

到我的kirby配置(api和站点地图无关)。

这可以解决问题,因为登录表单已缓存,因此无法点击服务器上的任何内容。现在表单没有缓存。