现在我正在尝试使用CGI创建一个Web应用程序。在这里我使用C来做CGI部分。我需要处理多个用户。所以用户会话需要在这里实现..当用户登录我们的应用程序时,我们应该像在PHP会话中一样处理他的会话。如果他的会话长时间闲置,它应该过期。请帮我做。我是一个PHP人,我在PHP会话方面经验丰富。但我是CGI的新手用C.我在等待你的大力支持......
提前致谢....
答案 0 :(得分:1)
PHP会话只是在cookie和文件之间建立关系。例如:
sid
的访问者发送一个Cookie,其中包含一些非常难以猜测的唯一值(例如,IP +时间+随机数字的md5)sid
cookie并读取服务器中的相应文件。Cookie可以有截止日期,您也可以使用上次请求时间控制会话数据的到期日期。
您还可以使用数据库而不是文件,这将随着时间的推移更快,更容易维护/清理。
无论如何,我需要问一下:为什么你需要使用C
进行CGI?当你可以简单地使用CGI上的任何其他语言(比如Perl甚至是PHP)时,听起来很麻烦,甚至更好,使用像PHP或mod_perl这样的嵌入式解释器。
尝试重新发明轮子永远不是一个好主意。所有以网络为中心的语言都有非常好的系统来管理会话和安全性。如果您必须出于某种原因使用C
,那么请研究已经存在的用于通过网络管理会话的系统。你会节省很多时间和错误。
答案 1 :(得分:0)
如你所想,用C CGI管理网络会话并不是那么难。
在您的CGI中,您只需要管理POST / GET请求,cookie和一些数据库(例如,sqlite3)。
在通过HTTPS获取带登录/密码的POST请求后进行授权时,使用存储在数据库中的哈希检查密码的哈希值。如果一切正常,您可以创建一些ID(例如,用户名和当前时间的哈希),将其存储在数据库中并以cookie或回应请求发送用户。 他的浏览器存储该cookie或回答并从HTTPS返回到HTTP。此步骤也可以从数据库中删除所有旧ID。
在身份验证时,您只需在数据库中检查用户cookie(或使用localstorage时请求)的会话ID。