如何使用c处理CGI中的会话,就像我们在PHP中一样

时间:2013-05-07 05:05:11

标签: c session cgi

现在我正在尝试使用CGI创建一个Web应用程序。在这里我使用C来做CGI部分。我需要处理多个用户。所以用户会话需要在这里实现..当用户登录我们的应用程序时,我们应该像在PHP会话中一样处理他的会话。如果他的会话长时间闲置,它应该过期。请帮我做。我是一个PHP人,我在PHP会话方面经验丰富。但我是CGI的新手用C.我在等待你的大力支持......

提前致谢....

2 个答案:

答案 0 :(得分:1)

PHP会话只是在cookie和文件之间建立关系。例如:

  1. 向名为sid的访问者发送一个Cookie,其中包含一些非常难以猜测的唯一值(例如,IP +时间+随机数字的md5)
  2. 在服务器中创建一个名称相同的文件,其中包含您需要的数据
  3. 每次客户端发出请求时,您都会识别sid cookie并读取服务器中的相应文件。
  4. 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。