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:
<?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.
Alleen ik heb nog niet echt het idee kunnen krijgen hoe ik dit moet fixen in C#
?
Onbekende gebruiker
13-02-2015 10:59
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.
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.
?
Onbekende gebruiker
13-02-2015 11:36
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.