diff --git a/UserManual.md b/UserManual.md index e2006a1e..f69398b6 100644 --- a/UserManual.md +++ b/UserManual.md @@ -307,8 +307,9 @@ like request method, all headers, etcetera. Please refer to `struct mg_request_info` definition in [mongoose.h](https://github.com/valenok/mongoose/blob/master/mongoose.h) 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 @@ -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') ?> +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 - 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, diff --git a/examples/lua/prime_numbers.lp b/examples/lua/prime_numbers.lp new file mode 100644 index 00000000..b3edc129 --- /dev/null +++ b/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') +?> + + +
Prime numbers from 0 to 100, calculated by Lua:
+ + 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('' .. i .. ' ') end + end + + ?> + +Reading POST data from Lua (click submit):
+ + ++ 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 + ?> ++