Avatar billede christianaar Nybegynder
30. januar 2004 - 22:08 Der er 26 kommentarer og
1 løsning

login check på ASP side via hostet MySQL DB

Jeg har brug for lidt hjælp til noget SQL kode.

Min tabel hedder "bruger" og har 3 felter:

BrugerID
Loginnavn
Adgangskode

Jeg har følgende kode der ikke virker:

<%
    option explicit
%>
<!-- #include file="openconn.inc" -->
<%
    dim brugernavn, password, rs, SQL
    brugernavn = Trim(Replace(Request.form("bruger1"),"'","''"))
    password = Trim(Replace(Request.form("password"),"'","''"))

' Der tjekkes om bruger og password er korrekt
    SQL="SELECT * FROM bruger WHERE bruger1 ='" & Loginnavn & "' AND Adgangskode ='" & password & "'"
    Set rs=Conn.Execute(SQL)

' Hvis bruger findes
    If Not (rs.BOF Or rs.EOF) Then
    Session("ID") =rs("Loginnavn")
    Session("Brugeradgang") = True
    Response.redirect "authorised_user_page.asp"

' Hvis bruger ikke findes
    Response.redirect="unauthorised_user_page.htm"
    End If
%><!-- #"include file="closeconn.inc" -->

Til dette får jeg følgende fejlmelding:

Technical Information (for support personnel)

Error Type:
Sun ONE ASP VBScript runtime (0x800A01F4)
'Loginnavn' is undefined
/database_login/check_user.asp, line 11


Håber nogen kan se en mulig løsning!
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:13 #1
Prøv at skrive brugernavn og ikke loginnavn i din SQL sætning sådan her:

    SQL="SELECT * FROM bruger WHERE bruger1 ='" & brugernavn & "' AND Adgangskode ='" & password & "'"
Avatar billede christianaar Nybegynder
30. januar 2004 - 22:27 #2
Tak det løste nok mit problem, men så fik jeg en ny fejl at arbejde med :(

Technical Information (for support personnel)

Error Type:
Sun ONE ASP VBScript runtime (0x800A01F4)
'Conn' is undefined
/database_login/check_user.asp, line 12

Har du nogen ideer?
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:30 #3
Prøv at tilføje Conn til denne linje:
dim brugernavn, password, rs, SQL

Sådan her:

dim brugernavn, password, rs, SQL, Conn
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:35 #4
Der er en ting du skal havde rettet og det er din include fil skal du kalde .asp og ikke .inc
Grunden til dette er at .inc filer kan læses som tekst filer i bowseren og det er sikkert der i du har password til databasen. Hvorimod en .asp ikke kan læses som tekst fil men vil blive udført.
Avatar billede christianaar Nybegynder
30. januar 2004 - 22:37 #5
Jeg indrømmer at jeg er meget grøn, og nu får jeg følgende fejl

Error Type:
Sun ONE ASP VBScript runtime (0x800A01A8)
Object required: 'Conn'
/database_login/check_user.asp, line 12
Avatar billede christianaar Nybegynder
30. januar 2004 - 22:37 #6
det "brugernavn der står i dim er det navnet på feltet i db ?
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:38 #7
Hvad står der i din openconn.inc ? husk at fjerne evt password og brugernavn i databasen
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:39 #8
>>det "brugernavn der står i dim er det navnet på feltet i db ?
Nej det brugernavn er en variable og man definere variable med dim navnet
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:44 #9
For at connecte til en mySQL database skal du havde en connection og den kunne se sådan her ud:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={mySQL};Server=data.domain.com;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;"

Så indeholder din openconn.inc noget der ligner det??
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:03 #10
nej det har jeg lagt i min global.asa fil, der ligger i roden på mit site! er det ok?
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:05 #11
Hvor meget har du lagt i global.asa?
Man kan ligge selve connection string men man kan ikke ligge en aktiv connection
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:07 #12
min openconn.inc fil ser sådan her ud skal jeg erstatte det med
<%
dim Conn

    Set Conn = Server.CreateObject("ADODB.Connection")
    myConn.open(Application("DBCONN"))
%>
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:10 #13
Prøv lige at flytte dim linjern over include filen så de føste linjer bliver:

<%
    option explicit
    dim brugernavn, password, rs, SQL
%>
<!-- #include file="openconn.inc" -->
<%
    brugernavn = Trim(Replace(Request.form("bruger1"),"'","''"))
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:14 #14
Arg det må være søvnen i mine øjne :)

I din include fil åbner du myConn og ikke Conn

Prøv også at rette din include fil til dette:

<%
dim Conn

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open(Application("DBCONN"))
%>
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:23 #15
Håber du stadig er opppe jeg får nu følgende fejl:

Error Type:
ADODB.Recordset.1 (0x80004005)
SQLState: 42S22 Native Error Code: 1054 [TCX][MyODBC]Unknown column 'bruger1' in 'where clause'
/database_login/check_user.asp, line 12

her er mine filer:

check_user.asp
----------------------------------------------------

<%
    option explicit
    dim brugernavn, password, rs, SQL
%>
<!-- #include file="openconn.inc" -->
<%
    brugernavn = Trim(Replace(Request.form("bruger1"),"'","''"))
    password = Trim(Replace(Request.form("password"),"'","''"))

' Der tjekkes om bruger og password er korrekt
    SQL="SELECT * FROM bruger WHERE bruger1 ='" & brugernavn & "' AND Adgangskode ='" & password & "'"
    Set rs=Conn.Execute(SQL)

' Hvis bruger findes
    If Not (rs.BOF Or rs.EOF) Then
    Session("ID") =rs("Loginnavn")
    Session("Brugeradgang") = True
    Response.redirect "authorised_user_page.asp"

' Hvis bruger ikke findes
    Response.redirect="unauthorised_user_page.htm"
    End If
%><!-- #"include file="closeconn.inc" -->

--------------------------------------------------------------------

openconn.inc:
---------------------------
<%
dim Conn

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open(Application("DBCONN"))
%>
--------------------------------------------------------

closeconn.inc
--------------------------------------------------
<%
    Conn.close
    Set Conn=Nothing
%>
----------------------------------------------------

global.asa
----------------------------------------------------------
<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart()
    Application("DBCONN")="Driver={MySQL};SERVER=xxxx;DATABASE=xxxx; UID=xxxx;PWD=xxxx;Extended Properties='OPTION=16387'"
End Sub
</script>

------------------------------------------------
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:25 #16
Ja ja det er jeg :) Det går da fremad :)
Er du sikker på du har en kolonne som hedder:  bruger1  ?
Den hedder ikke brugernavn ??
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:29 #17
Mener du felt navne i db?

De hedder :
BrugerID
Loginnavn
Adgangskode

og min asp fil der skal kalde check_user.asp filen ser således ud:



-------------------------------------------------------------
<form name="Login" method="post" action="check_user.asp">
  <table width="273" border="0" align="center" cellspacing="0" cellpadding="0" bgcolor="#CCCCCC">
    <tr>
      <td align="right" height="47" valign="bottom" width="94">Bruger navn: </td>
      <td height="47" valign="bottom" width="172">
        <input type="text" name="brugernavn" size="20">
      </td>
    </tr>
    <tr>
      <td align="right" width="94">Adgangskode: </td>
      <td width="172">
        <input type="password" name="password" size="20">
      </td>
    </tr>
    <tr>
      <td align="right" height="44" width="94">&nbsp;</td>
      <td height="44" width="172">
        <input type="submit" name="Submit" value="Enter">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" name="Submit2" value="Reset">
      </td>
    </tr>
  </table>
----------------------------------------------------------------
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:31 #18
Nej jeg mener i SQL sætningen,
Arh du har jo skrevet kolonnenavne: BrugerID, Loginnavn, Adgangskode
Så jeg antager Loginnavn er bruger nanvet..

Så prøv at rette SQL sætningen til denne:

SQL="SELECT * FROM bruger WHERE Loginnavn ='" & brugernavn & "' AND Adgangskode ='" & password & "'"
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:38 #19
Det blev nok bedre men nu fik jeg fejl i openconn.inc

Error Type:
Sun ONE ASP VBScript compilation (0x800A0411)
Name redefined: 'Conn'
openconn.inc, line 2, column 5


Skal "FROM bruger" ikke være "FROM bruger1" ?
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:39 #20
Det som skal stå efter FROM er tabel navnet så hedder tabellen bruger eller bruger1

I openconn.inc fjerne du linje:
Dim Conn
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:41 #21
ok så er det ok med bruger, i linien "brugernavn = Trim(Replace(Request.form("bruger1"),"'","''"))" er bruger1 ikke forkert eller referrerer den ikke til noget?
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:42 #22
Ja det er faktsik forkert det skal være brugernavn. Request.Form("brugernavn") referrere til input feltet med navnet "brugernavn"

  <input type="text" name="brugernavn" size="20">
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:51 #23
Så virker det! dog får jeg den forkerte "unauthorised_user_page.htm" vist og ikke authorised_user_page.asp som forventet er det noget du lige kan gennemskue hvis ikke er det dine points alligevel. jeg havde ikke nået så langt uden din hjælp!
Avatar billede eagleeye Praktikant
30. januar 2004 - 23:54 #24
Ok,
men i denne if sætning som tjekker om brugere findes manger der vist en else..

    If Not (rs.BOF Or rs.EOF) Then
    Session("ID") =rs("Loginnavn")
    Session("Brugeradgang") = True
    Response.redirect "authorised_user_page.asp"

' Hvis bruger ikke findes
    Response.redirect="unauthorised_user_page.htm"
    End If


Så prøv at indsætte els lige før Response.redirect="unauthorised_user_page.htm"sådan her:


    If Not (rs.BOF Or rs.EOF) Then
      Session("ID") =rs("Loginnavn")
      Session("Brugeradgang") = True
      Response.redirect "authorised_user_page.asp"
    Else
' Hvis bruger ikke findes
      Response.redirect="unauthorised_user_page.htm"
    End If
Avatar billede christianaar Nybegynder
30. januar 2004 - 23:58 #25
nope det virkede ikke men tak alligevel!
Avatar billede eagleeye Praktikant
31. januar 2004 - 00:05 #26
Er du 100% sikker på brugeren findes i databasen så?

og du fik rettet:
brugernavn = Trim(Replace(Request.form("bruger1"),"'","''"))"

Til:
brugernavn = Trim(Replace(Request.form("brugernavn"),"'","''"))"


ellers så må jeg sige jeg er blank..
Avatar billede christianaar Nybegynder
31. januar 2004 - 00:09 #27
måske er det noget med min "adgangskode" kolonne, men jeg roder videre!
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
Kategori
Kurser inden for grundlæggende programmering

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