TYPO3 扩展:从 javascript 访问 TYPO3 会话变量?
TYPO3 extension: Accessing the TYPO3 session variable from javascript?
这听起来可能有点不准确,但是否可以更改 TYPO3 会话变量
$GLOBALS["TSFE"]->fe_user->setKey('ses', 't_minus', 0);
从 javascript 以某种方式在 listAction 中处理变量以指定要显示或不显示的某些记录?
更详细地说:我正在处理日历的扩展。日历是在 javascript 中生成的(这是我不负责的部分)。 listAction 基本上生成一个 JSON 对象或记录,这些对象或记录在特定时间间隔内(过去 2 周,未来 3 周)具有 unix 时间戳。 javascript 有一个按钮 "one week forward"/"one week back"。前一周应从会话变量中减去 604800(1 周),前一周应将 604800(1 周)添加到会话变量。
在 listAction 中,会话变量调整时间戳间隔(n 周 forward/backward)或者应该将哪些记录放入 JSON 对象。
是否可以从 javascript 访问会话变量,或者这是否违反了安全要求?
我会创建一个 PHP 函数来更改此会话变量(例如,使用 eID 功能)并通过 AJAX 在 JavaScript 中调用该函数。
更多请看这里:https://seethroughweb.com/ajax-with-typo3/
(抱歉,找不到更好的英文手册,您需要使用新的 class 名称)
无法通过 javascript 直接更改 TYPO3 会话内容。可能您可以通过 javascript 访问 PHP 会话 cookie - 我不太确定 - 但会话变量存储在 TYPO3 数据库中。它们通过 PHP 进行序列化和加密,您将无法通过 Javascript 访问这些内容。这只能通过 PHP.
您可以做什么:在您的控制器中创建 oneWeekForwardAction
和 oneWeekBackAction
。阅读您的会话 cookie 并根据您的需要修改它。这些操作可以通过 Ajax 激活。为此,您必须提前在 Fluid 模板中使用 f:uri.action 创建适当的链接!将这些字符串放在 JSON 对象中的某处。然后你可以将这些链接连接到点击事件。
不要忘记使用 page.config.disableAllHeaderCode
生成特殊的 AJAX 页面类型。如果您搜索此和 Ajax
,您将找到示例 f.e。这个:
[http://www.sklein-medien.de/tutorials/detail/erstellung-einer-typo3-extension-mit-ajax-aufruf/]
它来自 2016 年并使用 Extbase/Fluid。
这不是安全问题。会话的想法是,通过一系列多个 HTTP 请求绑定到服务器上的相同数据。 Javascript 住在浏览器中。 JavaScript 无法直接访问服务器上的数据。
如果你只负责 JS,那么其他人的工作就是为你提供会话数据的接口。
是的,我认为将浏览器中的计算与服务器中的数据同步是个好主意,否则日历数据很快就会不同步。我什至会走那么远,服务器应该负责这种计算,因为它比 JS 更可靠。所以负责 PHP 的人应该完成主要工作并向您提供结果,即通过 AJAX.
这听起来可能有点不准确,但是否可以更改 TYPO3 会话变量
$GLOBALS["TSFE"]->fe_user->setKey('ses', 't_minus', 0);
从 javascript 以某种方式在 listAction 中处理变量以指定要显示或不显示的某些记录?
更详细地说:我正在处理日历的扩展。日历是在 javascript 中生成的(这是我不负责的部分)。 listAction 基本上生成一个 JSON 对象或记录,这些对象或记录在特定时间间隔内(过去 2 周,未来 3 周)具有 unix 时间戳。 javascript 有一个按钮 "one week forward"/"one week back"。前一周应从会话变量中减去 604800(1 周),前一周应将 604800(1 周)添加到会话变量。
在 listAction 中,会话变量调整时间戳间隔(n 周 forward/backward)或者应该将哪些记录放入 JSON 对象。
是否可以从 javascript 访问会话变量,或者这是否违反了安全要求?
我会创建一个 PHP 函数来更改此会话变量(例如,使用 eID 功能)并通过 AJAX 在 JavaScript 中调用该函数。 更多请看这里:https://seethroughweb.com/ajax-with-typo3/
(抱歉,找不到更好的英文手册,您需要使用新的 class 名称)
无法通过 javascript 直接更改 TYPO3 会话内容。可能您可以通过 javascript 访问 PHP 会话 cookie - 我不太确定 - 但会话变量存储在 TYPO3 数据库中。它们通过 PHP 进行序列化和加密,您将无法通过 Javascript 访问这些内容。这只能通过 PHP.
您可以做什么:在您的控制器中创建 oneWeekForwardAction
和 oneWeekBackAction
。阅读您的会话 cookie 并根据您的需要修改它。这些操作可以通过 Ajax 激活。为此,您必须提前在 Fluid 模板中使用 f:uri.action 创建适当的链接!将这些字符串放在 JSON 对象中的某处。然后你可以将这些链接连接到点击事件。
不要忘记使用 page.config.disableAllHeaderCode
生成特殊的 AJAX 页面类型。如果您搜索此和 Ajax
,您将找到示例 f.e。这个:
[http://www.sklein-medien.de/tutorials/detail/erstellung-einer-typo3-extension-mit-ajax-aufruf/]
它来自 2016 年并使用 Extbase/Fluid。
这不是安全问题。会话的想法是,通过一系列多个 HTTP 请求绑定到服务器上的相同数据。 Javascript 住在浏览器中。 JavaScript 无法直接访问服务器上的数据。
如果你只负责 JS,那么其他人的工作就是为你提供会话数据的接口。
是的,我认为将浏览器中的计算与服务器中的数据同步是个好主意,否则日历数据很快就会不同步。我什至会走那么远,服务器应该负责这种计算,因为它比 JS 更可靠。所以负责 PHP 的人应该完成主要工作并向您提供结果,即通过 AJAX.