webForumDet fria alternativet

Login med paneler

.NET

7 svar · 422 visningar · startad av ctrlz

Medlem sedan okt. 200314 inlägg
Frågan#1

Hejsan!
Har problem med en inloggningskod. I stort sett är det så att jag har en sida där man kan logga in genom att skriva in ett lösenord och användarid. När man trycker på OK skall man ej komma vidare till en annan sida, utan då skall inloggningspanelen släckas och panel nr 2 skall tändas. Jag vet inte riktigt hur jag skall koda vidare för att tända och släcka panelerna. Jag har kodat så att koden kollar texten jag skrivit in, men hur gör jag sen? Jag använder mig av Access och c#, oledb.

String myConn ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Inetpub/wwwroot/sthlmkrog.mdb;";
OleDbConnection cn = new OleDbConnection(myConn);
cn.Open();

String strSQL = "SELECT * FROM admin WHERE namn ='" + login.Text + "' & losen ='" + password.Text + "'";

OleDbCommand cmd = new OleDbCommand(strSQL, cn);
OleDbDataAdapter daTest = new OleDbDataAdapter(strSQL ,cn);

DataSet dsLogin = new DataSet();
daTest.Fill(dsLogin);

dsLogin.Tables.Count.ToString();

cn.Close();1

Medlem sedan sep. 20026 425 inlägg
#2

Du kan ju använda så kallade användarkontroller, UserControls. Vi säger att du har sidan login.aspx, den ser då ut så här:

<%@Page Language="C#" Strict="False" Debug="True" Inherits="login" Src="login.cs" %>
<html>
<head>
<title>Login</title>
</head>

<body>

<form id="login" runat="server">
<asp:placeholder id="panel"></asp:placeholder>
</form>

</body>
</html>

Sen skapar du en ny sida som heter login.cs, som kan se ut ungefär så här:

Imports System;
Imports System.Web;
Imports System.Web.UI;
Imports System.Web.UI.WebControls;
Imports System.Data;

public class login : Page
{

void Page_Load(Object Sender,EventArgs e) {

swich (login.Text)
{
case "":
panel.Controls.Add(Page.LoadControl("login.ascx"));
break;
default:
panel.Controls.Add(Page.LoadControl("_panel.ascx"));
break;
}

}

}

I login.ascx har du ditt inloggninsformulär, i _panel.ascx har du det du vill visa efter att användaren loggat in.
Min kod är otestad och mina kunskaper inom ASP.NET ligger mer inom Visual Basic.NET än C#, men du kan väl testa. :)

/r Jag glömde att skriva att i login.ascx och _panel.ascx ska du ha

<%@Control Language="C#" Strict="False" Debug="True"%>

i stället för

<%@Page Language="C#" Strict="False" Debug="True"%>

.

Medlem sedan jan. 20011 140 inlägg
#3

Använd en datareader för inloggningen.

Jag kan inte c# så jag har kopierat den mesta koden från en annan sida

String myConn ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Inetpub/wwwroot/sthlmkrog.mdb;"; 
OleDbConnection cn = new OleDbConnection(myConn);  

String strSQL = "SELECT * FROM admin WHERE namn ='" + login.Text + "' & losen ='" + password.Text + "'"; 

OleDbCommand cmd = new OleDbCommand(strSQL, cn); 
reader = cmd.ExecuteReader();
cn.Open();

if (reader.Read())  
            {  
                 Inloggningspanel.visible = false;
                 andrapanelen.visible = true;
}
else  
                {  
                    lblMessage.Style["color"] = "red";  
                    lblMessage.Text = "Fel användarnamn eller lösenord.";  
                }  
            }  
reader.close();
sqlConn.Close();

Är inte säker på att jag skrivit rätt men du kan väl testa.

Medlem sedan okt. 200314 inlägg
#4

Tack!

Jag hann lösa det själv, men tack så mycket ni som hjälpte mig, tack tack!

Medlem sedan dec. 20003 887 inlägg
#5

Kan man få se hur lösningen ser ut?

Medlem sedan okt. 200314 inlägg
#6

String myConn ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Inetpub/wwwroot/sthlmkrog.mdb;";
OleDbConnection cn = new OleDbConnection(myConn);
cn.Open();

String strSQL = "SELECT * FROM admin WHERE namn ='" + login.Text + "' AND losen ='" + password.Text + "'";

OleDbCommand cmd = new OleDbCommand(strSQL, cn);
OleDbDataAdapter daTest = new OleDbDataAdapter(strSQL ,cn);

DataSet dsLogin = new DataSet();
daTest.Fill(dsLogin);

int antal = dsLogin.Tables[0].Rows.Count;

if(antal == 1)
{
panel1.Visible=false;
panel2.Visible=true;
}
else
test.Text="Fel lösenord";

cn.Close();

Medlem sedan mars 20023 561 inlägg
#7

Använd gärna [kod]-taggarna när du postar kod.

Medlem sedan juni 20011 732 inlägg
#8

Kanske lite lyxigt att lägga några användaruppgifter i ett eget dataset. :) Nu gissar jag att din applikation inte är så prestandaberoende men ta ändå för vana att alltid använda så lite systemresurser som möjligt!

Här finns lite tips för bättre prestanda:

http://www.dotnetjunkies.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/perftuning.aspx

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)