За последние 24 часа нас посетили 35300 программистов и 1742 робота. Сейчас ищут 1092 программиста ...

Отследить IP?

Тема в разделе "PHP для новичков", создана пользователем greenzlat, 12 мар 2009.

  1. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Делаю такой запрос:
    Код (Text):
    1.  
    2. $new_view = $myrow["view"] + 1;
    3. $update = mysql_query ("UPDATE table SET view='$new_view' WHERE id='$id'",$db)
    Таким образом считаю сколько раз открыли страницу. А можно ли поставить ограничения на IP адрес. Чтоб в сутки один ip один раз и считал, не зависимо сколько раз с этого ip адреса открыта страница?
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Если таблица каждый год чистится, то считать удобнее по дням:
    PHP:
    1. <?php
    2. $query = 'SELECT * FROM `table ` WHERE `ip`='.ip2long($_SERVER["REMOTE_ADDR"]).' AND `day`='.date("z");
    3. $resourse = mysql_query ($query)
    4. if (!mysql_num_rows($resourse)) {
    5. mysql_query ("UPDATE `table` SET `view`=`view`+1, `day`='.date("z").' WHERE `ip`='.ip2long($_SERVER["REMOTE_ADDR"]))
    6. }
    Прошу обратить особое внимание на запросы.
     
  3. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Код (Text):
    1.  
    2.         <?  function online () {
    3. $ip=getenv("HTTP_X_FORWARDED_FOR");
    4. if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
    5. # уд. старые сессии
    6. mysql_query ("DELETE FROM online WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(time) > 3000") or die ("Can't delete old sess");
    7.  
    8. # проверка на присутстаие или занесение нового пользователя
    9. $select = mysql_query ("SELECT ip FROM online WHERE ip='$ip'") or die ("Can't select duble");
    10. $tmp = mysql_fetch_row ($select);
    11. if ($ip == $tmp[0]) {
    12. mysql_query ("UPDATE online SET time=NOW() WHERE ip='$ip'") or die ("Can't update");
    13. } else {
    14. mysql_query ("INSERT INTO online (ip,time) VALUES ('$ip',NOW())") or die ("Can't insert");
    15. }
    Проверяю есть ли в БД такой ip, если нет добавляю, если есть то удаляю его через 3000 секунд (ну это для примера).

    А вот дальше
    Код (Text):
    1. $result1 = mysql_query ("SELECT * FROM pesni WHERE id='$id'",$db);
    2. $myrow1 = mysql_fetch_array ($result1);
    3.  
    4. $new_view = $myrow1["view"] + 1;
    5. $update = mysql_query ("UPDATE pesni SET view='$new_view' WHERE id='$id'",$db);
    Добавляю просмотр песни. А как связать эти 2 запроса? Чтоб он не добавлял просмотр если в БД есть такой ip?
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Моя просьба вообще не была учтена. Как будто стенке сказал.
     
  5. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Я просто не могу в table записывать ip! Они у меня хранятся отдельно!
     
  6. Sindicat

    Sindicat Активный пользователь

    С нами с:
    10 фев 2009
    Сообщения:
    46
    Симпатии:
    0
    Kreker, !$resourse->num_rows - что это делает ??