使用带有fastcgi++的会话

Using sessions with fastcgi++

本文关键字:会话 fastcgi++      更新时间:2023-10-16

我在使用fastcgi++2测试版会话时遇到问题。

这是我的代码:

#include <fastcgi++/http.hpp>
#include <fastcgi++/request.hpp>
#include <fastcgi++/manager.hpp>
#include <string>
using namespace std;
using namespace Fastcgipp::Http;
class SessionsPage : public Fastcgipp::Request<char> {
    static Sessions<string> sessions;
    Sessions<string>::iterator session;
    bool response() {
        sessions.cleanup();
        out << "Content-Type: text/html;rnrn";
        out << "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">" << std::endl;
        out << "<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >" << std::endl;
        out << "    <head>" << std::endl;
        out << "        <title>Sessions</title>" << std::endl;
        out << "        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />" << std::endl;
        out << "    </head>" << std::endl;
        out << "    <body>" << std::endl;
        out << "        <p>Hello World!</p>" << std::endl;
        out << "    </body>" << std::endl;
        out << "</html>" << std::endl;
        return true;
    }
};
int main() {
    Fastcgipp::Manager<SessionsPage> fcgi;
    fcgi.handler();
}

我得到以下错误:

/tmp/ccRujo45.o: In function `SessionsPage::response()':
sessions_page.cpp:(.text._ZN12SessionsPage8responseEv[SessionsPage::response()]+0xd): undefined reference to `SessionsPage::sessions'
collect2: ld a retourné 1 code d'état d'exécution

如果我评论这一行,它会编译:

sessions.cleanup();

我正在使用本教程。

谢谢你的帮助。

static Sessions<string> sessions;仅在类中声明;你需要为它创建一个定义。在这种情况下,我认为在你的类之后粘贴Sessions<string> SessionsPage::sessions;是可以的,因为这个类只在一个翻译单元中使用。(如果在多个翻译单元中使用它,则必须在一个且只有一个翻译单元中定义静态变量)