浏览代码

Add some basic access checks to the Lua form handling example (see #70)

bel 10 年之前
父节点
当前提交
e0fd24ebe1
共有 1 个文件被更改,包括 23 次插入0 次删除
  1. 23 0
      test/handle_form.lua

+ 23 - 0
test/handle_form.lua

@@ -1,9 +1,28 @@
+-- Some basic checks
+if mg.request_info.request_method ~= "POST" or mg.request_info.content_type:lower():sub(1,19) ~= 'multipart/form-data' then
+  mg.write("HTTP/1.0 400 OK\r\n")
+  mg.write("Connection: close\r\n")
+  mg.write("Content-Type: text/plain; charset=utf-8\r\n")
+  mg.write("Cache-Control: max-age=0, must-revalidate\r\n")
+  mg.write("\r\n")
+  mg.write("Bad request\r\n\r\n")
+  return
+end
+
+-- HTTP headers
 mg.write("HTTP/1.0 200 OK\r\n")
 mg.write("Connection: close\r\n")
 mg.write("Content-Type: text/plain; charset=utf-8\r\n")
 mg.write("Cache-Control: max-age=0, must-revalidate\r\n")
 mg.write("\r\n")
 
+-- Which form sent the data?
+mg.write("Read POST data from " .. mg.request_info.http_headers.Referer .. ":\r\n\r\n")
+
+-- Count some data fields
+local fields = 0
+local datasize = 0
+
 -- Read the entire body data (POST content) into "bdata" variable.
 -- Use a string builder pattern for performance reasons
 stringtab = {}
@@ -70,5 +89,9 @@ while #bdata>4 do
      mg.write("Field value: " .. form_field_value:sub(1, 40) .. " .. (" .. len .. " bytes)\r\n")
    end
    mg.write("\r\n")
+   fields = fields + 1
+   datasize = datasize + len
 
 end
+
+mg.write("Got " .. fields .. " input fields with " .. datasize .. " bytes total\r\n");