Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Blokada użytkownika
Forum PHP.pl > Forum > Przedszkole
deredas
Witam,

chciałbym zaimplementować metodę która jest używana na czatach np. interii. Otóż jak admin zbanuje kogoś to nie można wejść na stronę czatu przez jakiś czas. Nie pomaga to że ma się neostradę i zresetuje się router - robiłem sprawdzałem i mimo iż ma się za chwilę przydzielony inny adres IP to na stronę nie da rady wejść.

W związku z tym chciałem zapytać czy jest taki skrypt który by podobną funkcjonalność oferował ? Pod swoją stronę mam podpięte google analytics, ale tam nie ma podanego konkretnego adresu IP. Choć czytałem, że można go przekazać jako zdefiniowany parametr. Jeśli nie adres IP to może adres MAC komputera tak jak to ma miejsce przy obecnych rozwiązaniach w grach komputerowych on-line.


Pozdrawiam.
Michael2318
Było wiele razy, nie da się zbanować użytkownika 'na stałe'.
Jedyne metody to IP + ciasteczko w przeglądarce.
Skoro resetowałeś router, wystarczyło jeszcze wyczyścić ciasteczka w przeglądarce lub odpalić inną.
MAC da się zmienić, jak pobrać to już nie wiem, ale nie warto się trudzić.
_Borys_
Takie czaty jak na interii są we flashu albo javie a więc cookie flashowe + standardowe zabezpieczenia w przeglądarce oraz IP.
O javie się nie wypowiadam ale pewnie jeszcze więcej możliwości.
deredas
Jak pobrać MAC - znalazłem tutaj:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <title></title>
  5. <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
  6. <meta name="vs_targetSchema" content="http://schemas.
  7. microsoft.com/intellisense/ie5">
  8. <script id="clientEventHandlersJS" language="javascript">
  9. <!--
  10.  
  11. function Button1_onclick() {
  12. var locator = new ActiveXObject
  13. "WbemScripting.SWbemLocator");
  14. var service = locator.ConnectServer(".");
  15. var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
  16. var e = new Enumerator (properties);
  17. document.write("<table border=1>");
  18. dispHeading();
  19. for (;!e.atEnd();e.moveNext ())
  20. {
  21. var p = e.item ();
  22. document.write("<tr>");
  23. document.write("<td>" + p.Caption + "</td>");
  24. document.write("<td>" + p.IPFilterSecurityEnabled + "</td>");
  25. document.write("<td>" + p.IPPortSecurityEnabled + "</td>");
  26. document.write("<td>" + p.IPXAddress + "</td>");
  27. document.write("<td>" + p.IPXEnabled + "</td>");
  28. document.write("<td>" + p.IPXNetworkNumber + "</td>");
  29. document.write("<td>" + p.MACAddress + "</td>");
  30. document.write("<td>" + p.WINSPrimaryServer + "</td>");
  31. document.write("<td>" + p.WINSSecondaryServer + "</td>");
  32. document.write("</tr>");
  33. }
  34. document.write("</table>");
  35. }
  36.  
  37. function dispHeading()
  38. {
  39. document.write("<thead>");
  40. document.write("<td>Caption</td>");
  41. document.write("<td>IPFilterSecurityEnabled</td>");
  42. document.write("<td>IPPortSecurityEnabled</td>");
  43. document.write("<td>IPXAddress</td>");
  44. document.write("<td>IPXEnabled</td>");
  45. document.write("<td>IPXNetworkNumber</td>");
  46. document.write("<td>MACAddress</td>");
  47. document.write("<td>WINSPrimaryServer</td>");
  48. document.write("<td>WINSSecondaryServer</td>");
  49. document.write("</thead>");
  50. }
  51.  
  52. //-->
  53. </script>
  54. </head>
  55. <body>
  56. <INPUT id="Button1" type="button" value="Button"
  57. name="Button1" language="javascript" onclick="return Button1_onclick()">
  58. </body>
  59. </html>
!*!
deredas i co w zawiązku z tym kodem?
deredas
Ta funkcja pobiera adres MAC - mam rację ?

Jeśli pobiera to można sobie zapisać w pliku wszystkie adresy MAC urządzeń które odwiedzają stronę - mam racje ?

Przeciętny użytkownik który nie wie co to adres MAC nie będzie szukał sposobów na podmianę adresu MAC. Tym bardziej jeśli będzie widział napis. np. "strona w budowie"

Chcę zrobić coś takiego:

MAC_ADRESS // adres urzadzenia do zablokowania

if(MAC_ADRESS)
{ wyswietl napis "strona w budowie"}
else
{
wyswietl zawartosc strony
}

Jeśli nie można na podstawie adresu MAC to czy mozna zrobic coś takiego poprzez cookie ?

Adres IP odpada bo ciągle się zmienia i to nie ma sensu. Ale jesli w cookie mozna zapisac jakas informację na podstawie której mozna by zidentyfikowac komputer to by mi to wystarczyło.
!*!
Jestem na innym systemie niż windows np. os x, linux, bsd, haiku i Twój skrypt nie działa, więc nic nie zostanie pobrane.
Wyłączę JS i Twój skrypt nie działa.
Cookie? Wyczyszczę.
EverCookie? Wyczyszczę.
IP? Zmienię.

Zamiast kombinować, użyłbyś wyszukiwarki, było dużo wątków odnośnie banowania i każdy sprowadził się do jednego... że jest to niemożliwe.
StrefaPi
ale ogólnie to ten skrypt nie działa i nie będzie działał poprawnie nawet w windows, jest z czasów Internet Explorera 5/6 (2006 rok) i ActiveX
deredas
Cytat(!*! @ 18.03.2013, 18:10:42 ) *
Jestem na innym systemie niż windows np. os x, linux, bsd, haiku i Twój skrypt nie działa, więc nic nie zostanie pobrane.
Wyłączę JS i Twój skrypt nie działa.
Cookie? Wyczyszczę.
EverCookie? Wyczyszczę.
IP? Zmienię.

Zamiast kombinować, użyłbyś wyszukiwarki, było dużo wątków odnośnie banowania i każdy sprowadził się do jednego... że jest to niemożliwe.



Myślisz jak haker czy osoba która za wszelką cenę chce się dostać.

Normalni użytkownicy komputera jak widzą napis " strona w budowie" to nie przechodzą z windowsa na linux, nie zmieniają IP itd. tylko po prostu opuszczają stronę....

Nie chcę szukać idealnego rozwiązania.

Szukam rozwiązania opierawszy się na kilku ważnych założoneniach:
- wiem, że użytkownik używa windowsa (google analytics mi to raportuje)
- wiem, że użytkownik nie jest obeznany na tyle w komputerach aby stwierdzić, że trzeba wyłączyć JS i wyczyścić coookie aby strona się załadowała...

jest to uzytkownik który jak zobaczy napis " strona w budowie" to sobie odpuści....

rozumiesz mnie teraz ?

ps.Zamiast kombinować, użyłbyś wyszukiwarki, było dużo wątków odnośnie banowania i każdy sprowadził się do jednego... że jest to niemożliwe.

Użyłem wyszukiwarki - tak jak mówisz znalazłem dużo wątków odnośnie banowanie i każdy z nich miał zupełne inne założenia i dlatego sprowadzał się do jednego stwierdzenia - że jest to niemożliwe.
Natomiast mój cel jest o wiele bardziej prosty smile.gif
fiszol
Sorry że się wtrącam, ale: jeśli zakładasz, że z Twojej strony/aplikacji korzystają tylko ainformatyczni ludzie korzystający z tylko jednego OS, to kiedyś będziesz miał przykrą niespodziankę jak ktoś sobie z zwykłej nudy zacznie dłubać.
Dominator
Proponuję evercookie.
Michael2318
Skoro mówisz, ze masz takich ainfachowców na tej stronie to czemu nie zrobsiz tego co wszyscy normalni ludzie (IP + ciasteczka) ? Jak to przejdzie to wszystko przejdzie.
!*!
Cytat
Użyłem wyszukiwarki - tak jak mówisz znalazłem dużo wątków odnośnie banowanie i każdy z nich miał zupełne inne założenia i dlatego sprowadzał się do jednego stwierdzenia - że jest to niemożliwe.
Natomiast mój cel jest o wiele bardziej prosty


I dlatego właśnie miałeś wyciągnąć ten sam wniosek. Jak masz taki świetny wywiad z GA, to stwórz ciastko, w czym problem? Tylko później nie pytaj jak to działa na czaterii i dlaczego jednak dało się to obejść.
Dominator - evercookie będzie za bardzo hakerskie... przecież użytkownik nie wie jak wyczyścić historię, a co dopiero całe foldery/pamięć.
deredas
Cytat(!*! @ 18.03.2013, 20:32:57 ) *
I dlatego właśnie miałeś wyciągnąć ten sam wniosek. Jak masz taki świetny wywiad z GA, to stwórz ciastko, w czym problem? Tylko później nie pytaj jak to działa na czaterii i dlaczego jednak dało się to obejść.
Dominator - evercookie będzie za bardzo hakerskie... przecież użytkownik nie wie jak wyczyścić historię, a co dopiero całe foldery/pamięć.



Najlepszym dowodem, że użytkownik nie wie że trzeba wyczyścić historię jestem ja (nie wiedziałem że jak wyczyszczę historię to ban z czata zniknie).

No właśnie tutaj do Was piszę (dział przedszkole) bo nie wiem jak to cookie się tworzy. I dlatego proszę Was o pomoc.




Nie każdy kierowca pojazdu wie gdzie jest w jego aucie aparat zapłonowy, choć korzysta z niego codzinnie przy uruchamianiu auta ;) To samo z użytkownikami internetu smile.gif
Michael2318
tabela banlist w bazie:
Cytat
| ban_id | ban_ip | ban_expire |
| 1 | 154.84.24.4 | 136854154 |
| 2 | 244.64.84.4 | 136854154 |


  1. if ( !isset($_COOKIE['banned') ) // jesli nie istnieje ciasteczko 'banned' to sprawdzamy czy ten ktos jest zbanowany
  2. {
  3. $sql = "SELECT * FROM `banlist` WHERE ban_ip = '".$_SERVER['REMOTE_ADDR']."' AND ban_expire > ".time();
  4. if ( !($result = mysql_query($sql)) )
  5. {
  6. die('error in sql<br>'.mysql_error());
  7. }
  8. $num = mysql_num_rows($result);
  9. if ( $num > 0 )
  10. {
  11. setcookie('banned', $row['ban_id'], $row['ban_expire']); // jesli to IP jest w banliscie to tworzymy ciasteczko i...
  12. die('you are banned'); // wypluwamy error
  13. }
  14. }
  15. else // jesli ciasteczko istnieje to tylko sprawdzamy czy przypadkiem admin tego bana nie usunal przed czasem
  16. {
  17. $sql = "SELECT * FROM `banlist` WHERE ban_id = ".intval($_COOKIE['banned']." AND ban_expire > ".time();
  18. if ( !($result = mysql_query($sql)) )
  19. {
  20. die('error in sql<br>'.mysql_error());
  21. }
  22. $num = mysql_num_rows($result);
  23. if ( $num < 1 )
  24. {
  25. setcookie('banned', (time()-10), (time()-10)); //usuwamy ciasteczko bo admin zdjal tego bana
  26. }
  27. }


Można dodać przed wszystkim:
  1. $sql = "DELETE FROM `banlist` WHERE ban_expire < ".time();
  2. if ( !($result = mysql_query($sql)) )
  3. {
  4. die('error in sql<br>'.mysql_error());
  5. }


aby wywalić stare/przeterminowane bany, wtedy ten kawałek w pierwszych dwoch zapytaniach: ban_expire > ".time() można sobie darować.
Jeśli chcesz mieć też bany 'na zawsze' to oznaczaj je w ban_expire jako zero, a od strony php odpowiednio zwarunkuj, nie chce mi się już tego dopisywać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.