瀏覽代碼

add lua page example with the form submitting

Mikhail Nikalyukin 12 年之前
父節點
當前提交
5ce1fc3c2a
共有 2 個文件被更改,包括 50 次插入2 次删除
  1. 8 2
      UserManual.md
  2. 42 0
      examples/lua/prime_numbers.lp

+ 8 - 2
UserManual.md

@@ -307,8 +307,9 @@ like request method, all headers, etcetera. Please refer to
 `struct mg_request_info` definition in
 `struct mg_request_info` definition in
 [mongoose.h](https://github.com/valenok/mongoose/blob/master/mongoose.h)
 [mongoose.h](https://github.com/valenok/mongoose/blob/master/mongoose.h)
 to see what kind of information is present in `request_info` object. Also,
 to see what kind of information is present in `request_info` object. Also,
-[page.lp](https://github.com/valenok/mongoose/blob/master/test/page.lp)
-contains some example code that uses `request_info`.
+[page.lp](https://github.com/valenok/mongoose/blob/master/test/page.lp) and
+[prime_numbers.lp]()https://github.com/valenok/mongoose/blob/master/examples/lua/prime_numbers.lp
+contains some example code that uses `request_info` and other functions(form submitting for example).
 
 
 
 
 One substantial difference of mongoose's Lua Pages and PHP is that Mongoose
 One substantial difference of mongoose's Lua Pages and PHP is that Mongoose
@@ -323,6 +324,11 @@ It is easy to do things like redirects, for example:
 
 
     <? print('HTTP/1.0 302 Found\r\nLocation: http://google.com\r\n\r\n') ?>
     <? print('HTTP/1.0 302 Found\r\nLocation: http://google.com\r\n\r\n') ?>
 
 
+To serve Lua Page, mongoose creates Lua context. That context is used for
+all Lua blocks within the page. That means, all Lua blocks on the same page
+share the same context. If one block defines a variable, for example, that
+variable is visible in the block that follows.
+
 # Common Problems
 # Common Problems
 - PHP doesn't work - getting empty page, or 'File not found' error. The
 - PHP doesn't work - getting empty page, or 'File not found' error. The
   reason for that is wrong paths to the interpreter. Remember that with PHP,
   reason for that is wrong paths to the interpreter. Remember that with PHP,

+ 42 - 0
examples/lua/prime_numbers.lp

@@ -0,0 +1,42 @@
+<?
+  -- Lua server pages have full control over the output, including HTTP
+  -- headers they send to the client. Send HTTP headers:
+  print('HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n')
+?>
+
+<html>
+  <p>Prime numbers from 0 to 100, calculated by Lua:</p>
+ <?
+    function is_prime(n)
+      if n <= 0 then return false end
+      if n <= 2 then return true end
+      if (n % 2 == 0) then return false end
+      for i = 3, n / 2, 2 do
+        if (n % i == 0) then return false end
+      end
+      return true
+    end
+
+    for i = 1, 100 do
+      if is_prime(i) then print('<span>' .. i .. '</span>&nbsp;') end
+    end
+
+ ?>
+
+ <p>Reading POST data from Lua (click submit):</p>
+ <form method="POST" ><input type="text" name="t1"/><input type="submit"></form>
+
+ <pre>
+   POST data: [<?  print(read())?>]
+   request method: [<? print(request_info.request_method) ?>]
+   IP/port: [<? print(request_info.remote_ip, ':', request_info.remote_port) ?>]
+   URI: [<? print(request_info.uri) ?>]
+   HTTP version [<? print(request_info.http_version) ?>]
+   HEADERS:
+   <?
+     for name, value in pairs(request_info.http_headers) do
+       print(name, ':', value, '\n')
+     end
+   ?>
+</pre>
+</html>