小编Chr*_*off的帖子

CakePHP:session,autoRegenerate,requestCountdown,AJAX的问题

我在其他地方研究过的

这个问题的答案解释了只要用户处于活动状态,如何使用autoRegenerate和requestCountdown来延长会话时间.

这个问题的答案解释了ajax调用会发生什么:

如果您停留在同一页面上,JavaScript会发出请求,生成新的session_id,并且不会记录新的session_id.

所有后续的ajax请求都使用旧的session_id,该session_id被声明为无效,并返回空会话.

在其他地方有人说有些浏览器发送另一个带有ajax请求的userAgent,如果必须保证ajax调用有效,则必须将Session.checkAgent设置为false.但由于那些ajax调用只是失败有时我不认为这是问题的原因.

我的问题是

我已将requestCountdown设置为1,但随后我在页面加载时自动执行ajax请求的页面上收到错误.我将requestCountdown增加到4,这在大多数情况下都应该足够了.但是某些浏览器的某些用户会收到错误消息,因为一个或多个ajax调用会收到"403 Forbidden"作为响应.对于同一页面,有时会出现错误,有时则不会出现错误.

我想要的是如果会话长度是例如30分钟并且用户打开一个页面(或触发导致ajax调用的事件),那么在第29分钟,会话应该再延长30分钟.

但我似乎陷入了两个问题:

  1. 如果倒计时设置为大于1的值并且用户碰巧访问不包含任何ajax请求的页面,则倒计时值仅减少1,它不会变为0,并且会话不会重新生成.例如,如果倒计时设置为10,则用户必须单击10次才能重新生成会话.
  2. 如果倒计时设置为1,则会在每次请求时重新生成会话,但在某些浏览器上,有时某些ajax调用将失败.

我的问题

为了确保我正确理解它:一个会话不能简单地延长,它必须被"重新生成",这意味着会话ID被改变了?

也许这在概念上都是正确的,但我想知道我是否只是错过了一个额外的设置或某些东西让它工作?

示例性请求和响应头(来自我的测试机)

Request
-------
POST /proxies/refreshProxiesList/0 HTTP/1.1
Host: localhost:84
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: */*
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Referer: http://localhost:84/users/home
Cookie: CakeCookie[lang]=de; CAKEPHP=b4o4ik71rven5478te1e0asjc6
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 0

Response
--------
HTTP/1.1 403 Forbidden
Date: Tue, 18 Feb 2014 10:24:52 GMT
Server: Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
X-Powered-By: PHP/5.5.3
Content-Length: 0
Keep-Alive: …
Run Code Online (Sandbox Code Playgroud)

ajax cakephp

6
推荐指数
1
解决办法
1720
查看次数

TYPO3:使用fluid的日期视图助手内联作为翻译视图助手的参数

我目前正在开发一些在TYPO3 6中使用的扩展.

在一个视图中,我有包含日期​​字段的数据库记录.我可以输出以下日期值:

<f:format.date format="d.m.Y H:i:s">{record.validend}</f:format.date>
Run Code Online (Sandbox Code Playgroud)

但是,我需要一个已翻译的消息,所以我想使用translate视图助手并将格式化的日期放在arguments属性中.到目前为止没有成功.

我试过了:

<f:translate key="{msg_id}" arguments="{0: code, 1: {f:format.date(date: record.validend, format: 'd.m.Y H:i:s')}}" htmlEscape="0" />
Run Code Online (Sandbox Code Playgroud)

…和…

<f:translate key="{msg_id}" arguments="{0: code, 1: {record.validend -> f:format.date(format: 'd.m.Y H:i:s')}}" htmlEscape="0" />
Run Code Online (Sandbox Code Playgroud)

...遵循本指南:http://forge.typo3.org/projects/typo3v4-mvc/wiki/Fluid_Inline_Notation

但是,我的符号中似乎存在一些语法错误,迫使流体将整个事物解释为字符串,从而导致错误,导致参数attribut应该是一个数组.

谁能告诉我,我想要的是什么,我需要什么语法?

最好的祝福

基督教

typo3 fluid view-helpers

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

允许Apache/PHP对已安装目录进行读/写访问

我们有一个使用apache httpd和php在linux服务器上运行的网站.在那台服务器上,Windows服务器上的某个目录就像我们所说的那样被挂载/mnt/some_directory/.我可以使用自己的用户帐户使用WinSCP或SSH浏览此目录.

我也可以在SSH中执行以下操作:

php -r "print_r(file_get_contents('/mnt/some_directory/file_name.txt'));"
Run Code Online (Sandbox Code Playgroud)

并查看该文件的内容.

我们需要读取一个文件并从该目录解析,以便将其导入到网站使用的数据库中.但是当网站上的fopen或file_get_contents被我们获得权限拒绝错误时.

我对Web服务器的访问权限有限(以及对*nix和apache配置的了解有限),但是应该解决这个问题的管理员也缺乏这方面的知识,我需要解决这个问题,这就是我在这里问的原因. .

管理员所做的是将挂载目录的组和所有权设置为"apache",即httpd进程正在运行的用户.但这没有帮助.

据我所知,默认情况下不允许访问webroot以外的文件.在httpd.conf中设置DIRECTORY指令是否足够/mnt/some_directory/?或者还有什么必须做的吗?

php apache mount

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

标签 统计

ajax ×1

apache ×1

cakephp ×1

fluid ×1

mount ×1

php ×1

typo3 ×1

view-helpers ×1