Avatar billede mortenbock Nybegynder
13. januar 2006 - 18:12 Der er 9 kommentarer og
1 løsning

Forskel på connection strings

Hej Eksperter.

Jeg undrer mig lidt over hvad forskellen er på disse måder at forbinde til en database på.

Hvad er forskellen på disse to?

SET rs = Server.CreateObject("ADODB.Connection")
rs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/usersystem.mdb")

og

SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/usersystem.mdb")

Den der er foreslået af webhotellet giver mig en fejl senere i scriptet.

Hele scriptet kan ses her i den for der giver mig en fejl:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
  <TITLE>Login</TITLE>
</HEAD>
<BODY>

<%
SET rs = Server.CreateObject("ADODB.Connection")
rs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/usersystem.mdb")

If Request("mode") = "Check" then

    ' Authes user, password, and fixed a known securitybug to many login systems.
        strUsername = Trim(Replace(request("username"),"'","''" ))
        strPassword = Trim(Replace(request("password"),"'","''" ))

  Sql = "Select Count(*) as Found from users where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = rs.Execute(Sql) <<<<<<<<<<<Her opstår fejlen!
  if LO("Found") = 0 then
    Session("login") = ""
    error = "You´re not authed be the system"
  else
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/usersystem.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM users where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')"
  Set ez = myConn.Execute(strSQL)
    Session("login") = "Authed"
    Response.Redirect "default.asp"
    EZ.Close
    RS.Close
    Conn.Close
  End if
End if
%>

<br>
<center>
<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check">
<h1>Velkommen til bandmanager:</h1><br>
<br>
Brugernavn:
    <input class='text' type='text' name='username' size='15' value=""><br>
Password:
<input class="text" type="password" value="" name="password" size="15"><br>
<input class="text" type="submit" value="Login" name="submit">
<br><br><%=error%>
</form>

Confused ?? Enter test as both login & password to tjek the script !!

</center>

</BODY>
</HTML>


Fejlmeddelelsen hedder:
error '80004005'

Unspecified error
Avatar billede mortenbock Nybegynder
13. januar 2006 - 18:13 #1
Roder jeg rundt i om det er VB eller Javascript jeg benytter?
Avatar billede locturian Nybegynder
13. januar 2006 - 18:25 #2
Til Access bruger jeg altid (selvom det er sjældent jeg bruger Access) :

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/db/database.mdb")
Conn.Open DSN

:) Håber du kan bruge den
Avatar billede arne_v Ekspert
13. januar 2006 - 18:34 #3
SET rs = Server.CreateObject("ADODB.Connection")
rs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/usersystem.mdb")

er OLE DB (via en OLE DB provider for Access)

SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/usersystem.mdb")

er ODBC (via OLE DB provider for ODBC og en ODBC driver for Access)
Avatar billede mortenbock Nybegynder
13. januar 2006 - 19:08 #4
Hvordan kan det være der opstår fejl i dette

Sql = "Select Count(*) as Found from users where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = rs.Execute(Sql)

bare fordi jeg skifter til

SET rs = Server.CreateObject("ADODB.Connection")
rs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/usersystem.mdb")

Er der nogen logisk forklaring på hvorfor den sql sætningen virker i den ene, men ikke den anden?
Avatar billede arne_v Ekspert
13. januar 2006 - 21:29 #5
jeg tror at password og username er reserverede ord i en af driverne

prøv med

Sql = "Select Count(*) as Found from users where ([username] = '" & strUsername  & "') and ([password] ='" & strPassword  & "')"
  Set LO = rs.Execute(Sql)
Avatar billede mortenbock Nybegynder
13. januar 2006 - 22:03 #6
arne_v> Det er dælme skarpt set :-) Nu virker det.

Jeg har også lige ryddet lidt ud i scriptet nu jeg var igang, så det værdig kom til at se sådan ud:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Login</title>
</head>
<body>

<%
If Request("mode") = "Check" then
       
        ' Authes user, password, and fixed a known securitybug to many login systems.
        strUsername = Trim(Replace(request("username"),"'","''" ))
        strPassword = Trim(Replace(request("password"),"'","''" ))
       
        set conn = Server.CreateObject("ADODB.Connection")
        'conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/usersystem.mdb")
        conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/usersystem.mdb")
       
        Sql = "Select Count(*) as Found from users where ([username] = '" & strUsername  & "') and ([password] ='" & strPassword  & "')"
        Set rs = conn.Execute(Sql)
       
                if rs("Found") = 0 then
       
                        Session("login") = ""
                        error = "You´re not authed be the system"
       
                else
       
                        strSQL = "SELECT * FROM users where ([username] = '" & Request("username") & "') and ([password] ='" & Request("password") & "')"
                        Set rs2 = Conn.Execute(strSQL)
                        Session("login") = "Authed"
                        Response.Redirect "default.asp"
                        rs2.Close
       
                End if
        rs.Close
        Conn.Close
End if
%>

<br>
<center>
<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check">
<h1>Velkommen til bandmanager:</h1><br>
<br>
Brugernavn:
    <input class='text' type='text' name='username' size='15' value=""><br>
Password:
<input class="text" type="password" value="" name="password" size="15"><br>
<input class="text" type="submit" value="Login" name="submit">
<br><br><%=error%>
</form>

Confused ?? Enter test as both login & password to tjek the script !!

</center>

</body>
</html>
Avatar billede arne_v Ekspert
13. januar 2006 - 22:14 #7
så ligger jeg et svar
Avatar billede mortenbock Nybegynder
16. januar 2006 - 17:57 #8
Åh nej... nu begynder det at ligne en periodisk fejl!

Jeg har ikke ændret noget som helst siden i fredags, og nu kommer den samme fejl igen!
Avatar billede mortenbock Nybegynder
16. januar 2006 - 18:03 #9
Der er ikke ændret noget i de filer der har noget med login at gøre. Hverken databasen eller login siden. Ergo må det være nogle eksterne faktorer der spiller ind?

Browseren skriver:

error '80004005'

Unspecified error

/booze/www/admin/login.asp, line 23
Avatar billede mortenbock Nybegynder
16. januar 2006 - 19:09 #10
Nu har jeg lavet scriptet om. Så vidt jeg kunne se, så var den ikke glad for at benytte Count(*) funktionen. Så jeg har lavet det lidt om til følgende:

<%
If Request.Form("mode") = "Check" then
     
        ' Authes user, password, and fixed a known securitybug to many login systems.
        strUsername = Trim(Replace(request.Form("user"),"'","''" ))
        strPassword = Trim(Replace(request.Form("pass"),"'","''" ))
     
        set conn = Server.CreateObject("ADODB.Connection")
        conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/usersystem.mdb")
     
        Sql = "SELECT * from users where [user] = '" & strUsername  & "' and [pass] ='" & strPassword  & "'"
        Set rs = conn.Execute(Sql)
     
                if rs.EOF then
     
                        Session("login") = ""
                        error = "You´re not authed be the system"
     
                else
     
                        Session("login") = "Authed"
                        Response.Redirect "default.asp"
     
                End if
        rs.Close
        set rs = Nothing
        conn.Close
        set conn = Nothing
End if
%>

Nu ser det ud til at virke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester