如果我的web服务器上有一个XML数据库;
<Database>
<Client sid="0123456789abcdefg" name="John Doe" email="johndoe@mail.com" hash="9876543210abcdefg" salt="abcdefg9876543210">
<Setting>A Setting</Setting>
<Setting>Another Setting</Setting>
</Client>
...
</Database>
我用hash和salt登录,检索SID,并通过PHP重定向到主页;
header("Location: home.html?sid=" . $sid);
然后通过JavaScript使用位置栏中的SID从同一数据库中检索用户设置,我会公开我的客户端的哈希吗?
有没有更好的方法,或者更标准的方法,在网上设置和获取用户设置?
附言:除非你有充分的理由,否则我真的,真的,不想使用SQL。我更喜欢能够阅读我的数据库,并且我喜欢XML的有形性和多功能性。
编辑:经过更多的研究,我了解到PHP支持存储SESSION[]变量的系统。这对我来说是完美的,因为事实上,我正在使用会话!
W3C表示:
PHP会话变量用于存储有关用户会话的信息或更改用户会话的设置。会话变量保存有关单个用户的信息,并且可用于一个应用程序中的所有页面。
比在地址栏中公开各种数据要好得多。=)
只要您的DB文件无法从HTTP(即被.htaccess或等效程序锁定)和其他协议(即不位于匿名FTP可访问的目录中)访问,唯一的风险就是(无意中)让hash&salt是在一堆其他与用户相关的数据中收集的,并发送给您的客户。
如果您有相当于SQL*选择器的请求,那么这可能有点问题。您可能希望将关键数据放入不同的数据库文件中,并将访问封装在专用于用户注册和登录的接口中,以确保没有其他代码能够从主数据库中获取这些数据(即使是错误的)。