Asp classic 如何显示折扣金额?

Asp classic 如何显示折扣金额?,asp-classic,Asp Classic,请看两个连接字符串,一个用于访问数据库,另一个用于SQL Server数据库 Access数据库的连接工作完美无瑕,直到我们最近更换了托管公司并迁移到godaddy.com 他们向我们提供了到SQL Server数据库的连接字符串 此后,我们无法成功连接到SQL Server。我们一直得到500(内部错误) 我试着联系他们,他们不停地告诉我们没有其他人有同样的问题,我觉得很难相信 你能看看我有没有遗漏什么吗 非常感谢大家 ''# Access DB Connection String <

请看两个连接字符串,一个用于访问数据库,另一个用于SQL Server数据库

Access数据库的连接工作完美无瑕,直到我们最近更换了托管公司并迁移到godaddy.com

他们向我们提供了到SQL Server数据库的连接字符串

此后,我们无法成功连接到SQL Server。我们一直得到500(内部错误)

我试着联系他们,他们不停地告诉我们没有其他人有同样的问题,我觉得很难相信

你能看看我有没有遗漏什么吗

非常感谢大家

''# Access DB Connection String

<%
  Dim objConn, objRS
  ''# Set objConn = Server.CreateObject("ADODB.Connection")
  ''# objConn.Open "DSN=ship"

 Set objConn=Server.CreateObject("ADODB.Connection")
 objConn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
 "DATA SOURCE=" & server.mappath("admin\scart.mdb")

  Set objRS = objConn.Execute("SELECT * FROM logins WHERE Username = '" & Request.Form("txtUsername") & "' AND password = '" & Request.Form("TxtPassword") & "' ")
  If Not objRS.EOF Then
    If objRS(1) = Request.Form("txtPassword") Then
      Session.Contents("access_level") = objRS(2)
      Session.Contents("ID") = objRS(3) ''#ID column
      Session("username") = objRS("USERNAME")
      Session("password") = objRS("password")
      Response.Redirect "setup.asp"
    Else
      Response.Write "Sorry, but the password that you entered is incorrect.&nbsp;<a href='setup.asp'>Try again</a>"
    End If
  Else
    Response.Write "Sorry, but the username that you entered does not exist.&nbsp;<a href='setup.asp'>Try again</a>"
  End If
  objRS.Close
  Set objRS = Nothing
  objConn.Close
  Set objConn = Nothing
%>


<%
''# SQL Server connection string
Dim objConn, objRS
Dim qry, connectstr
Dim db_name, db_username, db_userpassword
Dim db_server

db_server = "MyServer name"
db_name = "nyDBName"
db_username = "MyUsername"
db_userpassword = "MyPassword"

connectstr = "Driver={SQL Server};SERVER=" & db_server & ";DATABASE=" & db_name & ";UID=" & db_username & ";PWD=" & db_userpassword

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open connectstr


  SQL = "SELECT * FROM logins WHERE Username = '" & Request.Form("txtUsername") & "' AND password = '" & Request.Form("TxtPassword") & "' "
  response.write sql
  response.end
  Set objRS = objConn.Execute(SQL)

  If Not objRS.EOF Then
    If objRS(1) = Request.Form("txtPassword") Then
      Session.Contents("access_level") = objRS(2)
      Session.Contents("ID") = objRS(3) ''# ID column
      Session("username") = objRS("USERNAME")
      Session("password") = objRS("password")
      Response.Redirect "setup.asp"
    Else
      Response.Write "Sorry, but the password that you entered is incorrect.&nbsp;<a href='setup.asp'>Try again</a>"
    End If
  Else
    Response.Write "Sorry, but the username that you entered does not exist.&nbsp;<a href='setup.asp'>Try again</a>"
  End If
  objRS.Close
  Set objRS = Nothing
  objConn.Close
  Set objConn = Nothing
%>
“”#访问数据库连接字符串

根据您的问题,您不太清楚是要连接到access/mdb还是sqlserver

但无论如何,下面两篇文章中的一篇将介绍您

但是,由于在您与我们共享的代码片段中,userinput(Request.Form(“txtexername”)直接放入SQL语句中,而不进行任何清理,因此您的数据库可能会经历大量SQL注入,这只是几天的事

从这个角度来看,我可以告诉你,你是幸运的,你无法连接

首先也是最重要的,清理你的用户输入。清理是一个大问题。 但是试着把这些作为一个即时的解决方案

dim txtUsername,txtPassword
txtUsername = Request.Form("txtUsername") 
txtPassword = Request.Form("txtPassword")

'sanitize
txtPassword = replace(txtPassword,"'","''",1,-1,1)
txtUsername = replace(txtUsername,"'","''",1,-1,1) 

Set objRS = objConn.Execute("SELECT * FROM logins WHERE Username = '" & txtUsername & "' AND password = '" & TxtPassword & "' ")
在按照上述方式修复代码之后,然后,也只有在那时,您才应该担心修复原始连接问题。因此,关于SQL注入,请参阅XSS(跨站点脚本)

确保你们公司的每一个编码员都读过这本书,并且明白这两件事是什么。你们会很高兴你们做到了。否则你们迟早会陷入痛苦的境地


祝你好运…

告诉我们错误发生在哪一行。你为什么要移动到GoDaddy?你的路径与记录的路径不匹配;而且你有一个巨大的注入问题,没有逃逸提交的数据/使用参数化的adodb.commandRedFilter,我不能说出这一行。这是我在帖子中指出的。如果可以,我会修复它告诉发生错误的线路。此外,500个内部错误不显示错误线路。我同意。这不是我的决定。我实际上试图阻止它。我还没有对他们的服务进行热身,我个人认为这很糟糕。Alex,你显示了指向Access数据库连接的链接。如上所述,我们正在从Access转移到SQL Server。事实上,我们想继续使用Access,但他们告诉我们,为了访问,我们必须转到他们的“遗留”服务器。是的,但您的示例中与访问相关的内容不正确,可能会失败。如果SQL Server有问题,为什么会出现这种情况?-启用详细错误