3

我正在为一家可能拥有 1000-2000 名用户的大公司构建一个 MySQL/PHP 票务系统应用程序。这是我的第一个真正的企业应用程序,所以我真的想确保我根据最佳实践正确地做事。我不是你所说的经验丰富的开发人员。我知道如何编写代码并使其工作,但我从来没有导师或任何人来纠正我的工作,所以我不知道我做事的方式是好是坏……甚至是倒退。

我们对系统有 4 级访问权限,因此应用程序需要从用户会话中读取这些权限。我的搭档做后端数据库编程,我负责前端接口​​。在过去的 6 个月里,我一直在使用纯 Jquery 编写小工具,因此我已经成为它的忠实粉丝,并且发现我可以用它很快地做事。对于界面工作,我喜欢它。但是,会话管理只能在 PHP afaik 中完成。

这不一定是个问题,因为我可以在同一页面上包含一些 JS 和 PHP,但如果我不需要的话,我不希望这样做。例如,我的登录页面只是 JS/HTML,它向 PHP 登录 Web 服务发出 ajax 请求。任何时候我可以将处理任务委托给 PHP,我更喜欢编写一个可以在 AJAX 调用中使用的服务。

但是,如果我必须处理会话,我认为我将无法做到这一点。或者我可以吗?我很想听听您的专业人士关于您认为与此相关的最佳实践的意见。

提前谢谢了。

4

3 回答 3

0

对于初学者,您应该使用一些 PHP 框架并检查它们如何处理 JS。

我推荐Yii 框架

于 2012-08-01T08:43:37.113 回答
0

就我个人而言,我不会让 JavaScript 知道任何会话。权限控制是在创建页面时在 PHP 中完成的;您可以根据访问控制选择隐藏部分页面。这样界面就不必担心权限问题,它适用于页面上的当前内容。

PHP 通常使用 cookie 传播会话(我建议使用 HttpOnly 选项);这些在 AJAX 调用中被 JavaScript 透明地使用,因此您的会话应该按预期工作。

如果您必须支持不支持(或者更确切地说,拒绝)cookie 的浏览器并且您想使用 AJAX,您需要找到其他方法,例如让 PHP 生成一段将初始化会话 id 的 JavaScript,以便当您进行 AJAX 调用时,脚本可以通过 POST、GET 或特殊的 HTTP 标头传递它。

于 2012-08-01T08:56:29.140 回答
0

如果通过会话管理您的意思是访问控制,那么只要您通过 AJAX 调用等获得所需的信息(真的看不到任何其他方式......),那么服务器端应该能够处理访问等美好的。如果您在服务器端使用常见的状态码(400、401、403 等),那么您可以确保 jQuery 以良好的方式处理这些状态码,并且事情应该很容易。

  • 把我可以看的票给我。抱歉,您需要登录,401。
  • 我现在登录了。好的,这是您可以使用的门票清单。
  • 我想看 56 号票。抱歉,403 不让你看。
  • 我想将此评论添加到票号 42。抱歉,您的输入中缺少某些内容,400。

请记住,在服务器端,始终在适当的地方检查访问权限。如果用户应该具有访问权限,则不要假设用户具有访问权限。核实 :)

无论如何,这取决于您所说的会话管理是什么意思,所以我可能会离开这里......

于 2012-08-01T08:57:14.587 回答