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

相关文章
相关标签/搜索