Avatar billede discowarp9 Nybegynder
12. oktober 2003 - 23:09 Der er 1 kommentar og
1 løsning

Login system med MySQL database

Hejsa,
Jeg prøver at lave et login system i asp.net der tager brugernav og kodeord som input fra en form, og sammenligner med en post i en mysql database, og hvis brugeren findes og kodeordet korrekt, oprettes sessionen.
Problemet er at jeg også har et andet udtræk, hvor jeg også binder data, som skal udskrives i et repeater control. Det resulterer i hvert fald i en "System.IndexOutOfRangeException" fejl...
Koden ser således ud:
-----------------------------------------------------------
<%@ Page EnableViewState="false" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="Microsoft.Data.Odbc" %>
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Port=3306; Option=131072; Stmt=; Database=forum; uid=; pwd=;")
dbconn.Open()
sql="Select * From news order by pointoftime desc limit 0,10;"
dbcomm=New OdbcCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
users.DataSource=dbread
users.DataBind()
dbread.Close()
dbconn.Close()
end sub

sub handlelogin(sender As object, e As eventargs)
dim dbconn,sql,dbcomm,dbread
dbconn=New OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Port=3306; Option=131072; Stmt=; Database=forum; uid=; pwd=;")
dbconn.Open()
sql="Select * From users where username = '" & Replace(Request.Form("username"), "'", """") & "';"
dbcomm=New OdbcCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
users.DataSource=dbread
users.DataBind()
  If dbread.Read() Then
    Session("User") = dbread.DataItem("Username")
    If dbread.DataItem("Status") <> "" Then
      Session("Status") = dbread.DataItem("Status")
    End If
  End If
dbread.Close()
dbconn.Close()
end sub
</script>

...html kode...

      <asp:Repeater id="users" runat="server">
      <HeaderTemplate>
      <table id="tblcontent" cellspacing="0">
      </HeaderTemplate>

      <ItemTemplate>
      <tr>
        <td class="newslight"><%#Container.DataItem("headline")%><br />
        <%#Container.DataItem("pointoftime")%> | By: <%#Container.DataItem("composer")%>
    <hr /><%#Container.DataItem("newstext")%></td>
      </tr>
      </ItemTemplate>

      <FooterTemplate>
      </table>
      </FooterTemplate>
      </asp:Repeater>
-----------------------------------------------------------

Det mærkelige er, at det virker når jeg skriver users.DataSource=dbread, men når jeg ændrer "users" til f.eks "news" eller "login", får jeg en "name not declared" fejl. Hvis jeg så deklarere den tidligere med "dim news" får jeg en "System.NullReferenceException: Object variable or With block variable not set" fejl.

Er der nogen der kan forklare mig noget af alt det her?
-Peter.
Avatar billede discowarp9 Nybegynder
12. oktober 2003 - 23:29 #1
Jeg har selvfølgelig ændret Request.Form("Username") til Username.Text...
Avatar billede discowarp9 Nybegynder
14. oktober 2003 - 14:43 #2
Lukker igen og prøver et nyt spørgsmål...
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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