我需要编写一个可以通过参数 POST 更新的简单网页:
- 使用参数向页面发送 POST 请求 - 将不断更新网页。
- 向页面发送 GET 请求将返回参数的最后检索值
例如(可能每个请求都是不同的会话):
POST /mypage.asp?param1=Hello
GET /mypage.asp >> Response: Hello
POST /mypage.asp?param1=Changed
GET /mypage.asp >> Response: Changed
我需要编写一个可以通过参数 POST 更新的简单网页:
例如(可能每个请求都是不同的会话):
POST /mypage.asp?param1=Hello
GET /mypage.asp >> Response: Hello
POST /mypage.asp?param1=Changed
GET /mypage.asp >> Response: Changed
使用 $_SESSION
session_start();
if($_SERVER['REQUEST_METHOD'] == "POST")
$_SESSION['last_val'] = $_POST['some_val'];
}
if($_SERVER['REQUEST_METHOD'] == "GET")
echo $_SESSION['last_val'];
}
Evan 的回答在概念上是正确的,但我认为他没有解决不同的会话,也没有使用“经典 ASP”(vbscript 或 jscript)。
要在会话和请求之间保留一个值,您需要某种形式的存储。可能最简单的选项是应用程序变量(我在下面显示)。其他选项是“线程安全”存储,如广泛可用的 CAPROCK DICTIONARY 或数据库。
编码:
<%@ Language="VBScript" %>
<%
If Request.ServerVariables("REQUEST_METHOD")= "POST" Then
Application.Lock
Application("StoredValue") = Request.Form("param1")
Application.Unlock
Else
Application.Lock
Response.Write Application("StoredValue")
Application.Unlock
End If
%>
<%
dim fileSystemObject,Text_File,Text_File_Content,NewValue
NewValue=Request.QueryString("MyParam")
set fileSystemObject=Server.CreateObject("Scripting.FileSystemObject")
If NewValue <> "" Then
set Text_File=fileSystemObject.CreateTextFile("C:\MyPath\myTextFile.txt")
Text_File.write(NewValue)
Text_File.close
End If
if fileSystemObject.FileExists("C:\MyPath\myTextFile.txt")=true then
set Text_File=fileSystemObject.OpenTextFile("C:\MyPath\myTextFile.txt",1,false)
Text_File_Content=Text_File.ReadAll
Text_File.close
else
set Text_File=fileSystemObject.CreateTextFile("C:\MyPath\myTextFile.txt")
Text_File.write("Please send GET request to this page with paramter MyParam!")
Text_File.close
set Text_File=fileSystemObject.OpenTextFile("C:\MyPath\myTextFile.txt",1,false)
Text_File_Content=Text_File.ReadAll
Text_File.close
end if
Response.Write(Text_File_Content)
%>