PHP 会话与 Cookies [重复]

Posted

技术标签:

【中文标题】PHP 会话与 Cookies [重复]【英文标题】:PHP Sessions vs. Cookies [duplicate] 【发布时间】:2012-07-07 07:45:54 【问题描述】:

可能重复:Cookie VS Sessionphp: How do Cookies and Sessions work?

我正在努力学习 PHP。我有一个项目网站,其中不断生成数字,并更改并存储在 javascript 变量中。除了在用户点击“存储到数据库”按钮时将这些变量存储到数据库之外,几乎没有涉及 php。今天我正在使用该网站,导航到另一个网站并返回,我的所有数据都消失了,因为我没有先将其存储到数据库中。我想保存该数据,以便在我离开页面时重新填充。这样做的最佳方法是什么? php 会话、cookie 或 javascript cookie?请指教,提前谢谢!

【问题讨论】:

【参考方案1】:

如果您想长期存储 PHP cookie,但不关心用户是否更改值。

如果您不希望用户能够更改值但不需要长期存储,则 PHP 会话(这听起来像您想要的)

如果您想长期存储并且不希望用户有权更改值,则可以使用会话和 cookie。您可能希望使用数据库,以便您可以使用数据库检查 cookie 信息以查看它是否正确,然后将数据存储在会话中以便于访问。

这是有多少网站“记住用户”。他们存储一个带有用户名和密码的 cookie,然后当用户访问该网站时(如果未设置会话),他们会使用数据库检查用户名和密码,然后然后如果它是正确的,他们会创建一个特定于该用户的会话。

【讨论】:

按照你的逻辑,通过使用会话和cookie,用户可以在会话过期后操作数据..? 'PHP会话如果你不希望用户有能力改变值'会话劫持? 使用 cookie 存储用户信息,使用数据库进行检查,然后使用会话快速访问您确认正确的信息,而无需使用许多资源。至于劫持会话劫持的机会几乎没有..你需要猜测一个20位的随机代码!【参考方案2】:

当您想要临时存储一些数据时使用会话(对于一个会话 - 直到用户关闭他的浏览器)。

如果您想更长时间地存储数据(例如登录凭证),请使用 cookies

您还应该记住,用户可以更改存储的 cookie 的值,但不能更改会话,因为会话存储在服务器上,但 cookie 存储在客户端的计算机上。

【讨论】:

【参考方案3】:

我相信 cookie 是您需要的答案,因为 php 会话仅存储在页面加载之间,因此您已经有效地将数据发送回服务器(不是您想要的),据我所知,javascript cookie 是只是用 javascript 设置的 cookie。

所以澄清一下,我认为您应该在每次创建一些数据时设置一个 cookie(通过使用 javascript) - 它将存储在浏览器本地(仍然相当不稳定),直到用户按下保存按钮,它将在哪里发送回服务器。

【讨论】:

【参考方案4】:

PHP和Javascript cookie是一回事,它们只是数据存储客户端,php和javascript是用来存储的技术他们,仅此而已。

由于 PHP cookie 只能在将输出发送到页面之前设置,因此 Javascript cookie 似乎是最好的。

您将使用 cookie 而不是会话,因为您提到您将离开页面,在这种情况下会话将终止并且您会丢失数据。

【讨论】:

【参考方案5】:

php 会话、cookie 或 javascript cookie?

有一个会话或 cookie,所以有 两个 东西而不是三个。

现在会话也是一个cookie,但保存在服务器上,不像简单的JS cookie保存在用户的机器中。

我想保存该数据,以便在我离开页面时重新填充

如果是敏感信息,请始终使用数据库进行存储,如果是敏感数据:

使用 cookie 或 localStorage,但它可以被用户删除 使用用户无法删除但会根据 php.ini 设置过期的会话

另一方面,要永久保存,请改用数据库。

【讨论】:

以上是关于PHP 会话与 Cookies [重复]的主要内容,如果未能解决你的问题,请参考以下文章

java会话管理之Cookie基础(写着玩)

php PHP Cookies和会话

带有加密cookies的PHP会话类

059.Python前端Django组件cooki和session

cookie

Servlet 之会话cookie与session