необходима ваша помощь в создании счетчика кликов по ссылкам

phantom

Новичок
необходима ваша помощь в создании счетчика кликов по ссылкам

Здавствуйте, мне необходима ваша помощь в создании счетчика кликов по ссылкам.

Допустим все выглядит так:
select.php:
?>
print "<a href=$site_adress onclick=?????>$site_adress</a>";
?>
Что писать в onklick? Или как иначе?

Я себе представляю алгоритм так:
1) при нажатии пользователь перешел по ссылке
2) в klick.php поступила информация, что нажали по i-й ссылке
3) В klick.php стартуем сессию, запрашиваем ip, сравниваем с теми ip, что хранятся в базе 4) Если ip не совпадают, увеличиваем rank
5) Если ip совпадают, увеличиваем rank и создаем сессию/куки на 2 дня, кот. запрещает этому ip увеличивать rank в теч 2 дней.

Как по-вашему это правильный алгоритм?
 

Апокалипсис

тех дир matras.ru
<a href="rederect.php?url=адрес урла">адрес сайта</a>

В файле редирект делаешь все необходимые действия считаешь, смотришь ip и редиректишь на сайт
 

phantom

Новичок
адрес урла = адрес сайта ?

-~{}~ 02.05.07 20:48:

Т.е в моем случае я могу написать
$site_adress = "www.phpclub.ru";
print "<a href=rederect.php?url=$site_adress>$site_adress</a>";
 

Фанат

oncle terrible
Команда форума
www.phpclub.ru - это не урл.

попробуй написать в хтмл файле <a href=www.phpclub.ru>адрес сайта</a>
и посмотри что получится.
 

Фанат

oncle terrible
Команда форума
phantom
kruglov тебе рекомендует сделать
echo $site_adress и посмотреть на экран.

а я порекомендую не задавать вопросы на форуме, можно ли тебе то и разрешено ли это, а а пойти и заняться написанием скрипта
 

phantom

Новичок
Yes Ser! Это понятно. Но, всегда найдутся люди, у кот. опыт побогаче, и кот. могут помочь решить проблему в считанные минуты, а сам бы я копался бог знает сколько, выдумывал сложные, извращенные алгоритмы и коды. С другой стороны я не прошу написать мне скрипт, я прошу подсказать правильно ли я рассуждаю.
 

kruglov

Новичок
phantom
Ну, вы ж не баллистическую ракету строите, там - да, испытания - штука дорогая...
 

phantom

Новичок
да, но времени до защиты бакалаврской все меньше и меньше

-~{}~ 03.05.07 18:16:

Я сделал так:
В select.php юзер, кликает по ссылке.

select.php
print "<div align=center>
<table border=1 width=100% >
<td width=20% align=left ><a href=redirect.php?page=$adress[$k]> $adress[$k] </a></td>
</div>";

introduction.php- параметры БД
redirect.php
PHP:
<?
Error_Reporting(E_ALL & ~E_NOTICE);
/*получаем адрес сайта из select.php*/
$site = $_GET['page']; 
/*Проверка на наличие соокie*/
if($_COOKIE){
/*Если куки включены, проверяем отсутствие у пользователя куки с именем delay */
   if(!$delay){
      $users_ip = gethostbyname("");
      include("introduction.php");
      $query = "SELECT users_ip, rank FROM $userstable WHERE (adress = '$site')";
      $result = @mysql_query($query) or die("Couldn't insert information1!");;
      $number = MYSQL_NUMROWS($result);
      $user_ip = mysql_result($result,"users_ip"); 
      $rank = mysql_result($result,"rank");    
/*Проверяем ип пользователя, обратившегося к ссылке($users_ip) с ип владельца сайта($user_ip), если совпадают увеличиваем рейтинг и создаем куки на 2 дня с именем delay*/      
                          if($users_ip == $user_ip){
          setcookie("delay", time() + 2880);
          $rank++;         
         }
         else{
            $rank++;
         };
/*изменяем рейтинг в таблице*/   
      $query1 = "UPDATE $userstable SET rank='$rank' WHERE (adress = '$site')";
      $result1 = @mysql_query($query1) or die("Couldn't insert information2!");
   };
  };
/*Переходим на ссылку $site*/
header("Location: $site");
?>
Правильно ли я работаю с куки, потому, что 1-ый раз я к ним обращаюсь.
Кроме того, возникает ошибка Cannot modify header information - headers allready sent by (.../redirect.php:7) in .../redirect.php
В чем дело, не подскажите?

PS. $site имеет вид www.asds.ru, мне нужно привести к виду http://www... Могу я написать header("Location: http://$site");???
 

kruglov

Новичок
> $users_ip = gethostbyname("");
Эээ... А чего это? Чей айпишник мы узнаем, там в кавычках нету ничего.

> $query = "SELECT users_ip, rank FROM $userstable WHERE (adress = '$site')";
Ого, а если я передам в $site что-то вроде ' OR 'x'='x ?

> $user_ip = mysql_result($result,"users_ip");
Откройте для себя [m]mysql_fetch_assoc[/m]

> Кроме того, возникает ошибка
http://phpfaq.ru/


> PS.
А не работает?

-~{}~ 03.05.07 18:53:

> /*Проверка на наличие соокie*/
> if($_COOKIE){
> /*Если куки включены...

Вообще говоря, не факт. Если $_COOKIE не существует - это не значит, что они не выключены, это может означать, что их до этого не ставили или уже потерли.
 

Фанат

oncle terrible
Команда форума
что за, блин, дурацкая манера писать код через строчку? зрение плохое?
 

phantom

Новичок
> $users_ip = gethostbyname(""); Надеялся, что текущего пользователя. Если не так, то какую пер. надо указать(что она должна в себе содержать). Я просто тестирую на собсьвенном компе, и мой ип определяет как с gethostbyname("$userhost"), так и без $userhost. Хотя $userhost не имел никакого значения, просто объявлялся.

> $query = "SELECT users_ip, rank FROM $userstable WHERE (adress = '$site')";
Переменная $site содержит адрес сайта, введенный пользователем при регистрации. Можно написать скрипт проверки на формат www.asd.ru, можно вежливо попросить, чтобы вводили так, а не иначе. Ну а если и получится абракадабра, значит на их сайт больше не захотят выходить.

Если куки не включены или их потерли, значит голос не будет учавствовать в рейтинге. Вобщем можно прямо так и написать:"Включите куки, не знаешь как? Спроси у соседа!"

По-поводу текст через строчку. Так лучше видно, когда пишешь скрипт лежа на диване за 10м от моника ;-)
 

Фанат

oncle terrible
Команда форума
какую пер. надо указать(что она должна в себе содержать).
phpinfo(32) покажет тебе все переменные.
а уж что она должна в себе содержать - это ты должен сам для себя решить. что ТЕБЕ нужно - то и должна содержать.
а если я передам в $site что-то вроде ' OR 'x'='x ?
речь идет не о никому не нужных хомяках, а о взломе твоей базы данных.
Если куки не включены или их потерли, значит голос не будет учавствовать в рейтинге.
откуда возьмется самая первая кука?

впредь потрудись самостоятельно приводить текст к читабельному виду при помещении его на форум
 

phantom

Новичок
Как сделать массив кукисов? например setcookie("delay[$i]",0); или setcookie("$i",0); Я попробовал, рез-та не увидел.
Мне нужно, чтобы каждой ссылке соответсвовал свой куки.
 

Фанат

oncle terrible
Команда форума
phantom
если у тебя больше 20 ссылок, то ничего у тебя не выйдет.

если уж отслеживать все ссылки, то куку писать только одну - уникальный идентификатор юзера.
а все остальное отслеживать на сервере в базе
 

phantom

Новичок
Временные данные в БД

Привет, как в таблицу вставить переменную, значение кот. по истечению времени исчезло бы. Какого типа должно быть поле, содержащее эту переменную.
 

phantom

Новичок
как в таблицу вставить переменную, значение кот. по истечению времени исчезло бы. Какого типа должно быть поле, содержащее эту переменную.
 
Сверху