PHP-何时调用session\u set\u save\u handler()的read()函数?

PHP-何时调用session\u set\u save\u handler()的read()函数?,php,session,Php,Session,我正在开发一个会话管理类,它包括登录和mySQL。php文档说,在调用session_start或自动启动session时调用read方法。什么时候自动启动?开放式方法和阅读式方法有什么区别 我有这个代码片段,如果它有帮助的话,我想知道session_start属于哪里,或者它在哪里好。整个代码没有按照我希望的方式工作,每次都重置会话,我不知道为什么 公共功能uu构造$conn{ $this->conn=$conn; 设置处理程序 会话\u设置\u保存\u处理程序 数组$this,“\u会话\u

我正在开发一个会话管理类,它包括登录和mySQL。php文档说,在调用session_start或自动启动session时调用read方法。什么时候自动启动?开放式方法和阅读式方法有什么区别

我有这个代码片段,如果它有帮助的话,我想知道session_start属于哪里,或者它在哪里好。整个代码没有按照我希望的方式工作,每次都重置会话,我不知道为什么

公共功能uu构造$conn{ $this->conn=$conn; 设置处理程序 会话\u设置\u保存\u处理程序 数组$this,“\u会话\u打开\u方法”, 数组$this,“\u会话\u关闭\u方法”, 数组$this,“\u session\u read\u method”, 数组$this,“\u session\u write\u method”, 数组$this,“\u会话\u销毁\u方法”, 数组$this,“\u会话\u gc\u方法” ; 检查通过的cookie-如果是-如果看起来不正确,我们将 马上擦洗 $strUserAgent=$\服务器[HTTP\用户\代理]; 如果设置为$\u COOKIE[PHPSESSID]{ 安全和年龄检查 $this->php_session_id=$_COOKIE[PHPSESSID]; $stmt=从http_会话中选择id,其中ascii_会话_id='。$this->php_会话_id'。现在-创建<.$strUserAgent.$this->session_lifespan.seconds和user_agent='。'; 打印 var_dump$result->rowCount; 清理散乱的会话变量 //$result=$this->conn->queryDELETE FROM session\u变量,其中session\u id不在SELECT id FROM http\u session中; 摆脱这一个…这将迫使PHP给我们另一个 未设置$_COOKIE[PHPSESSID]; } } 调用session_start方法以开始工作 设置cookie的生存时间 session\u set\u cookie\u参数$this->session\u寿命; 会议开始; } 提前谢谢你! 编辑: 是的,我知道sql注入可以通过会话标识符进行,但这不是我现在的重点。谢谢你,洛兹!
这段代码实际上来自一本书,Professional PHP6。

php.ini配置中有一个键,名为session.auto\u start。您可以将其设置为1,使会话在请求启动时自动启动。默认情况下,它设置为0


此外,在read方法之前调用open方法,如果会话成功启动,则第一个方法必须仅返回true,否则返回false。read方法必须始终返回会话编码的序列化字符串。

您知道可以将$\u SERVER[HTTP\u USER\u AGENT]设置为sql注入值,对吗?请确保在编写自己的会话处理程序时考虑并发性。@rambo如何以及为什么这样做?“为什么?”jasonszhao抱歉,我不想为你准备答案。但是,您应该能够通过谷歌搜索“php会话并发性”并了解更多信息。您所说的请求启动到底是什么意思?我认为每次您向服务器发出请求时,如果您的所有请求都使用会话,您可以使用此功能,但我认为任何其他可能导致过载的功能都可以使用