Probleme mit IP Sperre bei Tresorknackerscript

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

  • Probleme mit IP Sperre bei Tresorknackerscript

    Also ich habe aus Spaß mal so nen kleines Tresorknacker Script geschrieben!
    Unter anderem gibts da auch eine IP Sperre (24 Stunden) welche gesetzt wird wenn ein User versucht hat denn Tresor zu knacken es aber nicht geschaft hat oder es geschaft hat!

    Ich habe deshalb einen Ordner mit Namen ips in diesen wird nach dem die Funktion write_ipsperre(); aufgerufen wurde eine Datei mit Namen md5(IP).txt angelegt, was auch funktionier!

    Dann habe ich noch eine Funktion check_ipsperre() die bei vorhandensein der Ip Datei true sonst false zurück gibt! Das geht auch...

    Jetzt kommt das Problem!

    Ich hab ne schöne Abfrage gemacht die im Falle des Falles den User hinweist das er schon mitgemacht aber nicht gewonnen hat & das Eingabeformular sperrt!

    Hier:

    Quellcode

    1. <?php
    2. if(check_ipsperre() == true){ $message = "4"; }
    3. ?>


    Sollte doch eigendlich gehen oder? :shock:
  • Inhalt der Datei ip_sperre.php

    Quellcode

    1. <?php
    2. function check_ipsperre(){
    3. if(file_exists("./ips/".md5($_SERVER['REMOTE_ADDR']).".txt")){ return true; } else { return false; }
    4. }
    5. function write_ipsperre(){
    6. $fp = fopen("./ips/".md5($_SERVER['REMOTE_ADDR']).".txt", "a");
    7. fclose($fp);
    8. }
    9. function clear_ipsperre(){
    10. $ipfolder = "./ips/";
    11. // Dateien älter als n Minuten werden gelöscht
    12. $handle = @opendir($ipfolder);
    13. while ($ipfile = @readdir($handle)) {
    14. $ipdate = @filectime($ipfolder.$ipfile);
    15. if ($ipdate < (@time() - (60*$ip_sperrzeit))) {
    16. @unlink($ipfolder.$ipfile);
    17. }
    18. }
    19. @closedir($handle);
    20. }
    21. ?>
    Alles anzeigen


    Die Message halt so:

    Quellcode

    1. <?php
    2. if($message == "4"){
    3. ?>
    4. <div class="text" style="height:30px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    5. ">Du hast heute schonmal versucht unseren Tresor zu knacken! Versuche es morgen nochmal!</font></div>
    6. <?php
    7. }
    8. ?>
  • $ip_sperrzeit steht in der config.inc.php die includiert wird. Die @ hatte ich alle schon weg, hat aber nichts gebracht!
    Ich mach aus dem - mal ebend ein +!

    Code index.php:

    Quellcode

    1. <?php
    2. // Einstellungen
    3. $code = "05641"; // Der code der genackt werden soll
    4. $weiterleitung = "win.php"; // Da soll der Tresorknacker hin
    5. $ip_sperrzeit = 1500; // 24 Stunden
    6. // Funktion ip_sperre includen
    7. include_once 'ip_sperre.php';
    8. // IP Sperre säubern
    9. clear_ipsperre();
    10. // Ab hier bitte nichts mehr ändern
    11. if($code == ""){ $message = "1"; } // Es wird eine Meldung ausgegeben wenn kein Tresorcode vorgeben wurde
    12. if(check_ipsperre() == true){ $message = "4"; } // Wenn IP Sperre aktiv dann Meldung ausgeben!
    13. if($_POST['Submit'] == true AND check_ipsperre() != true AND $_POST['code'] != ""){
    14. write_ipsperre();
    15. if($_POST["code"] == ""){
    16. $message = "2";
    17. }
    18. elseif($_POST["code"] != $code){
    19. // IP Sperre
    20. write_ipsperre();
    21. $message = "3";
    22. }
    23. elseif($_POST["code"] == $code){
    24. // IP Sperre
    25. write_ipsperre();
    26. echo "Gewonnen";
    27. }
    28. }
    29. ?>
    30. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    31. <html xmlns="http://www.w3.org/1999/xhtml">
    32. <head>
    33. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    34. <title>Tresorknacker Script</title>
    35. <style type="text/css">
    36. <!--
    37. .ueberschrift {
    38. font-size: 12px;
    39. font-weight: bold;
    40. font-family: Verdana, Arial, Helvetica, sans-serif;
    41. }
    42. .text {
    43. font-size: 12px;
    44. font-family: Verdana, Arial, Helvetica, sans-serif;
    45. }
    46. -->
    47. </style>
    48. </head>
    49. <body>
    50. <div align="center"><img src="img/logo.jpg" alt="Logo" width="320" height="216" /></div>
    51. <br /><br />
    52. <div align="center"><br />
    53. <?php
    54. if($message == "1"){
    55. ?>
    56. <div class="text" style="height:15px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    57. ">Es wurde noch kein Tresorcode eingestellt!</font></div>
    58. <?php
    59. }
    60. ?>
    61. <?php
    62. if($message == "2"){
    63. ?>
    64. <div class="text" style="height:15px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    65. ">Du hast keinen Code eingegeben!</font></div>
    66. <?php
    67. }
    68. ?>
    69. <?php
    70. if($message == "3"){
    71. ?>
    72. <div class="text" style="height:15px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    73. ">Schade. Du hast denn Tresor leider nicht geknackt!</font></div>
    74. <?php
    75. }
    76. ?>
    77. <?php
    78. if($message == "4"){
    79. ?>
    80. <div class="text" style="height:30px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    81. ">Du hast heute schonmal versucht unseren Tresor zu knacken! Versuche es morgen nochmal!</font></div>
    82. <?php
    83. }
    84. ?>
    85. <br />
    86. <form id="tresor" name="tresor" method="post" action="index.php" class="text">
    87. <label>Hier Code eingeben:
    88. <input name="code" type="text" id="code" <?php if($message == "4") echo "disabled=\"disabled\""; ?>/>
    89. </label>
    90. <label>
    91. <input type="submit" name="Submit" value="Tresor knacken" <?php if($message == "4") echo "disabled=\"disabled\""; ?> />
    92. </label>
    93. </form>
    94. </div>
    95. </body>
    96. </html>
    Alles anzeigen


    Ich weiß nicht einen kurzen Moment lief es aber dann auf einmal nicht mehr!!! :?
  • bist du dir sicher, dass die bedingungen aus 12 bis 14 nicht gleichzeitig passieren?
    Sollten sie zumindest nicht, oder? Arbeite besser mal mit elseifs.
    Und bau dir zur Fehlersuche überall Ausgaben ein, damit du weißt in welcher if du dich befindest.

    Ansonsten hast du innerhalb von Funktionen keinen Zugriff auf externe Variablen.
    Es sei denn du importierst sie mit global.

    Quellcode

    1. function clear_ipsperre(){
    2. global $ip_sperrzeit;
  • Also http://tinyurl.com/yq3o9t sagt das die IP Datei existiert...
    http://tinyurl.com/ytwctl aber sagt Formular wurde gesendet, IP Sperre nicht gesetzt!

    Komisch!

    Code jetzt:

    ip_sperre.php

    Quellcode

    1. <?php
    2. function check_ipsperre(){
    3. if(file_exists("./ips/".md5($_SERVER['REMOTE_ADDR']).".txt")){ return true; } else { return false; }
    4. }
    5. function write_ipsperre(){
    6. $fp = fopen("./ips/".md5($_SERVER['REMOTE_ADDR']).".txt", "a");
    7. fclose($fp);
    8. }
    9. function clear_ipsperre(){
    10. global $ip_sperrzeit;
    11. $ipfolder = "./ips/";
    12. // Dateien älter als n Minuten werden gelöscht
    13. $handle = opendir($ipfolder);
    14. while ($ipfile = readdir($handle)) {
    15. $ipdate = filectime($ipfolder.$ipfile);
    16. if ($ipdate < (time() + (60*$ip_sperrzeit)) AND $ipfile != "." AND $ipfile != "..") {
    17. unlink($ipfolder.$ipfile);
    18. }
    19. }
    20. closedir($handle);
    21. }
    22. ?>
    Alles anzeigen


    index.php

    Quellcode

    1. <?php
    2. // Einstellungen
    3. $code = "05641"; // Der code der genackt werden soll
    4. $weiterleitung = "win.php"; // Da soll der Tresorknacker hin
    5. $ip_sperrzeit = 1500; // 24 Stunden
    6. // Funktion ip_sperre includen
    7. include_once 'ip_sperre.php';
    8. // IP Sperre säubern
    9. clear_ipsperre();
    10. // Ab hier bitte nichts mehr ändern
    11. if($code == ""){ $message = "1"; } // Es wird eine Meldung ausgegeben wenn kein Tresorcode vorgeben wurde
    12. elseif(check_ipsperre() == true){ $message = "4"; echo "<br />Ip sperre schon gesetzt"; } // Wenn IP Sperre aktiv dann Meldung ausgeben!
    13. elseif($_POST['Submit'] == true AND check_ipsperre() != true AND $_POST['code'] != ""){
    14. echo "<br /><font color=\"red\">Formular wurde gesendet, Ip Sperre ist nich gesetzt & das Input Feld ist nicht leer</font><br />";
    15. write_ipsperre();
    16. if($_POST["code"] == ""){
    17. $message = "2";
    18. echo "<br /><font color=\"red\">Kein Code angegeben</font>";
    19. }
    20. elseif($_POST["code"] != $code){
    21. // IP Sperre
    22. write_ipsperre();
    23. echo "<br /><font color=\"red\">Falscher Code</font><br />";
    24. $message = "3";
    25. }
    26. elseif($_POST["code"] == $code){
    27. // IP Sperre
    28. write_ipsperre();
    29. echo "<br />Gewonnen";
    30. }
    31. }
    32. ?>
    33. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    34. <html xmlns="http://www.w3.org/1999/xhtml">
    35. <head>
    36. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    37. <title>Tresorknacker Script</title>
    38. <style type="text/css">
    39. <!--
    40. .ueberschrift {
    41. font-size: 12px;
    42. font-weight: bold;
    43. font-family: Verdana, Arial, Helvetica, sans-serif;
    44. }
    45. .text {
    46. font-size: 12px;
    47. font-family: Verdana, Arial, Helvetica, sans-serif;
    48. }
    49. -->
    50. </style>
    51. </head>
    52. <body>
    53. <div align="center"><img src="img/logo.jpg" alt="Logo" width="320" height="216" /></div>
    54. <br /><br />
    55. <div align="center"><br />
    56. <?php
    57. if($message == "1"){
    58. ?>
    59. <div class="text" style="height:15px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    60. ">Es wurde noch kein Tresorcode eingestellt!</font></div>
    61. <?php
    62. }
    63. ?>
    64. <?php
    65. if($message == "2"){
    66. ?>
    67. <div class="text" style="height:15px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    68. ">Du hast keinen Code eingegeben!</font></div>
    69. <?php
    70. }
    71. ?>
    72. <?php
    73. if($message == "3"){
    74. ?>
    75. <div class="text" style="height:15px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    76. ">Schade. Du hast denn Tresor leider nicht geknackt!</font></div>
    77. <?php
    78. }
    79. ?>
    80. <?php
    81. if($message == "4"){
    82. ?>
    83. <div class="text" style="height:30px; width:450px; background-color:#FF1F00; border:#D41F00 solid 1px;"><font color="
    84. ">Du hast heute schonmal versucht unseren Tresor zu knacken! Versuche es morgen nochmal!</font></div>
    85. <?php
    86. }
    87. ?>
    88. <br />
    89. <form id="tresor" name="tresor" method="post" action="index.php" class="text">
    90. <label>Hier Code eingeben:
    91. <input name="code" type="text" id="code" <?php if($message == "4") echo "disabled=\"disabled\""; ?>/>
    92. </label>
    93. <label>
    94. <input type="submit" name="Submit" value="Tresor knacken" <?php if($message == "4") echo "disabled=\"disabled\""; ?> />
    95. </label>
    96. </form>
    97. </div>
    98. </body>
    99. </html>
    Alles anzeigen


    Hm langsam hab ich auch kein Plan mehr^^...
  • also wie gesagt.. bau dir ein paar Ausgaben ein. Wenn ich verzweifelt nach einem Fehler suchen würde, würde ich meine Datei so aufbauen:

    Quellcode

    1. $limit = (time() + (60*$ip_sperrzeit));
    2. echo 'es werden alle eintrage vor '.date('d.m.Y H:i:s', $limit).' geloescht<br />';
    3. while ($ipfile = readdir($handle)) {
    4. $ipdate = filectime($ipfolder.$ipfile);
    5. if ($ipdate < $limit AND $ipfile != "." AND $ipfile != "..") {
    6. unlink($ipfolder.$ipfile);
    7. echo "$ipfile geloescht<br />";
    8. } else {
    9. echo "$ipfile nicht geloescht<br />";
    10. }
    11. }
    Alles anzeigen


    Dein Code ist außerdem ziemlich unübersichtlich - so habe mir noch nicht die Mühe gemacht alles anzuschauen. Zumal das nicht alles ist, oder? Zumindest hast du oben von einer config geredet die eingebunden wird.