IP Adressen sperren

  • geschlossen

  • anni971
  • 1491 Aufrufe 5 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • IP Adressen sperren

    Guten Morgen Community!

    Ich habe vor auf meiner Homepage einen kleiner Counter zum einbauen, der auf der Progammiersprache PHP aufgebaut ist.
    Im Hintergrund läuft die Datenbank auf dem Server auf Basis MySQL.

    Dadurch das ich mich nicht wirklich in MySQL auskenne wende ich mit der Frage an Euch:

    Wo kann ich in dieser Datenbank die IP Adressen sperren, welche beim Besuch der Homepage nicht mitgezählt werden.

    Quellcode

    1. SELECT COUNT( * ) AS `Zeilen` , `visit`
    2. FROM `counter_ips`
    3. GROUP BY `visit`
    4. ORDER BY `visit`
    5. LIMIT 0 , 30


    Quellcode

    1. SELECT *
    2. FROM `counter_values`
    3. LIMIT 0 , 30


    Und hier der dazugehörige PHP - Code:

    PHP-Quellcode

    1. <?
    2. // einstellungen
    3. // ip-protection in seconds
    4. $counter_expire = 600;
    5. // datebase host
    6. $counter_host = "counter_host";
    7. $counter_user = "counter_user";
    8. $counter_password = "counter_password";
    9. $counter_database = "counter_database";
    10. $counter_connected = true;
    11. // connect to database
    12. $link = @mysql_connect($counter_host, $counter_user, $counter_password);
    13. if (!$link)
    14. {
    15. // can't connect to database
    16. $counter_connected = false;
    17. echo "Counter: " . mysql_error();
    18. }
    19. else
    20. {
    21. // select database
    22. $db_selected = @mysql_select_db($counter_database, $link);
    23. if (!$db_selected)
    24. {
    25. // can't select database
    26. $counter_connected = false;
    27. echo "Counter: " . mysql_error();
    28. }
    29. }
    30. if ($counter_connected == true)
    31. {
    32. $ignore = false;
    33. // get counter information
    34. $sql = "select * from counter_values";
    35. $res = mysql_query($sql);
    36. // fill when empty
    37. if (mysql_num_rows($res) == 0)
    38. {
    39. $sql = "INSERT INTO `counter_values` (`id`, `day_id`, `day_value`, `week_id`, `week_value`, `month_id`, `month_value`, `year_id`, `year_value`, `all_value`, `record_date`, `record_value`) VALUES ('1', '" . date("z") . "', '1', '" . date("W") . "', '1', '" . date("n") . "', '1', '" . date("Y") . "', '1', '1', NOW(), '1')";
    40. mysql_query($sql);
    41. $sql = "select * from counter_values";
    42. $res = mysql_query($sql);
    43. $ignore = true;
    44. }
    45. $row = mysql_fetch_assoc($res);
    46. $day_id = $row['day_id'];
    47. $day_value = $row['day_value'];
    48. $week_id = $row['week_id'];
    49. $week_value = $row['week_value'];
    50. $month_id = $row['month_id'];
    51. $month_value = $row['month_value'];
    52. $year_id = $row['year_id'];
    53. $year_value = $row['year_value'];
    54. $all_value = $row['all_value'];
    55. $record_date = $row['record_date'];
    56. $record_value = $row['record_value'];
    57. $counter_agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? addslashes(trim($_SERVER['HTTP_USER_AGENT'])) : "";
    58. $counter_time = time();
    59. $counter_ip = trim(addslashes($_SERVER['REMOTE_ADDR']));
    60. // ignorore some bots
    61. if (substr_count($counter_agent, "bot") > 0)
    62. $ignore = true;
    63. // delete free ips
    64. if ($ignore == false)
    65. {
    66. $sql = "delete from counter_ips where unix_timestamp(NOW())-unix_timestamp(visit) > $counter_expire";
    67. mysql_query($sql);
    68. }
    69. // check for entry
    70. if ($ignore == false)
    71. {
    72. $sql = "select * from counter_ips where ip = '$counter_ip'";
    73. $res = mysql_query($sql);
    74. if (mysql_num_rows($res) == 0)
    75. {
    76. // insert
    77. $sql = "INSERT INTO counter_ips (ip, visit) VALUES ('$counter_ip', NOW())";
    78. mysql_query($sql);
    79. }
    80. else
    81. {
    82. $ignore = true;
    83. $sql = "update counter_ips set visit = NOW() where ip = '$counter_ip'";
    84. mysql_query($sql);
    85. }
    86. }
    87. // online?
    88. $sql = "select * from counter_ips";
    89. $res = mysql_query($sql);
    90. $online = mysql_num_rows($res);
    91. // add counter
    92. if ($ignore == false)
    93. {
    94. // day
    95. if ($day_id == date("z"))
    96. {
    97. $day_value++;
    98. }
    99. else
    100. {
    101. $day_value = 1;
    102. $day_id = date("z");
    103. }
    104. // week
    105. if ($week_id == date("W"))
    106. {
    107. $week_value++;
    108. }
    109. else
    110. {
    111. $week_value = 1;
    112. $week_id = date("W");
    113. }
    114. // month
    115. if ($month_id == date("n"))
    116. {
    117. $month_value++;
    118. }
    119. else
    120. {
    121. $month_value = 1;
    122. $month_id = date("n");
    123. }
    124. // year
    125. if ($year_id == date("Y"))
    126. {
    127. $year_value++;
    128. }
    129. else
    130. {
    131. $year_value = 1;
    132. $year_id = date("Y");
    133. }
    134. // all
    135. $all_value++;
    136. // neuer record?
    137. if ($day_value > $record_value)
    138. {
    139. $record_value = $day_value;
    140. $record_date = date("Y-m-d H:i:s");
    141. }
    142. // speichern und aufräumen
    143. $sql = "update counter_values set day_id = '$day_id', day_value = '$day_value', week_id = '$week_id', week_value = '$week_value', month_id = '$month_id', month_value = '$month_value', year_id = '$year_id', year_value = '$year_value', all_value = '$all_value', record_date = '$record_date', record_value = '$record_value' where id = 1";
    144. mysql_query($sql);
    145. }
    146. ?>
    147. <style type="text/css">
    148. <!--
    149. .Stil1 {
    150. font-family: Arial;
    151. font-weight: bold;
    152. font-size: 12px;
    153. }
    154. .Stil2 {
    155. font-family: Arial;
    156. font-size: 9px;
    157. }
    158. .Stil4 {
    159. font-family: Arial;
    160. font-size: 11px;
    161. font-weight: bold;
    162. }
    163. -->
    164. </style>
    165. <table cellpadding="1" cellspacing="0" style="border:1px solid #000000">
    166. <tr>
    167. <td width="150"><div align="justify"><span class="Stil1"><a href="http://www.order-monitor.de/" target="_blank"><img src="counter.gif" width="16" height="16" border="0" /></a> Besucher Statistik </span></div></td>
    168. </tr>
    169. <tr>
    170. <td style="border-top:1px solid #000000">
    171. <span class="Stil4">
    172. &raquo; <? echo $online; ?> Online<br>
    173. &raquo; <? echo $day_value; ?> Heute<br>
    174. &raquo; <? echo $week_value; ?> Woche<br>
    175. &raquo; <? echo $month_value; ?> Monat<br>
    176. &raquo; <? echo $year_value; ?> Jahr<br>
    177. &raquo; <? echo $all_value; ?> Gesamt </span>
    178. <hr noshade="noshade" />
    179. <div align="center" class="Stil2">Rekord: <? echo $record_value; ?> (<? echo date("d.m.Y", strtotime($record_date)) ?>)</div>
    180. <div align="center" class="Stil2"></div></td>
    181. </tr>
    182. </table>
    183. <?
    184. }
    185. ?>
    Alles anzeigen


    Kann mir bitte jemand weiterhelfen ???
    [FONT="Courier New"][SIZE="2"][COLOR="DarkOrchid"]LG anni971[/color][/SIZE][/FONT]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von anni971 () aus folgendem Grund: Siehe Antworten - positive Erledigung

  • Hallo anni971,

    das funktioniert ganz ähnlich wie das Ausschließen "mancher Bots" von der Zählung. Die Variable, die zu überprüfen ist, ist freilich eine andere.

    anni971 schrieb:

    PHP-Quellcode

    1. // ignorore some bots
    2. if (substr_count($counter_agent, "bot") > 0)
    3. $ignore = true;


    PHP-Quellcode

    1. // IPs to be ignored
    2. $ignoredIPs = array("123.1.2.3", "88.23.2.1");
    3. // ignore certain IPs
    4. if (in_array($_SERVER['REMOTE_ADDR'], $ignoredIPs))
    5. $ignore = true;


    Die Variable $ignore wird einfach auf false gesetzt. Den Rest übernimmt der Code, der auch die anderen Dinge ausschließt.

    Ich hoffe, ich konnte dir ein bisschen helfen :)

    Viel Erfolg noch und schöne Grüße
    underattack
  • underattack schrieb:

    ...

    das funktioniert ganz ähnlich wie das Ausschließen "mancher Bots" von der Zählung. Die Variable, die zu überprüfen ist, ist freilich eine andere.

    ...

    Danke für deine schnelle Antwort. :cool:

    Aber hier noch eine Frage:
    Was machen die Bots?
    Sorry das ich so frage, aber ich kann mit diesem Ausdruck nichts anfangen.

    Und muss ich in MySQL was ändern? :confused:
    [FONT="Courier New"][SIZE="2"][COLOR="DarkOrchid"]LG anni971[/color][/SIZE][/FONT]
  • Bots sind keine richtigen "Besucher" deiner Websites sondern Roboter, die vorm PC sitzen und nichts besseres zu tun haben als deine Statistiken zu manipulieren ;)

    Nee, also das sind Programme meistens von Suchmaschinenanbieter, die deine Website indexieren, d.h. dich dort in die Suchergebnisse eintragen usw.
    Weil das ja keine echten Besucher sind zählt man die nicht mit.

    Siehe auch:
    Bot ? Wikipedia
    bzw.
    Webcrawler ? Wikipedia


    In Mysql müsstest du eigentlich nichts verändern, du könntest aber die auszuschließenden IPs ebenfalls in einer Tabelle speichern, wenn du nicht jedes mal die php-Datei ändern willst (sonst machst du das in der DB oder du bastelst dir ein Skript, womit du das machen kannst).

    mfg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von blackboX ()