You are on page 1of 3

KREIRANJE LOGIN STATUSA

U prethodnu vježbu dodati novu formu koja će nam služiti kao naredna forma koja će biti
prikazana nakon uspješnog logovanja korisnika. Ona će sadržavati jedno dugme koje će
omogućiti odjavu korisnika. Prilikom logovanja korisnika u bazi ćemo čuvati podatak o login
statusu pri čemu će se u polje logovanog korisnika upisati vrijednost 1, tako da ako je
korisnik logovan i neko drugi pokuša se logovati sa tim korisničkim imenom login će biti
onemogućen. Druga forma koju ćemo dodati izgledat će kao na slici ispod:

Dugme „Odjava“ će omogući odjavu korisnika iz sistema pri čemu kada se korisnik odjavi u
polje odjavljenog korisnika će se upisati vrijednost 0.
Za ovu svrhu login-logout napisat ćemo dvije funkcije koje će nam upravo izvršavati
pomenute promjene u bazi. (login postavlja status 1 za prijavljenog korisnika, logout
postavlja 0 za odjavljenog korisnika).

Form1
---------------------------------------------------------------------------

static String employeeID;


static String konekcioniString = "Server=localhost; Port=3306; Database=hr; " +
"Uid=ucenik; Pwd=ucenik";

private void buttonPrijava_Click(object sender, EventArgs e)


{
errorProvider1.Clear();

String korisnickoIme = textBoxKorisnickoIme.Text;


String sifra = textBoxSifra.Text;

String query = "SELECT passwd, CONCAT(first_name, ' ', last_name), " +


" employee_id, login_status FROM employees WHERE username ='" + korisnickoIme + "' ";

try
{
MySqlConnection konekcija = new MySqlConnection(konekcioniString);

konekcija.Open();

MySqlCommand cmd = new MySqlCommand(query, konekcija);

MySqlDataReader reader;
reader = cmd.ExecuteReader();
reader.Read();

if (!reader.HasRows)
{
errorProvider1.SetError(textBoxKorisnickoIme, "Pogrešno korisničko ime
!!!");
}
else
{
String passwd = reader[0].ToString();
String imePrez = reader[1].ToString();
employeeID = reader[2].ToString();
String loginStatus = reader[3].ToString();

if (loginStatus == "1")
{
errorProvider1.SetError(buttonPrijava, "Korisnik je već logovan!!!");
}
else if (sifra == passwd)
{
MessageBox.Show("Uspješno ste logovani " + imePrez);
PostaviStatusLogin();
Form2 fr2 = new Form2();
this.Hide();
fr2.Show();
}
else
{
errorProvider1.SetError(textBoxSifra, "Pogrešan password !!!");
}
}

reader.Close();
konekcija.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void PostaviStatusLogin()


{
String upit = "UPDATE employees SET login_status=1 " +
" WHERE employee_id='" + employeeID + "' ";

try
{
MySqlConnection konekcija = new MySqlConnection(konekcioniString);
konekcija.Open();

MySqlCommand cmd = new MySqlCommand(upit, konekcija);

// Funkcija ExecuteNonQuery() se koristi kada ne očekujemo nikakve


// podatke da nam budu vraćeni na osnovu proslijeđenog upita bazi.
// Ona se koristi kada izvršavamo INSERT, UPDATE, DELETE upite.
cmd.ExecuteNonQuery();

konekcija.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public void PostaviStatusLogout()
{
String upit = "UPDATE employees SET login_status=0 " +
" WHERE employee_id='" + employeeID + "' ";

try
{
MySqlConnection konekcija = new MySqlConnection(konekcioniString);
konekcija.Open();

MySqlCommand cmd = new MySqlCommand(upit, konekcija);

cmd.ExecuteNonQuery();
konekcija.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Form2
---------------------------------------------------------------------------

private void buttonOdjava_Click(object sender, EventArgs e)


{
this.Hide();

// Kreiramo objekat fr1 klase Form1 kako bi mogli pozvati funkciju


// iz te klase da da izvršimo odjavu korisnika
Form1 fr1 = new Form1();
fr1.PostaviStatusLogout();
fr1.Show();
}

You might also like