如果cookie和session id在URL中的可见性被禁用,会话如何在php中工作


How session work in php if cookies and session id visibility in URL is disable

我读了一些文章,之后我明白了如果客户端系统上没有启用cookie,会话将在php中工作。因此,如果客户端系统上没有启用cookie,那么服务器将为用户创建一个唯一的会话id,服务器将通过使用这个唯一id来识别客户端。现在,如果没有启用cookie,会话id将显示在url中,如果页面上有任何表单,那么输入类型隐藏将被命名为PHPSESSID。现在假设我在我的网站上打开一个没有任何形式的页面,因为如果在php.ini中进行了更改,那么phpsessid将在url中不可见,那么我将如何获得该页面上的会话数据。请解释一下,我在stackoverflow上看到过其他答案,没有人考虑过这种情况

我会查看以下两个链接:

  • Stackoverflow
  • Session introduction - PHP

这仍然是可能的,但不建议这样做。一旦用户关闭浏览器,他们的会话就会丢失,他们必须重新登录。

好的,假设您有一个根本不接受cookie的客户机。并且您的web服务器已禁用URL SESSIONID转发。你在问会发生什么?

绝对不会发生什么。服务器将发出一个cookie,客户端将拒绝它。用户将无法登录,即使他提供了正确的密码。我的意思是他将成功登录,但在下一次请求时,他将被要求再次登录。

如果你想避免这种情况,你可以设计不同的身份验证。例如,您可以使用OAUTH或任何其他基于令牌的身份验证。然后服务器将发送令牌(s)而不使用Cookie头,客户端JavaScript将存储它(即在Web Storage中)并在每个请求时将其发送回服务器。这种方法在基于ajax的应用程序中运行良好。