C# 3 pogingen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mathieu Posthumus

Mathieu Posthumus

13/02/2015 09:23:53
Quote Anchor link
Hey mensen. ik heb bezig met een C# login script nu moet ik dus mensen laten inloggen natuurlijk.
Maar ze hebben maar 3 pogingen om in te loggen.

Alleen ik heb zoveel manieren geprobeert alleen werkte het steeds niet.
met het bedoel ik mijn while loop.

Wat ik nu heb is dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Program
{
    static void Main(string[] args)
    {
        Console.Write("Gebruikersnaam: ");
        string name;
        name = Console.ReadLine();
        if (checkPass() == true)
        {
            Console.WriteLine("Welkom bij SoundSharp {0}", name);
        }
        Console.ReadKey();
    }

    public static Boolean checkPass()
    {
        Console.Write("Wachtwoord: ");
        string password = "SOUNDSHARP";
        string userInvoer = Console.ReadLine();
        string invoer = userInvoer.ToUpper();
        bool check1;
        int pogingen = 0;
        do
        {
            if (pogingen == 3)
            {
                Console.WriteLine("Te vaak foutief wachtwoord ingevoerd.\nHet programma zal nu sluiten.");
            }
            else
            {
                if (invoer == password)
                {
                    Console.WriteLine("Goed");
                    check1 = true;
                }
                else
                {
                    Console.WriteLine("Fout");
                    check1 = false;
                    pogingen += 1;
                }
            }
        } while (check1 == false);
    }
}


Het is voor mij niet duidelijk hoe ik het dus moet maken.
Dus als jullie het zouden willen, dat jullie er ook even een uitleg bij geven.

Dankjewel, Mathieu.
Gewijzigd op 13/02/2015 09:37:46 door Mathieu Posthumus
 
PHP hulp

PHP hulp

04/08/2020 22:26:57
 

13/02/2015 09:45:26
Quote Anchor link
Ik zou de methods maken om te checken hoeveel pogingen er al zijn gedaan. En niet met if else if else else if.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static checkPass()
{
   if(userInvoer.ToUpper() == "SOUNDSHARP") {
   return true;
   }
  
   $this->addTry();
   return false;
}


private function addTry($try)
{
   $this->tries = $this->tries+1;
}
 
Mathieu Posthumus

Mathieu Posthumus

13/02/2015 09:47:24
Quote Anchor link
Rickert ik heb zelf geen verstand van OOP.
Liever op (gewone) manier uitlegge.
En ik heb nog niet super veel verstand van methods!
 
- Ariën -
Beheerder

- Ariën -

13/02/2015 09:59:16
Quote Anchor link
C# is toch voornamelijk OOP? Waarom zou je er dan niet aan willen beginnen?
 

13/02/2015 10:07:26
Quote Anchor link
Aha oke! Voortaan ff erbij zetten. Geen probleem ;)

Wat je wilt doen is een class maken die de inlog afhandelt, of dit nu in PHP of C# is, OOP is eend denkwijze.

Denk na over wat je wilt bereiken per class en wat je wilt checken, if en else's moet je zoveel mogelijk vermijden.

methods wat je wellicht wilt gebruiken:

- checkPassword();
- addTry();
- doLogin();
- addUser();

Wat je wilt is dus gebruik maken van de class en niet alles in de class regelen.
In je hoofdbestand ga je deze acties oproepen.

Dan in tekst uitleggen nu.

Je hebt een user die je wilt verifieren. Haal deze gebruiker op uit de DB of iets.
Ga daarna vergelijken of de gebruiker gelijke wachtwoorden heeft gebruikt.
Zonee, dan moet je het onthouden voor die user in een sessie o.i.d of bij de user zelf in de DB.

Elke functie/method zou zo moeten zijn dat je iets checkt als het niet zo is moet je iets returnen zodat je kan herkennen dat het niet goed is gegaan.

Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function getImage($url)
{

   if (! $image = file_get_contents('/pad/naar/image.jpg')) {
      return false;
   }

  
   return $image;
}

function
findUser($username)
{

   if ($user = query('SELECT * FROM users WHERE username = $username')) {
      return $user;
   }

  
   return false;
}

?>


Ik hoop dat het het wat duidelijker maakt. Ben zelf ook ngo geen OOP expert en leer elke dag.
 
Mathieu Posthumus

Mathieu Posthumus

13/02/2015 10:24:00
Quote Anchor link
oke. wel fijn dat je een voorbeeld meegeeft.

Alleen ik heb nog niet echt het idee kunnen krijgen hoe ik dit moet fixen in C#
 

13/02/2015 10:59:59
Quote Anchor link
Dat ligt van je applicatie af. PHP is daarintegen makkelijker, ik ben niet bekend met C# maar dit is wel de benadering die je moet nemen voor OOP ongeachte de taal van de code.

Ik zou zeggen begin met het maken vand e class die je nu al hebt van de user.
Ga daar functies maken die je wilt gebruiken;
- checken van password
- inloggen van de user

Zodra je dat hebt gedaan en het werkend hebt ookal heb je heel veel ifjes en elsjes in je code dan post je het nog een keer hier en kijken we er samen naar.
Dan maken we er een Dojo van, samen leren en je code schrijven / refinen.
 
Mathieu Posthumus

Mathieu Posthumus

13/02/2015 11:03:26
Quote Anchor link
Naja het is een school opdracht. Maar ik zal zeker als het is gelukt even alten weten
 
Jacco Engel

Jacco Engel

13/02/2015 11:29:38
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Program
{
    static void Main(string[] args)
    {
        Console.Write("Gebruikersnaam: ");
        string name;
        name = Console.ReadLine();
        if (checkPass() == true)
        {
            Console.WriteLine("Welkom bij SoundSharp {0}", name);
        }
        Console.ReadKey();
    }

    private int pogingen = 0;
    
    public static Boolean checkPass()
    {
        Console.Write("Wachtwoord: ");
        string password = "SOUNDSHARP";
        string userInvoer = Console.ReadLine();
        string invoer = userInvoer.ToUpper();
        bool check1;
        do
        {
            if (pogingen == 3)
            {
                Console.WriteLine("Te vaak foutief wachtwoord ingevoerd.\nHet programma zal nu sluiten.");
            }
            else
            {
                if (invoer == password)
                {
                    Console.WriteLine("Goed");
                    check1 = true;
                }
                else
                {
                    Console.WriteLine("Fout");
                    check1 = false;
                    pogingen += 1;
                }
            }
        } while (check1 == false);
    }
}


Volgens mij zou dit moeten doen wat je wil :)

Maar dan loop je tegen een ander probleem aan denk ik. Als je de class herinitialiseerd elke keer als je probeerd in te loggen dan zal elke keer je counter resetten.

Mocht dit het geval zijn is de enige oplossing die ik kan bedenken opslaan in een externe file (normaal ook niet echt slim maar voldoende voor een schoolopdracht)

De reden dat de 3 pogingen met deze code niet werk is omdat je keer als je de functie aanroept de pogingen reset.

Echter (als ik me niet vergis) met mijn oplossing is het een class variable ipv een locale variabele. Deze word ge(re)set als je de class initialiseerd.
 

13/02/2015 11:36:28
Quote Anchor link
Schoolopdrachten moeten naar mijn idee ook enigsinds kloppen. Ik weet van mijn schooltijd dat het echt KUT geleerd werd en ik bij sollicitaties er amper doorheen kwam omdat mijn OOP skills onder het niveau lagen.

Zelf leer zoveel mogelijk OOP en patterns en regels zodat het niveau gewoon aanzienlijk stijgt.
 
Jacco Engel

Jacco Engel

13/02/2015 11:50:17
Quote Anchor link
Rickert,

Ben ik zeker met je eens dat school opdrachten moeten kloppen :P, maar volgens mij gaat dit zonder externe file werken.

Verder moet ik eerlijk toegeven dat mn c# kennis ook van bijna 9 jaar geleden is :P
 

13/02/2015 11:53:22
Quote Anchor link
Ja dat met de externe file is ook geen probleem inderdaad. Maar de ifjes en elsjes in een method moet je altijd minimaliseren, werdt mij geleerd.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.