Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Räknfel

Postades av 2008-12-22 18:03:13 - Magnus Hallberg, i forum c# (c-sharp), Tråden har 1 Kommentarer och lästs av 890 personer

Jag ska bygga en inloggning där man har tre försök på sej att logga in sen ska ip-adressen spärras. Jag har denna kod, den fungerar som den ska förutom att det blir nåt fel vid räkningen. Jag har satt Session["logInFail"] = 3 i global.asax.

Det som blir fel är när man slår in fel uppgifter första gången så räknar den inte ner utan står kvar på tre, när jag sen andra gången slår fel går den ner till 2 och när jag slår fel en tredje gång går den ner till ett och disablar formuläret. Gör jag ett fel och lämnar sidan och sen går jag tillbaka så står det att jag har två försök kvar och rätt bild visas, så det fungerar ju.

<code>
protected void Page_Load(object sender, EventArgs e)
{
int myReturn = IpAccess.CheckIp(Request.UserHostAddress);
if (myReturn >= 1)
{
Login1.Enabled = false;
lblRejected.Visible = true;
lblLogInCheck.Visible = false;
imgLogIn.Visible = false;
Session["logInFail"] = 0;
imgLogIn.ImageUrl = "~/Graphic/trafficlight_red.png";
}
else
lblRejected.Visible = false;

if (!IsPostBack)
{
lblLogInCheck.Text = "Du har nu " + Session["logInFail"].ToString() + " försök att logga in innan din dator spärras.";
if((int)Session["logInFail"] == 3)
imgLogIn.ImageUrl = "~/Graphic/trafficlight_green.png";
else if ((int)Session["logInFail"] >= 1)
imgLogIn.ImageUrl = "~/Graphic/trafficlight_yellow.png";
else
{
imgLogIn.ImageUrl = "~/Graphic/trafficlight_red.png";
Login1.Enabled = false;
}
}

else
{
lblLogInCheck.Visible = true;
if ((int)Session["logInFail"] == 3)
{
lblLogInCheck.Text = "Du har nu " + Session["logInFail"].ToString() + " försök att logga in innan din dator spärras";
imgLogIn.ImageUrl = "~/Graphic/trafficlight_green.png";
}
else if ((int)Session["logInFail"] >= 1)
{
lblLogInCheck.Text = "Du har nu " + Session["logInFail"].ToString() + " försök att logga in innan din dator spärras";
imgLogIn.ImageUrl = "~/Graphic/trafficlight_yellow.png";
}
else
{
lblLogInCheck.Text = "Din dator är nu spärrad, kontakta administratören för att låsa upp den";
Login1.Visible = false;
imgLogIn.ImageUrl = "~/Graphic/trafficlight_red.png";
}
}
}

protected void Login1_LoginError(object sender, EventArgs e)
{
string ip = Request.UserHostAddress.ToString();
Session["logInFail"] = (int)Session["logInFail"] - 1;

if ((int)Session["logInFail"] <= 0)
{
Login1.Enabled = false;
bool result = IpAccess.AddRejectedIp(ip);
}
}

protected void Login1_LoggedIn(object sender, EventArgs e)
{
Session["logInFail"] = 3;
}
</code>


Svara

Sv: Räknfel

Postades av 2008-12-24 01:33:20 - Magnus Bergström

Har du satt breakpoints i både Login_Error och Page_Load för att se så variabeln verkligen räknas ner?

Jag hade nog valt att inte sätta värdet i global.asax utan istället hantera det i logon-sidan. Varför inte göra en koll på sidan ifall sessions-variabeln är null och i så fall hantera det som första försöket?

Sen en personlig åsikt :)
Om du kallar den "logInFail" känns det mer logiskt att räkna nerifrån och upp till ett max antal fel logons. :)

Kanske nedanstående kod funkar? (har inte testat den alls)

    protected void Page_Load(object sender, EventArgs e)
    {
        int myReturn = IpAccess.CheckIp(Request.UserHostAddress);
        if (myReturn >= 1)
        {
            Login1.Enabled = false;
            lblRejected.Visible = true;
            lblLogInCheck.Visible = false;
            imgLogIn.Visible = false;
            Session["logInFail"] = 3;
            imgLogIn.ImageUrl = "~/Graphic/trafficlight_red.png";
	    return;
        }
        else
            lblRejected.Visible = false;

	// Hantera första besöket
	if (Session["logInFail"] == null)
	    Session["logInFail"] == 0;

        lblLogInCheck.Text = "Du har nu " + Session["logInFail"].ToString() + " försök att logga in innan din dator spärras.";
        if((int)Session["logInFail"] == 0)
            imgLogIn.ImageUrl = "~/Graphic/trafficlight_green.png";
        else if ((int)Session["logInFail"] < 3)
            imgLogIn.ImageUrl = "~/Graphic/trafficlight_yellow.png";
        else
        {
	    lblLogInCheck.Text = "Din dator är nu spärrad, kontakta administratören för att låsa upp den";
            imgLogIn.ImageUrl = "~/Graphic/trafficlight_red.png";
            Login1.Enabled = false;
        }
    }

    protected void Login1_LoginError(object sender, EventArgs e)
    {
        string ip = Request.UserHostAddress.ToString();
        Session["logInFail"] = (int)Session["logInFail"] + 1;             
        
        if ((int)Session["logInFail"] >= 3)
        {
            Login1.Enabled = false;
            bool result = IpAccess.AddRejectedIp(ip);
        }
    }

    protected void Login1_LoggedIn(object sender, EventArgs e)
    {
        Session["logInFail"] = null;
    }


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 801
27 960
271 761
588
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies