我有以下代码来检查查询字符串是否未更改:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Label_Error.Visible = false;
string query_string = Request.QueryString["GUID"].ToString();
Session["GUID"] = query_string;
}
else
{
string GUID = "";
try
{
GUID = Session["GUID"].ToString();
}
catch (Exception)
{
Session.Abandon();
Response.Redirect("CheckOutErrorPage.htm");
return;
}
if (GUID.Equals(Request.QueryString["GUID"].ToString()) == false)
{
Session.Abandon();
Response.Redirect("CheckOutErrorPage.htm");
}
}
}
现在,我在按钮单击事件处理程序中有这段代码,以检查查询字符串的值是否(再次)没有改变:
protected void ImageButton_LogIn_Click(object sender, ImageClickEventArgs e)
{
Validation val = new Validation();
string GUID = "";
string query_string = "";
try
{
GUID = Session["GUID"].ToString();
query_string = Request.QueryString["GUID"].ToString();
}
catch (Exception)
{
Session.Abandon();
Response.Redirect("CheckOutErrorPage.htm");
return;
}
if (val.EmptyString(GUID) == true || val.checkTransactionGUIDExists(GUID) == false || GUID.Equals(query_string) == false)
{
Session.Abandon();
Response.Redirect("CheckOutErrorPage.htm");
}
现在,问题有两个:
1)如果我更改 URL 中的查询字符串并单击按钮,用户不会被重定向到错误页面。
2) 如果我更改 URL 中的查询字符串并在地址栏中按 Enter,则用户不会被重定向到错误页面。
我想要的基本上是,当用户被重定向到网页时,它将查询字符串保存到会话中。如果用户在地址栏中更改了查询字符串的值,并且在地址栏中按下回车键或按下我的按钮,他将被重定向到错误页面。
但是,我的代码失败了。有人可以帮忙吗?谢谢 :)