Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Fehler bei scheiss IP-Sperre *grrr*

  1. #1
    Gast

    Standard Fehler bei scheiss IP-Sperre *grrr*

    hi zusammen

    ich habe folgende ip sperre gebaut:

    Code:
    // Zeit der IP-Sperre (Stunden)
    $zeit = 24;
    // Datei wo die IP's gespeichert werden
    $ipdatei = "system/ip_count2.txt";
    
    
    function pruf_IP($rem_addr, $viewid) {
    	global $ipdatei, $zeit;
    	@$ip_array = file($ipdatei);
    	$reload_dat = fopen($ipdatei, "w");
    	$this_time = time();
    	for&#40;$i=0; $i<count&#40;$ip_array&#41;; $i++&#41; &#123;
    		list&#40;$ip_addr,$time_stamp,$vid&#41; = explode&#40;"|",$ip_array&#91;$i&#93;&#41;;
    		if&#40;$this_time < &#40;$time_stamp+&#40;60*60*$zeit&#41;&#41;&#41; &#123;
    			if&#40;$viewid == $vid&#41;
    			if&#40;$ip_addr == $rem_addr&#41; &#123;
    				$gefunden = 1;
    			&#125;
    			else
    			&#123;
    				fwrite&#40;$reload_dat, "$ip_addr|$time_stamp|$vid"&#41;;
    			&#125;
    		&#125;
    	&#125;
    	fwrite&#40;$reload_dat, "$rem_addr|$this_time|$viewid\n"&#41;;
    	fclose&#40;$reload_dat&#41;;
    	return &#40;$gefunden==1&#41;? '1' &#58; '0';
    &#125;
    wenn 1 zurück gegeben wird dann soll man auf ne fehlerseite kommen, wenn 0 dann solls nomal weitergehen...

    folgende kriterien damit 0 kommt:

    1. der letzte aufruf muss 24 stunden zurückliegen ($zeit)
    2. die ip muss übereinstimmen (gespeicherte mit derm vom benutzer)
    bis jetzt geht alles... jetzt soll aber noch etwas hinzukommen
    3. es soll nich nur zeit und ip gespeichert werden sondern auch eine id (integer, die beim aufruf von speziellen seiten der funktion übergeben wird)
    diese soll auch überprüft werden mit der, die in der text datei mit ip|datum gespeichert is

    das gane wird so in der textdatei abgespeichert:

    IP-Adresse|Time-Stemp|ID-Nummer

    aber es wird immer was falsches zurückgegeben, wo liegt der scheiss fehler?? help!!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Gast

    Standard

    in php-tags:

    PHP-Code:
    // Zeit der IP-Sperre (Stunden)
    $zeit 24;
    // Datei wo die IP's gespeichert werden
    $ipdatei "system/ip_count2.txt";


    function 
    pruf_IP($rem_addr$viewid) {
       global 
    $ipdatei$zeit;
       @
    $ip_array file($ipdatei);
       
    $reload_dat fopen($ipdatei"w");
       
    $this_time time();
       for(
    $i=0$i<count($ip_array); $i++) {
          list(
    $ip_addr,$time_stamp,$vid) = explode("|",$ip_array[$i]);
          if(
    $this_time < ($time_stamp+(60*60*$zeit))) {
             if(
    $viewid == $vid)
             if(
    $ip_addr == $rem_addr) {
                
    $gefunden 1;
             }
             else
             {
                
    fwrite($reload_dat"$ip_addr|$time_stamp|$vid");
             }
          }
       }
       
    fwrite($reload_dat"$rem_addr|$this_time|$viewid\n");
       
    fclose($reload_dat);
       return (
    $gefunden==1)? '1' '0';


  3. #3
    gelöschter User
    Gast

    Standard

    Moin,
    lool wie ich Textdateien hasse...
    Mit MySQL wär das viel einfacher gewesen
    Hatte den ganzen morgen Spaß damit nur wegen paar Konzentrationsfehlern...
    Habs ein bisschen umgeschrieben

    Code:
    <?php
    // Zeit der IP-Sperre &#40;Stunden&#41;
    $zeit = 24;
    // Datei wo die IP's gespeichert werden
    $ipdatei = "system/ip_count2.txt";
    
    // Die IP des Users !
    $ip = $_SERVER&#91;'REMOTE_ADDR'&#93;;
    $id = 3;
    
    function pruf_IP&#40;$rem_addr, $viewid&#41; 
    &#123;
      global $ipdatei, $zeit;
      $ip_array = @file&#40;$ipdatei&#41;;
      $this_time = time&#40;&#41;;
      $gefunden = 0;
      foreach&#40;$ip_array as $value&#41;
      &#123;
        $sel_arr = explode&#40;"|", $value&#41;;
        $closetime = $sel_arr&#91;1&#93;+&#40;60*60*$zeit&#41;;
        if&#40;$this_time > $closetime && $viewid == $sel_arr&#91;2&#93; && $rem_addr == $sel_arr&#91;0&#93;&#41;
        &#123; // Wenn die Zeit abgelaufen ist
          $gefunden = 1;
          $reload_dat = fopen&#40;$ipdatei, "a"&#41;;
          fwrite&#40;$reload_dat, "$rem_addr|$this_time|$viewid\n"&#41;;
          fclose&#40;$reload_dat&#41;;
        &#125;
        
    	if&#40;$this_time < $closetime && $viewid == $sel_arr&#91;2&#93; && $rem_addr == $sel_arr&#91;0&#93;&#41;
        &#123; // Wenn die Zeit noch nicht abgelaufen ist
          $gefunden = 2;
        &#125;
      &#125;
      if&#40;$gefunden == 0&#41;
      &#123; // Wenn kein Eintrag gefunden wurde 
        $reload_dat2 = fopen&#40;$ipdatei, "a"&#41;;
        fwrite&#40;$reload_dat2, "$rem_addr|$this_time|$viewid\n"&#41;;
        fclose&#40;$reload_dat2&#41;;
      &#125;
      return $gefunden;     
    &#125;
    $lala = pruf_IP&#40;$ip,$id&#41;;
    
    switch&#40;$lala&#41;
    &#123;
      case 0&#58;
      echo "Neuer Besucher!";
      break;
      
      case 1&#58;
      echo "Zeit abgelaufen! Neuer Eintrag ;&#41;";
      break;
      
      case 2&#58;
      echo "Zeit noch nicht abgelaufen! Please wait...";
      break;
    &#125;
    ?>
    Hoffe doch, dass es funktioniert

    Gruß crAzywuLf

  4. #4
    Gast

    Standard

    lol ich hasse die auch, die txt dateien, aber meine datenbank is mir für sowas zu schade

    thx, werde gleich ml testen

  5. #5
    Gast

    Standard

    es funktioniert leider überhaupt nicht... es kommt immer 0 als resultat raus... (((

  6. #6
    Gast

    Standard

    Code:
    function pruf_IP&#40;$rem_addr, $viewid&#41;
    &#123;
      global $ipdatei, $zeit;
      $ip_array = @file&#40;$ipdatei&#41;;
      $this_time = time&#40;&#41;;
      $gefunden = 0;
      foreach&#40;$ip_array as $value&#41;
      &#123;
        $sel_arr = explode&#40;"|", $value&#41;;
        $closetime = $sel_arr&#91;1&#93;+&#40;60*60*$zeit&#41;;
        if&#40;$this_time > $closetime && $rem_addr == $sel_arr&#91;0&#93;&#41;
        &#123; // Wenn die Zeit abgelaufen ist
          $gefunden = 1;
          $reload_dat = fopen&#40;$ipdatei, "w"&#41;;
          fwrite&#40;$reload_dat, "$rem_addr|$this_time|$viewid\n"&#41;;
          fclose&#40;$reload_dat&#41;;
        &#125;
       
       if&#40;$this_time < $closetime && $rem_addr == $sel_arr&#91;0&#93;&#41;
        &#123; // Wenn die Zeit noch nicht abgelaufen ist
          $gefunden = 2;
        &#125;
      &#125;
      if&#40;$gefunden == 0&#41;
      &#123; // Wenn kein Eintrag gefunden wurde
        $reload_dat2 = fopen&#40;$ipdatei, "w"&#41;;
        fwrite&#40;$reload_dat2, "$rem_addr|$this_time|$viewid\n"&#41;;
        fclose&#40;$reload_dat2&#41;;
      &#125;
      $ret_arr_full = array&#40;$gefunden, $sel_arr&#91;2&#93;&#41;;
      return $ret_arr_full;     
    &#125; 
    
    $vid = $_POST&#91;'vid'&#93;;
    $array_ret = pruf_IP&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;, $vid&#41;;
    //die&#40;"Erg&#58;
    
    Gefunden&#58; ".$array_ret&#91;0&#93;.", ViewID&#58; ".$array_ret&#91;1&#93;&#41;;
    if&#40;$array_ret&#91;0&#93; == 2 && $array_ret&#91;1&#93; == $vid&#41;
    &#123;
       header&#40;"Location&#58; errors/flood.php"&#41;; 
       exit;
    &#125;
    ich kapiers echt nich.. ich habs jetzt so umgeändrt das das richtige zurückgegeben wird... ich gebe in einem array die variable $gefunden und $sel_arr[2] zurück... jetzt hab ich die variablen in dem array auch ausgegeben... wenn ich zum ersten mal was eintrage kommt 0 raus... und die ID

    und wenn ich nochmal eintragedan kommt 2 und dike idee
    und diese sceheeeiss bediengung erkenbnt den dreck nich ich weiss echt nich wiesooo


    $array_ret[0] = bei der ausgabe: 2 (wenn schon eingetragen, sonst 0)
    $array_ret[1] = is die ID

    Code:
    if&#40;$array_ret&#91;0&#93; == 2 && $array_ret&#91;1&#93; == $vid&#41;
    &#123;
       header&#40;"Location&#58; errors/flood.php"&#41;; 
       exit;
    &#125;
    wieso geht der dreck nich? ich checks echt nicht emhr

  7. #7
    Gast

    Standard

    juhuu hab den fehler gefunden, ich musste nur die variablen in integer parsen

    jetzt brauch ich aber noch ne hilfe.. wie mach ich das am besten dass bereits abgelaufene einträge in der textdatei gelöshct werden (damit die nich zu groß wird)

  8. #8
    Gast

    Standard

    hilfe!! crAzywuLf, kannste mir nochma helfen?

  9. #9
    gelöschter User
    Gast

    Standard

    Zitat Zitat von Anonymous
    juhuu hab den fehler gefunden, ich musste nur die variablen in integer parsen

    jetzt brauch ich aber noch ne hilfe.. wie mach ich das am besten dass bereits abgelaufene einträge in der textdatei gelöshct werden (damit die nich zu groß wird)
    Du kannst doch die Datei einfach alle 24 Stunden oder einmal in der Woche löschen...

  10. #10
    Gast

    Standard

    wie denn??

    ich bin doch nich soo gut

Ähnliche Themen

  1. SCHEISS auswahlliste, scheiss javascript
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 07.08.2007, 21:49
  2. I-Frames, scheiss problem
    Von rockaffe im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 10.07.2005, 09:58
  3. header() so ein scheiss
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 04.07.2005, 11:43
  4. scheiss Internet (Explorer)
    Von bitte um Hilfe im Forum Computer - Internet Forum
    Antworten: 9
    Letzter Beitrag: 23.05.2004, 19:59
  5. FTP-Upload und T-Online *grrr*
    Von Carolyn im Forum HTML & CSS Forum
    Antworten: 29
    Letzter Beitrag: 21.06.2003, 14:09

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •