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.
