1000行lua代碼實現一個博客系統

EventServer是一款基於libevent的服務器框架,能夠應用於web開發,也能夠應用於遊戲服務器開發。https://www.lua-web.com 就基於EventServer開發的lua博客框架,方便寫博客,保存各類轉載,新聞採編等, 總共900多行代碼,有博客的增刪改查功能;有註冊,審覈功能、登陸等功能;百度ueditor編輯器接口的上傳圖片,下載等。

跟別的luajit框架同樣,擁有簡單易用,易部署,易維護,性能優越,並且能夠使用c/c++各類接口。c++

除此外,還能夠兼容openresty各類庫,尤爲基於socket的lua庫, 好比redis,smtp,luasqlweb

本框架和別的框架最大區別是,不須要修改接口便可使用同步阻塞接口,改爲同步非阻塞接口。redis

數據SQL操做部分接口就是同步阻塞,經過ExecuteSQL委託給其餘線程,處理結束後,返回結果。sql


--登陸
local function http_blog_login(req)
    local buffer = evhttp_get_input_buffers(req)    
    local obj = json.decode(buffer)
    --local context = {title=obj.title, doc=obj.doc}
    print('http_blog_login******************************************************', json.encode(obj))
    
    local sql = [[SELECT * FROM blogs.accounts where account=']].. escape_sql(obj.account)  ..[[';]]
    local ret,rows=ExecuteSQL(THREADID_SQL, sql,true)        
    if not ret then
        print('http_blog_postxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', rows)
        return
    end
    
    if #rows==0 then        
        print('http_blog_modify******************************************************',res)
        HttpResponeError(req, 1000, GetUtf8ByGBK('帳號未註冊'))
        return
    end
    
    if rows[1].loginpassword ~= obj.password then
        HttpResponeError(req, 1001, GetUtf8ByGBK('密碼錯誤'))        
        return
    end    
    
    if rows[1].state=='0' then
        HttpResponeError(req, 1002, GetUtf8ByGBK('帳號未激活'))        
        return
    end
        
    HttpRespone(req, function(req)
        
        local time = os.time()+60*60*24
        local token = md5.sumhexa(rows[1].userid..MAGIC_CODE..time)
        local cookies = {userid=rows[1].userid, logintime=time, token=token} --'userid='..rows[1].userid..';'..'logintime='..time..';token='..token
        local base64 = ZZBase64.encode(json.encode(cookies))
        local res = json.encode({errcode=0, errmsg=GetUtf8ByGBK('登陸成功'), cookie='login='..base64})
        print('http_blog_login******************************************************',res)
        evhttp_add_header(req, 'Content-Type',  "text/json")        
        evhttp_send_reply(req,200,'ok', res)        
    end)    
end

 json

相關文章
相關標籤/搜索