1 <?lsp
2 -- Create two persistent variables in the LSP page object.
3 -- non page variables terminate at end of the request.
4 page.fridgeTemp = page.fridgeTemp or 5 -- Initialize to 5 degrees
5 page.freezerTemp = page.freezerTemp or -30 -- Initialize to -30 degrees
6
7 local isValid; -- If POST and temperatures are valid
8 local d; -- Table returned from request:data()
9
10 -- Make sure only POST requests are allowed to change the value.
11 -- We discussed the reason for this in the HTTP section.
12 if request:method() == "POST" then
13 d = request:data() -- Get table with URL encoded data sent from client
14 local newFridgeTemp = tonumber(d.setFridgeTemp)
15 local newFreezerTemp = tonumber(d.setFreezerTemp)
16 if newFridgeTemp and newFreezerTemp then
17 -- Are the new values within the tolerated limits ?
18 if(newFridgeTemp < 1 or newFridgeTemp > 7 or
19 newFreezerTemp < -35 or newFreezerTemp > -18) then
20 isValid = false;
21 else
22 -- Set the new temperatures
23 isValid=true;
24 page.fridgeTemp = newFridgeTemp;
25 page.freezerTemp = newFreezerTemp;
26 end
27 end
28 end
29 ?>
30 <html>
31 <head>
32 <link href="../style.css" rel="stylesheet" type="text/css"/>
33 </head>
34 <body>
35 <p style="float:right"><br/><a href="./">Refresh page</a></p>
36 <h1>My refrigerator</h1>
37 <form method="post">
38 <table>
39 <tr>
40 <td>Refrigerator Temperature:</td>
41 <td><input type="text" name="setFridgeTemp" value="
<?lsp=page.fridgeTemp?>"/></td>
42 </tr>
43 <tr>
44 <td>Freezer Temperature:</td>
45 <td><input type="text" name="setFreezerTemp" value="
<?lsp=page.freezerTemp?>"/></td>
46 </tr>
47 <tr>
48 <td colspan="2"><input type="submit" value="Set temperature"/></td>
49 </tr>
50 </table>
51 </form>
52
<?lsp
53 if request:method() == "POST" then
54 if isValid then
55 ?>
56 <p>The refrigerator and freezer temperatures have been changed.</p>
57
<?lsp
58 else
59 ?>
60 <p>The provided temperature for the refrigerator (
<?lsp=d.setFridgeTemp?>)
61 or the freezer (
<?lsp=d.setFreezerTemp?>) are not within the tolerable limits.
62 </p>
63
<?lsp
64 end
65 else
66 response:write("<p> HTTP "..request:method().."</p>");
67 end
68 ?>
69 </body>
70 </html>
71