Просмотр поста

.
ДоХтор

Писал как-то для джона, но на джоне вроде часто срабатывала эта ф-ция, и я предположил, что это из-за возможных переадресаций header('Location');

Решил проверить вне Джона - уменьшил время срабатывания с 2-х сотых секунды на одну сотую, и написал небольшой код с header('Location'); - вроде работает, пробуйте, может спасёт от школоддоса.

Функция и её вызов с параметром (+/-)
/** Antiddos **/
function ddos($float) {
    if (!session_id()) session_start();
    function mc_time() {
        list($usec, $sec) = explode(' ', microtime());
        return ((float)$usec + (float)$sec); 
    }
    if (isset($_SESSION['ddos'])) {
        if ((mc_time() - (float)$_SESSION['ddos']) < $float) {
            exit('Подождите '. $float .' секунд(ы)!');
        }
    }
    $_SESSION['ddos'] = mc_time();
}

ddos(0.01);
А это код, которым я проверял эту функцию
* (+/-)
if (!session_id()) session_start();

if (!isset($_SESSION['i'])) {
    $_SESSION['i'] = 0;
    header('Location: '. $_SERVER['PHP_SELF']);
    exit;
} elseif ($_SESSION['i'] < 15) {
    $_SESSION['i'] += 1;
    header('Location: '. $_SERVER['PHP_SELF']);
    exit;
} else {
    echo 'Цикл перенаправлений закончен!';
}