Вы не зашли.
Главная » PHP » Реферер
#1. AGENT Off (2)
Участник
2009.02.22 15:03
Почему не работает скрипт записи и вывода рефа? Задолбался уже. Белый экран в водит и все тут.
Добавлено спустя   5 минут  10 секунд:
Код:
Таблица: CREATE TABLE `referer` (
url varchar(100) NOT NULL,
hits int(10) DEFAULT '0' NOT NULL,
PRIMARY KEY (url)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
файл который необходимо инклюдить в нужные страницы:
<?php
$hostname1 = "";
$username1 = "";
$password1 = "";
$userstable1 = "referer";
$dbName1 = "";
$ref = strtolower($HTTP_REFERER);
if(!empty($ref)){
mysql_connect($hostname1,$username1, $password1) or die (mysql_error());
mysql_select_db("$dbName1") or die(mysql_error());
$query = "select * from $userstable1 where url = '$ref'";
$result = mysql_query($query);$rows = mysql_num_rows ($result);
if ($rows == 0){
$hits = "1";
$query1 = "insert into $userstable1 (url,hits) values ('$ref','$hits')";
else {
$hitquery = "select hits from $userstable1 where url = '$ref'";
$result2 = mysql_query($hitquery);
$row = mysql_fetch_array($result2);
$hits = $row["hits"];
$query2 = "update $userstable1 set hits = hits+1 where url = '$ref'";
mysql_query($query2);
} }
?>
файл вывода информации:
<?php
 
$hostname1 = "";
$username1= "";
$password1 = "";
$userstable1 = "referer";
$dbName1 = "";
 
$color10 = "#FFFF00";
$color20 = "#FF0000";
$color50 = "#008000";
$color1k = "#0000FF";
$color2k = "#0000A0";
$color5k = "#000040";
 
mysql_connect($hostname1, $username1,$password1) or die (mysql_error());
mysql_select_db("$dbName1") or die(mysql_error());
 
$query = "select * from $userstable1 order by hits desc";
$result = mysql_query($query);
$number = mysql_num_rows($result) or die (mysql_error ());
$i = 0;
if ($number == 0) {
echo '<center><p><b>Сведений о рефералах не обнаружено!</b></center>';
}
elseif ($number >= 1) {
while ($i < $number){
$row = mysql_fetch_array($result);
$hits = $row["hits"];
$ref = $row["url"];
if ($hits <10){
$color = "$color10";
} elseif (($hits >= 10 ) and ($hits < 20)){
$color = "$color20";
} elseif (($hits >= 20 ) and ($hits < 50)){
$color = "$color50";
} elseif (($hits >= 50 ) and ($hits < 100)){
$color = "$color1k";
} elseif (($hits >= 100 ) and ($hits < 200)){
$color = "$color2k";
} elseif ($hits >= 200){
$color = "$color5k";
}
echo "<div align="left">";
echo "<table cols="3" border="0" width="100%"><tr><td align="left" width="400"><b><a href="$ref">$ref</a></b></td>";
echo "<td align="right" width="60"><b>$hits</b></td>";
echo "<td align="left" width="$hits" bgcolor="$color"></td></tr>";
$i++;
echo"</table>";
}
}
?>
#2. AGENT Off (2)
Участник
2009.02.22 15:03
В чем проблема может быть?
#3. Gemorroj Off (107)
Administrator
2009.02.22 15:03
где ты этот скрипт взял?
Добавлено спустя    32 секунды:
в глобальных переменных, скрипт написан на включенных.
Добавлено спустя   2 минуты  25 секунд:
echo "<div align="left">";
вот тут ошибка.
else {
и вот тут ошибка.
#4. AGENT Off (2)
Участник
2009.02.22 16:04
Скрипт в сети нашел. Точнее как шаблон. А как сделать чтоб работало и без глобальных чтоб было? smile
Добавлено спустя   1 минуту  11 секунд:
Правда я там чуть полазил ))изначально не такой был скрипт
#5. Gemorroj Off (107)
Administrator
2009.02.22 16:04
$HTTP_REFERER заменить на $_SERVER['HTTP_REFERER']; ну и переменные которые приходят извне принимаь соответственно через $_GET и $_POST
#6. AGENT Off (2)
Участник
2009.02.22 16:04
A вот переменные которые приходят из вне я не смогу заменить. Точнее найти((
#7. AGENT Off (2)
Участник
2009.02.22 17:05
Это получится $ref = strtolower($_SERVER['HTTP_REFERER']);
а переменные нужно заменить $ref,$hits?
Добавлено спустя   1 минуту  35 секунд:
$row убрать и поставить $_POST?
#8. Gemorroj Off (107)
Administrator
2009.02.22 17:05
$_POST['row'] если эта переменна приходти POST методом.
#9. AGENT Off (2)
Участник
2009.02.22 17:05
$hits=$_POST['row']["hits"] что ли получится? *WALL* а как узнать каким методом передается?
Отредактировано AGENT (2009.02.22 17:05)
#10. Gemorroj Off (107)
Administrator
2009.02.22 17:05
$row = mysql_fetch_array($result); ты эту переменную имеешь ввиду чтоли?
если видишь переменную в url, то это GET, если нет, то это POST
#11. AGENT Off (2)
Участник
2009.02.22 17:05
Нет. Я эту имею ввиду $hits=$row["hits"];
Добавлено спустя   1 минуту  51 секунду:
Дайте йаду ведро! Может выпью и пойму где что поменять надо
#12. Gemorroj Off (107)
Administrator
2009.02.22 17:05
$row ты созал сам. $row = mysql_fetch_array($result2); ни POST, ни GET ей не надо.
#13. AGENT Off (2)
Участник
2009.02.22 18:06
А каким тогда надо?
#14. Gemorroj Off (107)
Administrator
2009.02.22 18:06
я не знаю, я этот скрипт не ставил.
#15. AGENT Off (2)
Участник
2009.02.22 18:06
А я вот ставил и не работает. Ты говоришь что он на глобальных работает а как переделать на офф я не пойму пока
#16. Gemorroj Off (107)
Administrator
2009.02.22 18:06
посмотрел повнимательней, там вродебы даже достаточно просто заменить $HTTP_REFERER на $_SERVER['HTTP_REFERER'] и все
#17. AGENT Off (2)
Участник
2009.02.22 18:06
Завтра проверю тогда smile спасибо
#18. AGENT Off (2)
Участник
2009.02.23 05:05
Не работает. Ни первый,ни второй скрипт
#19. Gemorroj Off (107)
Administrator
2009.02.23 08:08
ну выкладывай, что ты там исправил. да и вообще, написал бы свой скрипт)
#20. AGENT Off (2)
Участник
2009.02.23 11:11
Паша,думаю не смогу я пока писать. Меня псих берет когда что то не получается. С тела жопа полная
#21. AGENT Off (2)
Участник
2009.02.23 12:12
Ошибку нашел идиотскую. Теперь ошибки при инлюде не возникает. Но и в базу не записывается. А viewreferer.php так и выдает ошибку (белый экран)
#22. Gemorroj Off (107)
Administrator
2009.02.23 13:01
напиши свой измененный код
#23. AGENT Off (2)
Участник
2009.02.23 14:02
referer.php
<?php
$hostname1 = ".mchost.ru";
$username1 = "_12";
$password1 = "Test12345";
$userstable1 = "referer";
$dbName1 = "_12";
$ref = strtolower($_SERVER['HTTP_REFERER']);
if(!empty($ref)) {
mysql_connect($hostname1,$username1, $password1) or die (mysql_error());
mysql_select_db("$dbName1") or die(mysql_error());
$query = "select * from $userstable1 where url = '$ref'";
$result = mysql_query($query);$rows = mysql_num_rows ($result);
if ($rows == 0){
$hits = "1";
$query = "insert into $userstable1 (url,hits) values ('$ref','$hits')";

$hitquery = "select hits from $userstable1 where url = '$ref'";
$result2 = mysql_query($hitquery);
$row = mysql_fetch_array($result2);
$hits = $row["hits"];
$query2 = "update $userstable1 set hits = hits+1 where url = '$ref'";
mysql_query($query2);
} }
?>
viewreferer.php
<?php

$hostname1 = ".mchost.ru";
$username1 = "_12";
$password1 = "Test12345";
$userstable1 = "referer";
$dbName1 = "_12";

$color10 = "#FFFF00";
$color20 = "#FF0000";
$color50 = "#008000";
$color1k = "#0000FF";
$color2k = "#0000A0";
$color5k = "#000040";

<head>
<title>test</title>
</head><body>
mysql_connect($hostname1, $username1,$password1) or die (mysql_error());
mysql_select_db("$dbName1") or die(mysql_error());

$query = "select * from $userstable1 order by hits desc";
$result = mysql_query($query);
$number = mysql_num_rows($result) or die (mysql_error ());
$i = 0;
if ($number == 0) {
echo '<center><p><b>Сведений о рефералах не обнаружено!</b></center>';
}
elseif ($number >= 1) {
while ($i < $number){
$row = mysql_fetch_array($result);
$hits = $row["hits"];
$ref = $row["url"];
if ($hits <10){
$color = "$color10";
} elseif (($hits >= 10 ) and ($hits < 20)){
$color = "$color20";
} elseif (($hits >= 20 ) and ($hits < 50)){
$color = "$color50";
} elseif (($hits >= 50 ) and ($hits < 100)){
$color = "$color1k";
} elseif (($hits >= 100 ) and ($hits < 200)){
$color = "$color2k";
} elseif ($hits >= 200){
$color = "$color5k";
}
echo "<td align="left">";
echo "<table cols="3" border="0" width="100%"><tr><td align="left" width="400"><b><a href="$ref">$ref</a></b></td>";
echo "<td align="right" width="60"><b>$hits</b></td>";
echo "<td align="left" width="$hits" bgcolor="$color"></td></tr>";
$i++;
}
}
echo"</table>";
echo "</body></html>";
?>
#24. AGENT Off (2)
Участник
2009.02.27 06:06
Написал тебе свои измененный код и что?
Вот другой
Код:
span style="color: #0000BB"><?php$ref = $_SERVER['HTTP_REFERER'];$refuser = htmlspecialchars($_SERVER['HTTP_USER_AGENT']);$fileref = "text.txt";$script = fopen($fileref, "a+");fwrite($script, $ref, $refuser."\n");fclose($script); ?>
в файл записывает,но записывает и реальных рефов и мой алиас,но почему то не записывает юзер агент. Не подскажешь как это исправить?
Отредактировано AGENT (2009.02.27 07:07)
#25. Gemorroj Off (107)
Administrator
2009.02.27 11:11
звиняюсь, как-то не хватило времени проверить.
Код:
span style="color: #0000BB"><?phpfile_put_contents('file.dat', $_SERVER['HTTP_REFERER'].' - '.$_SERVER['HTTP_USER_AGENT']."\n", FILE_APPEND);?>
#26. AGENT Off (2)
Участник
2009.02.27 13:01
Gemorroj написал:
звиняюсь, как-то не хватило времени проверить.
Код:
span style="color: #0000BB"><?phpfile_put_contents('file.dat', $_SERVER['HTTP_REFERER'].' - '.$_SERVER['HTTP_USER_AGENT']."\n", FILE_APPEND);?>
Павел,я что то не пойму это что и для чего? У меня же другой скрипт был.
#27. Gemorroj Off (107)
Administrator
2009.02.27 13:01
это замена твоего из 24 поста.
#28. AGENT Off (2)
Участник
2009.02.27 13:01
Это че мне щас нужно выкинуть свои,поставить твой и создать дат файл?
А почему мой не работает? А то я так ничего не пойму на будущее
#29. Gemorroj Off (107)
Administrator
2009.02.27 13:01
fwrite($script, $ref, $refuser."\n");
http://php.net/fwrite не правильно переданы параметры.
#30. AGENT Off (2)
Участник
2009.02.27 13:01
Твой работает. Но он пишет даже если в строке браузера адрес ввел (браузер записывает). А если сделать все это вывод на страницу то лучше два и более файла для записи сделать? В одном адреса,в другом браузер,можно еще и дату подсчет хитов гг
Добавлено спустя   3 минуты  1 секунду:
Ну вот. Твой скрипт тоже записывает все подряд. Даже адрес моего сайта записывает. И что т не пойму,поставил на главную только для теста,а он мне ссылки с загруза показывает.
#31. Gemorroj Off (107)
Administrator
2009.02.27 14:02
записываются 2 переменные $_SERVER['HTTP_REFERER'] и $_SERVER['HTTP_USER_AGENT'] если ты просто обновиш страницу. то реферер, естественно, будет эта страница.
#32. AGENT Off (2)
Участник
2009.02.27 14:02
Gemorroj написал:
записываются 2 переменные $_SERVER['HTTP_REFERER'] и $_SERVER['HTTP_USER_AGENT'] если ты просто обновиш страницу. то реферер, естественно, будет эта страница.
не. Такое не пойдет. На куках наверно надо. Дело в другом еще. Он записывает почему мой адрес ,да еще и с загруз центра. Я страницы не обновлял,там браузеры другие. smile и при обновлении страницы не должно идти записи,реф должен быть от куда пришли. А он записывает мой сайт рефом
Добавлено спустя   2 минуты  11 секунд:
Щас файл уже весит нормально. Гугль в гости зашел гг
#33. Gemorroj Off (107)
Administrator
2009.02.27 14:02
smile) AGENT, это реферер) если тебе нужно что-то другое, то прежде грамотно спроектируй скрипт. "Он почему-то" - не бывает. Это самый простой скрипт в 1 строчку. Все что он делает, этог записывает реферер и юзерагент. Все. Юзер агент и реферер передаются браузером, а не каким-то мифическим образом формируются в php. Так что либо твой браузер предает как-то не так (прокси например), либо мы друг друга не понимаем.
#34. AGENT Off (2)
Участник
2009.02.27 15:03
Я впервые вижу и слышу что рефером может быть собственный сайт. Рефер должен записываться только если с какого то другого сайта перешли к тебе на сайт а не через строку браузера. К примеру если перешли с гугла,то скрипт обязан записать адрес от куда перешли (гугла) и браузер. Я видел кучу скриптов в двигах и все они работали как надо. Данный же скрипт считает рефом мой собственный сайт чего не должно быть.
Добавлено спустя   4 минуты  38 секунд:
И мой браузер тут не причем. Я смотрю на другие браузеры.
Отредактировано AGENT (2009.02.27 15:03)
#35. Gemorroj Off (107)
Administrator
2009.02.27 16:04
AGENT, ну вот теперь услышал. реферер - это предыдущая страница. и все. и потом реферер очень часто не передается. я, например, отключил его в браузере.
#36. AGENT Off (2)
Участник
2009.02.27 17:05
Хм а как тогда работает австатс в панели? Почему он не засчитывает страницы моего сайта а считает только переходы с других?
#37. Gemorroj Off (107)
Administrator
2009.02.27 18:06
потому что это такой менеджер) и там работают соответствующие фильтры.
#38. AGENT Off (2)
Участник
2009.02.28 10:10
Эээ ну понятно. Спасибо
Добавлено спустя   5 минут  50 секунд:
Павел,я не буду отдельную тему создавать. Спрошу тут. Как то давно я качал скрипт новостей с коментами. Он еще у Николая стоит. Там есть рсс канал. Вот сегодня я немного переделал этот скрипт полностью под сайт свой,посадил на куки и сделал смену тем там. И увидел что после добавления новости,новость не записывается в rss.xml . Думал я что то там наделал и начал искать ошибку,но когда посмотрел старый установленный скрипт то увидел что туда тоже не записывалась новость еще с декабря 2008 года. А в то время я вроде со скриптом ничего не делал. Права 666 стоят. В чем может быть проблема и в каком именно файле? Найти ошибку не могу.
#39. AGENT Off (2)
Участник
2009.02.28 14:02
Ау гг
#40. Gemorroj Off (107)
Administrator
2009.02.28 15:03
хз, что именно за скрипт? в архиве он есть тут?
#41. AGENT Off (2)
Участник
2009.02.28 18:06
Да . Это твой скрипт с коментариями. В первом можно было заголовок и новость писать,а во втором только новость. Вот похоже когда я заменил файлы и перестало работать.
#42. AGENT Off (2)
Участник
2009.03.02 05:05
Аааууу
#43. AGENT Off (2)
Участник
2009.03.02 12:12
Ауууугг
#44. Gemorroj Off (107)
Administrator
2009.03.02 13:01
позже... у мя терь работа, в инете тостоянно, но по работе, на свои вещи времени практически не остается(
#45. AGENT Off (2)
Участник
2009.03.02 15:03
Понятно. Бывает
#46. AGENT Off (2)
Участник
2009.03.22 11:11
Ну че новости кто нить посмотрит? Кстати новости эти или похожие как тут на главной.
#47. Gemorroj Off (107)
Administrator
2009.03.22 11:11
какие такие новости???
#48. AGENT Off (2)
Участник
2009.03.24 06:06
Gemorroj написал:
какие такие новости???
отличный вопрос. Ты не знаешь какой скрипт новостей у тебя на главной? Не я же админ тут.
Страниц: 13 4 5 Все
Главная
WEB
PunBB Mod v0.6.2
0.055 s