lua判断字符不为空或空格_Lua - 空值判断的几种情况

2023-11-04

【小宅按】 在安全领域,lua编程语言因为其小巧在众多工具上都作为插件开发语言,常见的有openresty,nmap等。因此笔者将会开辟一个Lua相关的系列文章,主要记录工作过程中一些领悟或者是一些踩过的坑,希望能够借此平台帮助到读者们。

0x00 背景

最近在写一段nginx+redis的代码,主要基于openresty,其中使用到了lua-resty-redis库。我平时写代码都比较小心,针对外部输入的值一般都会进行异常判断,大概的代码如下:

local redis = require "redis"

local cjson = require "cjson"

--[[省略部分代码]]

local ok, err = redis:get("key")

if not ok then

ngx.log(ngx.ERR, '[ERROR]:', err)

return

end

local data = cjson.decode(ok)

在decode这里出现了错误提示,但是ok并没有为空或者nil,不然代码是走不到这里来。

发现问题后,我们就在前面打印一下ok数据的类型吧,大概的代码如下:

ngx.log(ngx.ERR, 'ok type: ', type(ok))

if not ok then

-- TODO

end

这个时候我们得到的结果是userdata,这个东西算是一种复杂结构体,一般都是跨语言产生的,比如f

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lua判断字符不为空或空格_Lua - 空值判断的几种情况 的相关文章

随机推荐

  • springboot + shiro + vue 允许静态文件的访问

    springboot shiro vue 前后分离打包部署 前端打包 放入后端resources下的static中 后端打包部署服务器就行 部署完成后 发现一个坑 就是页面无法访问 网上找了很多 最后发现是集成shiro的原因 总结处理方式
  • IDDPM的UNetModel的ResBlock和AttentionBlock详解

    IDDPM的UNetModel的ResBlock和AttentionBlock详解 ResBlock AttentionBlock class UNetModel nn Module The full UNet model with att
  • argparse基本用法

    关于argparse网上的资料好多 搞明白后自己整理下 方便以后查看 argparse 是python自带的命令行参数解析包 可以用来方便地读取命令行参数 它的使用也比较简单 1 基本框架 下面是采用argparse从命令行获取用户名 该p
  • webpack

    1 webpack简介 webpack官网 https webpack docschina org webpack是一个流行的前端项目构建工具 打包工具 因为我们目前web开发会有下面几个问题 文件之间互相依赖关系复杂 浏览器对于js的新语
  • caffe 数据库LMDB的读写

    读写的图片都是灰度图 rgb图类似 一 读数据 图片的channel是2 其实是两张图片 Datum是caffe里定义的一种存数据的结构 所以使用它时必须在开头import caffe 它的属性有 channels 图片的通道 如彩色图用3
  • 阻止 form 表单 input 回车触发 button 按钮 click 事件

    问题
  • python零基础之while循环、continue、 break、死循环、循环的嵌套、for循环、范围函数range、for结合range函数去替代while循环、for,while的区别

    注意 1 for循环常用来遍历 while循环常用来进行指定次数的循环 当for结合范围函数range时 可以替代while循环 2 程序的三种结构 顺序 循环 分支 判断 1 顺序结构 代码由上而下执行 2 循环结构 根据条件 去循环的执
  • latex 插入代码、代码框、代码配色

    插入代码 导言区加入listings包 usepackage listings 代码框 将代码包在如下命令中 begin lstlisting title Myfile frame shadowbox 代码段 end lstlisting
  • Python脚本实现【大麦网】抢票程序,今年我一定要去听一场演唱会

    前言 大麦网 是中国综合类现场娱乐票务营销平台 业务覆盖演唱会 话剧 音乐剧 体育赛事等领域 但是因为票数有限 还有黄牛们不能丢了饭碗 所以导致了 很多人都抢不到票 那么 今天带大家用Python来制作一个自动抢票的脚本小程序 知识点 面向
  • BeanFactory和ApplicationContext的区别

    一 概述 BeanFactory与ApplicationContext的关系 BeanFactory是Spring的早期接口 称为Spring的Bean工厂 ApplicationContext是后期更高级接口 称之为Spring容器 Ap
  • 在ElementUI中如何通过按钮控制输入框的隐藏与显示

    点击此按钮会出现两个输入框 当点击完新增后会出现两个输入框及一个按钮 解决此方案思路比较简单 就是设置一个属性值 用v if进行绑定 在什么情况下需要显示就需要设置v if绑定的值等于需要显示的值 div style height 7vh
  • 中国共享软件走向国际指南

    作者 Tuenhai com Email tuenhai gmail com QQ 83087 版权声明 可以任意转载 转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 http www Tuenhai com keys 共享软件
  • 阿里云服务器DDoS基础防护设置及常见问题

    为了能够更好的保护好每一个用户的云安全 阿里云服务器提供免费的DDos防护 DDos基础防护 提供最高5G的防护能力 同时将基于安全信誉分进一步提升 DDoS 防护能力 用户最高可获得 100G 以上的免费 DDoS 防护资源 DDoS基础
  • warning: #61-D: integer operation result is out of range

    STM32程序编译出现以下问题的解决方法 IO方向设置 define SDA IN GPIOC gt CRH 0X0FFFFFFF GPIOC gt CRH 8 lt lt 28 define SDA OUT GPIOC gt CRH 0X
  • 使用Xposed对native进行hook

    Xposed框架可谓是 家喻户晓 的神器 它具有着frida所不具备的持久性 虽然frida也可以通过frida gadget实现持久化 但没有Xposed使用方便 当我们需要hook java层的代码时 Xposed使用起来得心应手 但是
  • Ubuntu上Vim安装NERDTree插件操作步骤

    NERDTree是Vim的文件系统浏览器 使用此插件 用户可以直观地浏览复杂的目录层次结构 快速打开文件以进行读取或编辑 以及执行基本的文件系统操作 NERDTree源码在https github com preservim nerdtre
  • 基于Spring Boot开发的二手书交易管理系统【论文,源码】

    系统演示 springboot校园二手书交易管理系统演示 源码 系统功能 乐校园二手书交易管理系统的功能分为管理员 卖家用户和用户三个部分 系统的主要功能包括首页 个人中心 用户管理 卖家用户管理 图书分类管理 二手图书管理 求购图书管理
  • python读取word报错

    python读取word报错 一定要检查有没有word占用 错误窗口是否关闭 否则会报错缺少哪个模块 其实是中断了读取的操作 半小时找bug 结果是没关掉word报错窗口
  • Redis主从复制出现错误:master_link_status:down

    因为主机设置了密码 我的解决方案是切换到主机redis config中 注销密码 最后重新启动80端口 美滋滋又能的变成up了 root localhost redis 7 0 2 src redis server redis80 conf
  • lua判断字符不为空或空格_Lua - 空值判断的几种情况

    小宅按 在安全领域 lua编程语言因为其小巧在众多工具上都作为插件开发语言 常见的有openresty nmap等 因此笔者将会开辟一个Lua相关的系列文章 主要记录工作过程中一些领悟或者是一些踩过的坑 希望能够借此平台帮助到读者们 0x0