• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[PHP] Sesja. Sprawdzanie czy administrator jest zalogowany

0 głosów
1,843 wizyt
pytanie zadane 2 listopada 2016 w PHP przez HellBurner Nowicjusz (120 p.)

Hejka. Na początek powiem iż korzystam ze skryptu do logowania z kanału Pasja-Informatyki. Po zalogowaniu mam mały panel, a na pierwszej stronie jest shoutbox i lista administratorów. I teraz chciałbym zrobić, aby przy tej liście pojawiała się ikonka czy dany administrator jest online, ale nie mam pojęcia jak. 

Startuję sesję w ten sposób:
 

session_start();

 

komentarz 2 listopada 2016 przez Sinoviesta Nowicjusz (230 p.)
Coś takiego powninno zadziałać.
$_SESSION['admini_online']= array('admin1', 'admin2');

Teraz sobie to możesz pobrac do js ajaxem, albo zrobic echo 'skryptjs ktory zaznaczy ze admin jest dostepny'
komentarz 2 listopada 2016 przez HellBurner Nowicjusz (120 p.)

Teraz sobie to możesz pobrac do js ajaxem, albo zrobic echo 'skryptjs ktory zaznaczy ze admin jest dostepny'

Właśnie to niezbyt potrafię zrobić crying

komentarz 2 listopada 2016 przez Sinoviesta Nowicjusz (230 p.)

Aha.

No mozna zrobic cos takiego:
 

if($_SESSION['admini'][0]=='jacek'){
echo '<script>
document.getElementById('element_jacek').style.color=color('green');
</script>';
}

 

1
komentarz 2 listopada 2016 przez efiku Szeryf (75,160 p.)
edycja 2 listopada 2016 przez efiku

Coś takiego powninno zadziałać.

Nie będzie działać.

No mozna zrobic cos takiego: 

To również, nie będzie działać :D

Właśnie to niezbyt potrafię zrobić

Dodać kolumnę do tabeli z użytkownikami o nazwie np. is_online, która będzie w momencie poprawnego logowania zmieniać wartość z 0 na 1 dla zalogowanego użytkownika.

W panelu administracyjnym prawdopodobnie:
SELECT user.nick user.is_online WHERE user.role == ADMIN 

Więcej nie podpowiem, bo programowanie wymaga myślenia, robiąc wszystko gotowe, zabieram Ci całą zabawę.

komentarz 2 listopada 2016 przez HellBurner Nowicjusz (120 p.)

Dodać kolumnę do tabeli z użytkownikami o nazwie np. is_online, która będzie w momencie poprawnego logowania zmieniać wartość z 0 na 1 dla zalogowanego użytkownika.

W panelu administracyjnym prawdopodobnie: 
SELECT user.nick user.is_online WHERE user.role == ADMIN 

Więcej nie podpowiem ;)

Też o tym myślałem tylko jak sprawdzić czy admin się przypadkiem nie wylogował? Albo czy sesja nie jest przedawniona. Mimo to dzięki za odpowiedź. smiley

komentarz 3 listopada 2016 przez Abel Mądrala (5,140 p.)
to czy jakiś admin jest zalogowany czy nie , możesz sprawdzić zapytaniem do bazy

2 odpowiedzi

0 głosów
odpowiedź 3 listopada 2016 przez Filip2248 Dyskutant (8,840 p.)

Aby zrealizować coś takiego musisz utrzymywać stałe połączenie komputera takiego admina z komputerem użytkownika. Służą do tego tzw. Web Socket'y, które są wykorzystywane np. do tworzenia gier online, czatów itp.

Przykładowym rozwiązaniem jest Socket.io

komentarz 3 listopada 2016 przez Boshi VIP (100,240 p.)
jak jest początkujący to prędzej bebechy wyrzyga niż to websocetami ogarnie... prościej już dać long pooling ajax i w momencie zmiany danych słać requesta.
0 głosów
odpowiedź 11 listopada 2016 przez Mateusz Domurad Początkujący (400 p.)

Skoro używasz systemu logowania od MZ to zrobimy tak:

Musisz najpierw zrobić w swojej tabeli w bazie danych 2 nowe kolumny - permissions (jako TEXT) i online (jako INT). Do każdego usera wpisz jego Uprawnienie np. Administrator. Jeżeli masz rejestrację to już sam napiszesz sobie, aby każda osoba zarejestrowana miała zwykłe uprawnienia.

Jeżeli masz już tą kolumnę uzupełnioną:

if ( $ilu_userow>0 ) {

$wiersz = $rezultat->fetch_assoc();
$_SESSION['user'] = $wiersz['user'];
$_SESSION['drewno'] = $wiersz['drewno'];

...

$rezultat->free_result();

}

Dopisz do tego swojego kodu sesję z uprawnieniami:

$_SESSION['permissions'] = $wiersz['permissions'];

oraz kod, gdzie będzie po zalogowaniu wartość online zmieniał na 1.

if ( $setOnline = $polaczenie->query("UPDATE users SET online=1 WHERE user=" . $_SESSION['user'] . "" );
$_SESSION['online'] = $wiersz['online'];

Po tym wszystkim kod z odcinka z poprawkami powinien wyglądać tak:

if ( $ilu_userow>0 ) {

$wiersz = $rezultat->fetch_assoc();
$_SESSION['user'] = $wiersz['user'];
$_SESSION['drewno'] = $wiersz['drewno'];

// reszta twoich zmiennych sesji ;) a po nich:

$_SESSION['permissions'] = $wiersz['permissions'];

if ( $setOnline = $polaczenie->query("UPDATE users SET online=1 WHERE user=" . $_SESSION['user']" . " );
$_SESSION['online'] = $wiersz['online'];

$rezultat->free_result();

}

I teraz masz również informacje o użytkownikach ONLINE.

Jeżeli chcesz to wyświetlić to przy administratorach:

if ( $_SESSION['online'] == 1 ) {
echo 'ONLINE';
} else {
echo 'OFFLINE';
} 

I teraz masz już informacje kto jest online. Możesz dodać potem AJAXa i sprawdzać czy zmienił się stan użytkownika z ONLINE na OFFLINE i na odwrót :)

Mam nadzieje, że pomogłem.

Pozdrawiam!

komentarz 11 listopada 2016 przez HellBurner Nowicjusz (120 p.)
Właśnie wszystko co napisałeś to wiem, ale nie potrafię sprawdzić później czy zmienił ten status na offline ;/
komentarz 12 listopada 2016 przez Mateusz Domurad Początkujący (400 p.)

Jeżeli będzie offline, to wtedy napis przy administratorze też będzie OFFLINE. Jeżeli nie o to chodzi, to już nie rozumiem indecision

Podobne pytania

0 głosów
1 odpowiedź 1,106 wizyt
0 głosów
1 odpowiedź 1,661 wizyt
pytanie zadane 3 stycznia 2019 w PHP przez LeeVay Użytkownik (740 p.)
0 głosów
3 odpowiedzi 670 wizyt
pytanie zadane 10 czerwca 2018 w PHP przez Q7V Gaduła (4,250 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...