Perl如何以不同于PHP的方式处理会话?

时间:2010-12-13 10:40:21

标签: perl session

我正在尝试克隆用Perl编写的商业学生管理系统。我想使用PHP,因为我没有Perl的经验。
我现在正在尝试设置登录系统,它应该(必须是?)用PHPSESSID完成,对吧?现在,在PHP中,我可以通过GET,POST和COOKIE传输会话ID。

Perl网站不会向URL添加参数(GET),也不会在我的计算机上保存cookie(COOKIE)。也没有可以包含隐藏字段的表单(在PHP中是POST,对吗?)

有人能告诉我Perl如何记住登录用户吗?

2 个答案:

答案 0 :(得分:5)

Perl采用了比PHP更基于“工具包”的方法来构建Web应用程序,因为Perl并非专为Web工作而设计。因此它没有任何内置的Web应用程序会话管理方式;相反,CPAN上有许多模块以多种不同的方式实现会话管理。

如果你要确定有问题的学生管理系统并提供一个URL,我们或许可以从外面查看它并确定它在做什么,但是,实际上,我怀疑你是否真的需要使用相同的会话管理系统作为现有应用程序,除非您想在原始版本和克隆之间实现单点登录[1]。专注于克隆用户可见的界面和功能,而不是其背后的实现细节。

[1] ......除非你还计划在后端使用会话数据库,否则无论如何都是徒劳的,因为如果他们不共享那些数据,他们都不会识别对方的会话ID。 / p>

答案 1 :(得分:2)

为了完整起见,存在/传输会话信息的其他非标准方式比您列出的3种方法(尽管我严重怀疑其中任何一种都在您的短信中使用) 。其中:

  • 将Cookie数据作为DOM的一部分发送(例如在HTML中),并使用DOM从页面上访问JavaScript

  • 或者,首先将烹饪数据存储为JavaScript的数据。

  • AJAX调用。例如。启用会话的逻辑全部在AJAX URL中处理,而不是主URL。是的,我知道这完全搞砸了。但可行。

  • 不要将cookie存储在主cookie数据库中(因此您无法使用标准cookie查看方法找到它)。有关如何完成的详细信息,请谷歌“evercookie”提供一个非常酷的方法,通过利用多达10个冗余存储选项持久存储cookie信息 - 一个好的介绍是http://blog.depthsecurity.com/2010/09/super-persistent-cookies-evercookie.html

所有这一切,我完全同意Dave的回答 - 只需使用PHP的最佳实践机制来实现功能,而不是克隆webapp中可能特定于perl和可能奇怪的实现。