Commit 3285872d authored by jan.koester's avatar jan.koester
Browse files

new session and cokkie handling

parent 510d025a
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -233,8 +233,12 @@ void blogi::Blogi::logoutPage(libhttppp::HttpRequest *curreq,const int tid,const
    }
    libhttppp::HttpResponse curres;
    libhttppp::HttpCookie cookie;
    //need remove method
    cookie.setcookie(&curres,"sessionid","empty");

    Session sess(PlgArgs->database[tid]);

    sess.delSessionData(sessiondid,"uid");
    sess.delSessionData(sessiondid,"username");

    curres.setState(HTTP307);
    curres.setVersion(HTTPVERSION(1.1));
    *curres.setData("Location") << PlgArgs->config->getstartpage();
+21 −5
Original line number Diff line number Diff line
@@ -101,11 +101,26 @@ void blogi::Session::addSessionData(const char *sessionid,const char *key,const
    sql << "INSERT INTO session_data (sessionid,key,value) VALUES ('" << sql.escaped(sbuf,sessionid) << "','" << sql.escaped(sbuf,key) << "','" << sql.escaped(sbuf,value) << "');";

    _sessiondb->exec(&sql,res);
};

void blogi::Session::delSessionData(const char* sessionid, const char* key){
    if(!sessionid || !key){
      libhttppp::HTTPException excep;
    excep[libhttppp::HTTPException::Error] << "addSessionData Session:" <<  sessionid << "not found!";
        excep[libhttppp::HTTPException::Error] << "delSessionData Sessionid or key could not be zero!";
        throw excep;
};
    }

    blogi::DBResult res;

    blogi::SQL sql;

    std::vector<char> sbuf;

    sql << "DELETE FROM session_data WHERE sessionid='" << sql.escaped(sbuf,sessionid) << "' AND key='" << sql.escaped(sbuf,key) << "';";

    _sessiondb->exec(&sql,res);
}


void blogi::Session::getSessionData(const char *sessionid,const char *key,std::string &value){
    if(!sessionid || !key ){
@@ -140,9 +155,10 @@ bool blogi::Session::exists(const char* sessionid){
    }

    blogi::DBResult res;
    std::vector<char> sbuf;

    blogi::SQL sql;
    sql << "Select id from session where id='" << sessionid <<"'";
    sql << "Select id from session where id='" <<  SQL::escaped(sbuf,sessionid) <<"'";

    if(_sessiondb->exec(&sql,res)>0)
        return true;
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ namespace blogi {

    const char *createSession(char *buf,const char *useragent);
    void addSessionData(const char *sessionid,const char *key,const char *value);
    void delSessionData(const char *sessionid,const char *key);
    void getSessionData(const char *sessionid,const char *key,std::string &value);

    bool exists(const char *sessionid);