Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
回发时未保留asp.net字符串_Asp.net_Vb.net_String - Fatal编程技术网

回发时未保留asp.net字符串

回发时未保留asp.net字符串,asp.net,vb.net,string,Asp.net,Vb.net,String,我正在尝试创建以下场景 用户通过插入其用户id和密码登录 如果他们没有为其登录详细信息分配电子邮件地址,则会要求他们在继续之前提交一个电子邮件地址 然后,他们会以登录状态继续访问主页 我遇到的问题是,当他们提交电子邮件地址时,用户id和密码没有保留,因此登录失败 这是密码 Dim userid as String Dim password as String Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs) end s

我正在尝试创建以下场景

  • 用户通过插入其用户id和密码登录
  • 如果他们没有为其登录详细信息分配电子邮件地址,则会要求他们在继续之前提交一个电子邮件地址
  • 然后,他们会以登录状态继续访问主页
我遇到的问题是,当他们提交电子邮件地址时,用户id和密码没有保留,因此登录失败

这是密码

Dim userid as String
Dim password as String

Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)

end sub


Sub Page_Transfer()

Dim userLookup As mySource.myData = New mySource.myData()
Dim drSet1 As DataSet = userLookup.xyz("SELECT * FROM OPENQUERY (myDatabase,' SELECT userid, password, email1 FROM userInfo WHERE userid = ''" & userid & "'' AND password = ''" & password & "'' ') ")

If drSet1.Tables(0).Rows.Count < 1 Then
    'Invalid Bond number
    Page.ClientScript.RegisterClientScriptInclude("loginError", "scripts/loginError.js")
Else

        If drSet1.Tables(0).Rows(0).Item("email1") = "" Then
            'No email address
            Page.ClientScript.RegisterClientScriptInclude("emailAddressSubmit", "scripts/emailAddressSubmit.js")
        Else

            response.redirect("home.aspx")

        End If

End If

End Sub


Sub Submit_Email(sender As Object, e As System.Web.UI.ImageClickEventArgs)

'script to add email address to database
'this is where the strings are losing their values

Page_Transfer()

End Sub


Sub Submit_login(sender As Object, e As System.Web.UI.ImageClickEventArgs)

userid = Trim(useridfield.text)
password = Trim(passwordfield.text)

Page_Transfer()

End Sub
Dim userid作为字符串
将密码设置为字符串
子页面加载(ByVal发送方作为对象,ByVal E作为事件参数)
端接头
子页_传输()
Dim userLookup As mySource.myData=New mySource.myData()
Dim drSet1作为DataSet=userLookup.xyz(“从OPENQUERY中选择*(myDatabase,'从userInfo中选择userid、密码、email1,其中userid=''和userid&''以及password=''和password&''”))
如果drSet1.Tables(0).Rows.Count<1,则
“无效的债券编号
Page.ClientScript.RegisterClientScriptInclude(“loginError”、“scripts/loginError.js”)
其他的
如果drSet1.Tables(0).Rows(0).Item(“email1”)=“”则
'没有电子邮件地址
Page.ClientScript.RegisterClientScriptInclude(“emailAddressSubmit”、“scripts/emailAddressSubmit.js”)
其他的
response.redirect(“home.aspx”)
如果结束
如果结束
端接头
Sub Submit_电子邮件(发件人作为对象,e作为System.Web.UI.ImageClickEventArgs)
'将电子邮件地址添加到数据库的脚本
'这是字符串丢失其值的地方
页面_传输()
端接头
Sub Submit_登录(发件人作为对象,e作为System.Web.UI.ImageClickEventArgs)
userid=Trim(useridfield.text)
password=Trim(passwordfield.text)
页面_传输()
端接头

有什么想法吗?

问题是,每次回发,页面都会经历一个全新的生命周期。这意味着,在一次回发期间设置的页面的任何实例变量在下一次回发时都会丢失

如何解决这个问题?您有以下选项:

  • 从控件(useridfield和passwordfield)中再次读取用户ID和密码。由于ASP.NET控件在回发后使用视图状态保留其值,因此这些控件中的值仍应有效

  • 自己使用视图状态保存变量的值,即替换

    Dim userid as String 
    Dim password as String 
    

    但是,请注意,视图状态是不安全的,也就是说,web应用程序的熟练用户可以对其进行修改。因此,在分配邮件地址之前,请确保再次验证userid和password的值(检查数据库是否匹配)。(顺便说一句,选项1也是如此。)

  • 将值保存到其他位置,例如,在中


  • 问题是,每次回发,页面都会经历一个全新的生命周期。这意味着,在一次回发期间设置的页面的任何实例变量在下一次回发时都会丢失

    如何解决这个问题?您有以下选项:

  • 从控件(useridfield和passwordfield)中再次读取用户ID和密码。由于ASP.NET控件在回发后使用视图状态保留其值,因此这些控件中的值仍应有效

  • 自己使用视图状态保存变量的值,即替换

    Dim userid as String 
    Dim password as String 
    

    但是,请注意,视图状态是不安全的,也就是说,web应用程序的熟练用户可以对其进行修改。因此,在分配邮件地址之前,请确保再次验证userid和password的值(检查数据库是否匹配)。(顺便说一句,选项1也是如此。)

  • 将值保存到其他位置,例如,在中


  • 你从哪里得到drSet2?对不起。。。简化代码时遗漏了一点。现在应该都很好了,但是请一定要学习一些关于SQL注入的知识!OT:小心SQL注入。是的。。。我已经在处理SQL注入的案子了。。。只是还没有到位。谢谢,你从哪里得到drSet2?对不起。。。简化代码时遗漏了一点。现在应该都很好了,但是请一定要学习一些关于SQL注入的知识!OT:小心SQL注入。是的。。。我已经在处理SQL注入的案子了。。。只是还没有到位。谢谢,问题在于您的第一个选项密码字段没有保留值,因为它是密码字段。-第二个选项可能有效-第三个选项我正在尝试避免设置不必要的会话,但它确实有效。第一个选项的问题是密码字段没有保留值,因为它是密码字段。-第二个选项可能有效——第三个我正试图避免设置不必要的会话,但它确实有效。