我想知道是否使用SESSION变量将数据从一个PHP页面传递到另一个PHP页面是有效的。我问这个是因为我认为SESSIONS只是用来让用户登录网站,而是作为cookie的替代品。通过members.php?name=Joe&age=28
等URI将数据(非敏感)从一个页面传递到另一个页面会不会更好?
答案 0 :(得分:5)
PHP会话将cookie写入浏览器,然后将与该会话关联的数据存储在磁盘上;它与include()一样昂贵,可以在下一页加载时读取它,也就是说完全无关紧要。
此外,除非您创建允许它们的机制,否则用户无法更改会话数据;他们可以轻松搞乱查询字符串。
简短回答:是的,效率很高。
答案 1 :(得分:2)
取决于你在做什么。如果该页面要求信息正常运行并且不在登录后面,则传递查询字符串是可行的方法(例如搜索结果,产品页面)。如果它在登录后面,则使用会话将允许您保持URL清洁,并且还使用户难以滥用页面(例如,交换查询字符串中的数据)。
答案 2 :(得分:2)
会话对很多事情都很有用,而不仅仅是登录信息。它们非常适合在POST /重定向/ GET循环期间保存状态消息或跟踪用户会话状态的任何其他内容(因此名称) - 但仅限于当前会话,而不是长期永久配置选项。 / p>
就效率而言,您需要记住会话中的任何内容都需要序列化和放大。在每个页面加载时反序列化。存储名称和年龄不会增加太多。添加兆字节的图像上传可能会很糟糕。
比效率考虑更重要的是要记住会话数据只是暂时持久的。如果你想知道Joe是28,那么它应该进入数据库。如果它仅对单个页面加载有用,则它应该保留在URL中或被POST。如果你有兴趣记住它几分钟,会话可能就是放置它的地方。
答案 3 :(得分:0)
是的,您可以在SESSION中存储数据和消息,并且可以从任何页面访问它。但请记住,SESSION使用浏览器支持来存储数据。它们可以由用户手动删除