文档章节

1000行lua代码实现一个博客系统

ouloba
 ouloba
发布于 2019/09/09 17:30
字数 498
阅读 76
收藏 0
Lua

EventServer是一款基于libevent的服务器框架,可以应用于web开发,也可以应用于游戏服务器开发。https://www.lua-web.com 就基于EventServer开发的lua博客框架,方便写博客,保存各种转载,新闻采编等, 总共900多行代码,有博客的增删改查功能;有注册,审核功能、登录等功能;百度ueditor编辑器接口的上传图片,下载等。

跟别的luajit框架一样,拥有简单易用,易部署,易维护,性能优越,而且可以使用c/c++各种接口。

除此外,还可以兼容openresty各种库,尤其基于socket的lua库, 比如redis,smtp,luasql

本框架和别的框架最大区别是,不需要修改接口即可使用同步阻塞接口,改成同步非阻塞接口。

数据SQL操作部分接口就是同步阻塞,通过ExecuteSQL委托给其他线程,处理结束后,返回结果。


--登录
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

 

© 著作权归作者所有

ouloba

ouloba

粉丝 20
博文 28
码字总数 14780
作品 1
南宁
项目经理
私信 提问
加载中

评论(0)

异步、高性能 Web 框架 - EventServer

EventServer是基于lua和libevent的完全异步、高性能的web框架。既可以作为游戏服务,也可以做web服务,支持websocket和https。 1、ffi可以很方便调用c/c++库,比如libcurl、iconv等,不用担心...

ouloba
2019/09/26
1.3K
0
lua中常量的实现及表的深拷贝实现

废话:好久没在这里写博客了。。。主要原因是我买了个域名hanxi.info并在github上搭建了个人博客。。。   lua中默认是没有c中的const常量的,在csdn上找到了一个使用setmetatable。参考htt...

涵曦
2013/09/28
0
0
使用Redis实现高并发分布式序列号生成服务

原文地址:http://www.cnblogs.com/mignet/p/RedisConcurrentgeneratesequenceno.html?utmsource=tuicool&utmmedium=referral 序列号的构成 为建立良好的数据治理方案,作数据掌握、分析、统...

孤天浪雨
2016/08/31
0
0
使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍

一、前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的...

agilelab
2014/01/09
0
0
Mangos魔兽世界服务端初探(1)--游戏服务端主体结构与消息分发

魔兽时间是暴雪著名的网络游戏,我以前也玩过一段时间的战士,这款游戏目前已进入晚年时期,不过里面各种丰富的游戏系统和游戏内容都非常让人印象深刻。开源的Mangos项目模拟魔兽服务器端非常...

消失了雨痕
2013/09/15
939
2

没有更多内容

加载失败,请刷新页面

加载更多

刚得到一台centos7服务器,作为Java程序员应该做的事

1.JDK的卸载安装 卸载掉服务器本来的OPENJDK,安装ORELOC的JDK 检查是否已经安装了jdk rpm -qa | grep jdk 如果有的话,就卸载了再装 rpm -e --nodeps java-1.7.0-openjdk 去Oracle下载一...

ytuan996
17分钟前
15
0
ConcurrentHashMap(1.8)源码剖析

ConcurrentHashMap(JDK1.8)学习记录 看了忘忘了看系列之ConcurrentHashMap,本文主要记录下通过看ConcurrentHashMap源码学习到的知识点。主要有以下几个点。文章稍长,需要耐心阅读。 1、Con...

DoubleCherish
18分钟前
21
0
mysql之explain详解(分析索引最佳使用)

mysql之explain详解(分析索引最佳使用) mysql explain用于分析sql 语句的执行及数据库索引的使用。本文将致力于帮助大家充分理解explain所返回的各项参数,从而使大家快速掌握explain用法技...

科比可比克
昨天
14
0
如何比较两个不同分支的文件? - How to compare files from two different branches?

问题: I have a script that works fine in one branch and is broken in another. 我有一个脚本在一个分支中工作正常,在另一个分支中被破坏。 I want to look at the two versions side-...

技术盛宴
昨天
19
0
jenkins Euleros镜像打包

一、下载需要的软件 mkdir jenkins_software && cd jenkins_softwarewget --no-check-certificate -q https://mirrors.huaweicloud.com/epel/RPM-GPG-KEY-EPEL-7 -O RPM-GPG-KEY-EPEL-7......

mbzhong
昨天
57
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部