• 04-03-2009, 18:32:37
    #19
    google botunu hiç düşünmemiştim. engellersem googlenin botunuda engellemiş oluyorum.
    arkadaşların yardımıyla şunu indirmiştim. işe yarıyor ama googleyide engeller bu kod.

    <?php
    /*
    +----------------------------------------------+
    | |
    | PHP MySQL Flood protection class |
    | |
    +----------------------------------------------+
    | Filename : flood-protection.php |
    | Created : 19-Sep-05 3:48 GMT |
    | Created By : Sam Clarke |
    | Email : admin@free-php.org.uk |
    | Version : 1.0 |
    | |
    | |
    | Modified : 19-Sep-05 14:44 GMT |
    | BY : Sam Clarke |
    | |
    +----------------------------------------------+


    +---------------------------------------+
    | |
    | MySQL sql to make tabke |
    | |
    +---------------------------------------+
    | |
    | CREATE TABLE `floodprotection` ( |
    | `IP` char(32) NOT NULL default '', |
    | `TIME` char(20) NOT NULL default '', |
    | PRIMARY KEY (`IP`) |
    | ) TYPE=MyISAM; |
    | |
    +---------------------------------------+

    LICENSE

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License (GPL)
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    To read the license please visit The GNU General Public License - GNU Project - Free Software Foundation (FSF)

    */

    class flood_protection {

    var $secs = 1; // Number or secounds between a request

    var $keep_secs = 600; // Number of secounds to keep the user registered

    // MySQL config
    var $host = 'localhost'; // MySQl host
    var $password; // MySQL password
    var $username; // MySQL username
    var $db; // MySQL username
    var $link; // MySQl link

    // function to connect to MySQL
    function db_connect() {
    $this -> link = mysql_connect($this -> host, $this -> username, $this -> password); // connect to MySQL
    if(!$this -> link) { // test connection
    return false;
    }
    // select db and check it worked
    if(mysql_select_db($this -> db)) {
    return true;
    }
    return false;
    }

    // add user ip address to database
    function register_user($ip) {
    // insert ip and currnt time into database
    $result = mysql_query('INSERT INTO `floodprotection` (`IP`,`TIME`) VALUES(\' '. mysql_real_escape_string( $ip, $this -> link ) . '\', \''. time() .'\') ', $this -> link);
    if(!$result) {
    return false;
    }
    return true;
    }

    // check to see if the user is flooding
    function check_request($ip) {
    if(!$this -> db_connect()) {
    return false; // if we cannot connect to db then return the user isnt flooding as we don't know
    }
    if($this -> user_in_db($ip)) { // find out if the user is in the db
    $return = $this -> user_flooding($ip); // if they are check if there flooding
    $this -> update_user($ip); // update there last request
    $this -> remove_old_users(); // remove the old users
    $this -> close_db(); // close db connection
    return $return; // return if there flooding or not
    } else {
    $this -> register_user($ip); // if there not in the db add them
    $this -> remove_old_users(); // remove the old users
    $this -> close_db(); // close db connection
    return false; // sonce there not in the db there not flooding so return false
    }
    }

    function user_in_db($ip) {
    // query db to see if there in
    $result = mysql_query('SELECT `TIME` FROM `floodprotection` WHERE `IP` = \' '. mysql_real_escape_string( $ip, $this -> link ) . '\' LIMIT 1', $this -> link);
    if(mysql_num_rows($result) > 0) { // if more than 0 records are returned there in
    return true;
    }
    return false; // other wise return false
    }

    function user_flooding($ip) {
    // query db to see if there flooding
    $result = mysql_query('SELECT `TIME` FROM `floodprotection` WHERE `IP` = \' '. mysql_real_escape_string( $ip, $this -> link ) . '\' AND `TIME` >= ' . (time() - $this -> secs) . ' LIMIT 1', $this -> link);
    if(mysql_num_rows($result) > 0) { // if more than 0 records are returned there flooding
    return true;
    }
    return false; // other wise return false
    }

    function update_user($ip) {
    // query db to update the user last request
    $result = mysql_query('UPDATE `floodprotection` SET `TIME` = \'' . time() . '\' WHERE `IP` = \' '. mysql_real_escape_string( $ip, $this -> link ) . '\'', $this -> link);
    }

    function remove_old_users() {
    // Query db to remove all the old users
    mysql_query('DELETE FROM `floodprotection` WHERE `TIME` <= \'' . (time()- $this -> keep_secs) . '\'', $this -> link);
    }

    function close_db() {
    mysql_close($this -> link);
    }
    }


    $protect = new flood_protection(); //call the class
    $protect -> password = '******'; // set the password for MySQL
    $protect -> username = 'user'; // set the username for MySQL
    $protect -> db = 'MyDB'; // set the MySQL db name
    if($protect -> check_request(getenv('REMOTE_ADDR'))) { // check the user
    die('Request block, Please wait 1 secounds between requests. This is to stop flooding of our server.'); //die there flooding
    }

    ?>
  • 04-03-2009, 23:10:46
    #20
    Üyeliği durduruldu
    akaturk adlı üyeden alıntı: mesajı görüntüle
    google botunu hiç düşünmemiştim. engellersem googlenin botunuda engellemiş oluyorum.
    arkadaşların yardımıyla şunu indirmiştim. işe yarıyor ama googleyide engeller bu kod.
    google i engellemesi çok doğal. birde google engellemeyecek şekilde düzenlerseniz ve google farklı botlarla siteye girer ver farkı içerik bulursa ban sebebine doğru digersiniz

    yani ya gerçekten google i engellemeyide kabul edeceksiniz yada vazgeçeceksiniz