Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: текстовый счетчик хостов. на мускуле
 
 автор: Великий Одмин   (23.06.2007 в 17:09)   письмо автору
 
 

короче пробывал написать текстовый счетчик хостов чтобы он не обнулялся с антинакруткой в 15 минут. тоесть чтобы если пару раз в 15 минут зайдешь то он защитывает только один хост:) а через 15 минут +1 к счетчику был...вот код:
<?php
$time 
15;
$DB_Host "localhost";     // Хост
$DB_User "root";    // Пользователь
$DB_Pass "";    // Пароль
$DB_Name "hosts";        // Имя БД
    
function SQLConnect($DB_Host$DB_User$DB_Pass)
    {
        if(
mysql_connect($DB_Host$DB_User$DB_Pass))
        {
            return(
TRUE);
        } else
        {
            return(
FALSE);
        }
    }
$times = (time() - ($time 60));
    if(
SQLConnect($DB_Host$DB_User$DB_Pass))
    {
        
mysql_select_db($DB_Name);
        
//$UA = htmlspecialchars($_SERVER['HTTP_USER_AGENT']);
        
$UA $_GET['u'];
            if(!
get_magic_quotes_gpc())
            {
                
$UA mysql_escape_string($UA);
            }
        
$q mysql_query("SELECT * FROM `hosts`");
            if(!
mysql_resultmysql_query("SELECT COUNT(*) FROM `hosts` WHERE `user`='".$UA."' AND `time` > ".$times ), 0))
            {
                 
mysql_query("INSERT INTO `hosts` VALUES(0, '".$UA."', ".time().")");
            }
    } else
        {
            echo(
"<b>Ошибка!!! Не могу соединиться с БД MySQL!</b><br />");
        }
        echo(
mysql_num_rows($q));
        echo(
mysql_error());
?>


и таблица
CREATE TABLE `hosts`
(
    `id` int(15) NOT NULL auto_increment,
    `user` CHAR(70),
    `time` int(15) NOT NULL,
    PRIMARY KEY(`id`)
)
TYPE=MyISAM;

короче напишите код чтобы он правильно работал:) мой считает как хиты а не хосты:( и с каждым обновлением +1 дает....на локале работает на хосте нет

   
 
 автор: Unkind   (23.06.2007 в 18:13)   письмо автору
 
   для: Великий Одмин   (23.06.2007 в 17:09)
 

a) Ваш код имеет уязвимость при magic_quotes_gpc = on. А именно: User-Agent - HTTP-заголовок и "магические кавычки" автоматически к нему никогда не добавляются (magic_quotes_GPC - GET, POST, COOKIE).

b)
$q = mysql_query("SELECT * FROM `hosts`");
echo(mysql_num_rows($q));

Стоит заменить на

<?php
$q 
mysql_query("SELECT COUNT(*) FROM `hosts`;");
echo(
mysql_result($q0));
?>

Так как в Вашем случае все данные из таблицы "hosts" будут хранится в буфере СУБД, что плохо.

c) Если что-то не работает, имеет смысл проверять каждый запрос:
mysql_query(...) or die(mysql_error());

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования