kostenloser Webspace werbefrei: lima-city


Google Bot sperre?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    Ich hab für meine Umfrage Seite bei dem Abstimmungsscript eine Sperre für den Google Crawl Bot gemacht damit er nicht Blind Stimmen abgibt:
    $g_bot_1 = "66.249.";
    $ip = $_SERVER['REMOTE_ADDR'];
    ...
    if ($ifant == true and isset($_GET["ant"]) and strpos($ip, $g_bot_1) !== false) {
    script
    }

    $ifant ist ob die Stimmabgabe True ist, und die zwiete Bedingung prüft ob eine Antwort gesetzt ist. Bei der dritten bedingung wird geprüft ob die ip eine von Google ist. Der if teil, ohne die erste und die zweite Bedingung hat den test in eienr externalendatei schon erfolgreich bestanden. Nun habe ich aber wieder ips von Google in meiner DB gefunden.

    Wo ist der Fehler?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. N ja ich kann mir gut vorstellen, dass es an deinem "!==" liegt. Das müsste vermutlich einfach "!=" heißen. Dann müsste es eigentlich funktionieren ;-)
  4. dustboy schrieb:
    N ja ich kann mir gut vorstellen, dass es an deinem "!==" liegt. Das müsste vermutlich einfach "!=" heißen. Dann müsste es eigentlich funktionieren ;-)

    !== ist schon richtig ;) Es ist der strikte Vergleich, d.h. auch der Typ wird geprüft.

    Beispiel:
    '1' == 1 ergibt true
    '1' === 1 ergibt false

    Und noch etwas kursioses (überleg dir, warums so ist...)
    '0XBAD' == '2989' ergibt true
    (string) '0XBAD' == (string) '2989' ergibt true
    '0XBAD' === '2989' ergibt false ;)
  5. Hm. Schon wieder was dazu gelernt :D

    Jedefnalls liegt es trozdem an dem !==

    nämlich liefert strpos wenn der String NICHT vorhanden ist (also es KEINE Google-Adresse ist) false zurück. Wenn du also nun abfragst false!==false kommt wieder false heraus und die bedinung trifft nicht zu (ich hoff ich hab das verständlich erklärt lol). Mach ein === draus und es müsste funktionieren.

    Im übrigen noch ne kleine anmerkung: Du diskriminierst hier nicht nur den Googlebot, sonder auch alle anderen, die 66.249. in der IP haben, also auch welche von der IP 129.66.249.123 zum Beisipiel.

    Beitrag zuletzt geändert: 3.2.2010 21:20:58 von dustboy
  6. Hmm... strpos() gibt einen Integer-Wert zurück welcher die Position des Treffers ist. Wenn nun also einen Google-IP auf deine Seite geht bekommst du als Rückgabewert für strpos() einen Integer. Und dieser ist immer !== false.
    Nur wenn die Bedingung in strpos() nicht erfüllt ist bekommst du false als Rückgabewert.

    Müsstest du dann nicht einfach die Bedingung so abändern:
    if ($ifant == true and isset($_GET["ant"]) and strpos($ip, $g_bot_1) === false) 
    {
    script
    }


    //edit: Da war wohl jmd schneller wie ich :wave:


    Beitrag zuletzt geändert: 3.2.2010 21:24:17 von buechsdeluxe
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!