【问题标题】:Sessions in PHP 5.3.3 and kirbyPHP 5.3.3 和 kirby 中的会话
【发布时间】:2014-06-02 09:10:15
【问题描述】:

情况

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

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

这一切都在我的本地 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

失败(远程)

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

在本地运行时的屏幕截图

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

【问题讨论】:

    标签: php session kirby


    【解决方案1】:

    原来是 CMS 出了问题,文件缓存已打开,没有忽略“登录”、“注销”和“外联网”文件(都与客户区域相关),必须添加:

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

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

    这解决了登录表单被缓存的问题,因此不会在服务器上命中任何内容。现在表单没有被缓存。

    【讨论】:

      猜你喜欢
      • 2012-01-02
      • 2021-12-10
      • 2022-06-12
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 2017-10-31
      相关资源
      最近更新 更多