Вы не зашли.
#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
В чем проблема может быть?
где ты этот скрипт взял?
Добавлено спустя 32 секунды: в глобальных переменных, скрипт написан на включенных.
Добавлено спустя 2 минуты 25 секунд: echo "<div align="left">";
вот тут ошибка.
else {
и вот тут ошибка.
#4.
AGENT
Off
(2)
Участник
2009.02.22 16:04
Скрипт в сети нашел. Точнее как шаблон. А как сделать чтоб работало и без глобальных чтоб было?
Добавлено спустя 1 минуту 11 секунд: Правда я там чуть полазил ))изначально не такой был скрипт
$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?
$_POST['row'] если эта переменна приходти POST методом.
#9.
AGENT
Off
(2)
Участник
2009.02.22 17:05
$hits=$_POST['row']["hits"] что ли получится? *WALL* а как узнать каким методом передается?
Отредактировано AGENT (2009.02.22 17:05)
$row = mysql_fetch_array($result); ты эту переменную имеешь ввиду чтоли?
если видишь переменную в url, то это GET, если нет, то это POST
Нет. Я эту имею ввиду $hits=$row["hits"];
Добавлено спустя 1 минуту 51 секунду: Дайте йаду ведро! Может выпью и пойму где что поменять надо
$row ты созал сам. $row = mysql_fetch_array($result2); ни POST, ни GET ей не надо.
я не знаю, я этот скрипт не ставил.
А я вот ставил и не работает. Ты говоришь что он на глобальных работает а как переделать на офф я не пойму пока
посмотрел повнимательней, там вродебы даже достаточно просто заменить $HTTP_REFERER на $_SERVER['HTTP_REFERER'] и все
Завтра проверю тогда
спасибо
Не работает. Ни первый,ни второй скрипт
ну выкладывай, что ты там исправил. да и вообще, написал бы свой скрипт)
Паша,думаю не смогу я пока писать. Меня псих берет когда что то не получается. С тела жопа полная
Ошибку нашел идиотскую. Теперь ошибки при инлюде не возникает. Но и в базу не записывается. А viewreferer.php так и выдает ошибку (белый экран)
напиши свой измененный код
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>";
?>
Написал тебе свои измененный код и что?
Вот другой
Код:
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)
звиняюсь, как-то не хватило времени проверить.
Код:
span style="color: #0000BB"><?phpfile_put_contents('file.dat', $_SERVER['HTTP_REFERER'].' - '.$_SERVER['HTTP_USER_AGENT']."\n", FILE_APPEND);?> |
Gemorroj написал:звиняюсь, как-то не хватило времени проверить.
Код:
span style="color: #0000BB"><?phpfile_put_contents('file.dat', $_SERVER['HTTP_REFERER'].' - '.$_SERVER['HTTP_USER_AGENT']."\n", FILE_APPEND);?> |
Павел,я что то не пойму это что и для чего? У меня же другой скрипт был.
это замена твоего из 24 поста.
Это че мне щас нужно выкинуть свои,поставить твой и создать дат файл?
А почему мой не работает? А то я так ничего не пойму на будущее
Твой работает. Но он пишет даже если в строке браузера адрес ввел (браузер записывает). А если сделать все это вывод на страницу то лучше два и более файла для записи сделать? В одном адреса,в другом браузер,можно еще и дату подсчет хитов гг
Добавлено спустя 3 минуты 1 секунду: Ну вот. Твой скрипт тоже записывает все подряд. Даже адрес моего сайта записывает. И что т не пойму,поставил на главную только для теста,а он мне ссылки с загруза показывает.
записываются 2 переменные
$_SERVER['HTTP_REFERER'] и $_SERVER['HTTP_USER_AGENT'] если ты просто обновиш страницу. то реферер, естественно, будет эта страница.
Gemorroj написал:
записываются 2 переменные $_SERVER['HTTP_REFERER'] и $_SERVER['HTTP_USER_AGENT'] если ты просто обновиш страницу. то реферер, естественно, будет эта страница.
не. Такое не пойдет. На куках наверно надо. Дело в другом еще. Он записывает почему мой адрес ,да еще и с загруз центра. Я страницы не обновлял,там браузеры другие.
и при обновлении страницы не должно идти записи,реф должен быть от куда пришли. А он записывает мой сайт рефом
Добавлено спустя 2 минуты 11 секунд: Щас файл уже весит нормально. Гугль в гости зашел гг
)
AGENT, это реферер) если тебе нужно что-то другое, то прежде грамотно спроектируй скрипт. "Он почему-то" - не бывает. Это самый простой скрипт в 1 строчку. Все что он делает, этог записывает реферер и юзерагент. Все. Юзер агент и реферер передаются браузером, а не каким-то мифическим образом формируются в php. Так что либо твой браузер предает как-то не так (прокси например), либо мы друг друга не понимаем.
Я впервые вижу и слышу что рефером может быть собственный сайт. Рефер должен записываться только если с какого то другого сайта перешли к тебе на сайт а не через строку браузера. К примеру если перешли с гугла,то скрипт обязан записать адрес от куда перешли (гугла) и браузер. Я видел кучу скриптов в двигах и все они работали как надо. Данный же скрипт считает рефом мой собственный сайт чего не должно быть.
Добавлено спустя 4 минуты 38 секунд: И мой браузер тут не причем. Я смотрю на другие браузеры.
Отредактировано AGENT (2009.02.27 15:03)
AGENT, ну вот теперь услышал. реферер - это предыдущая страница. и все. и потом реферер очень часто не передается. я, например, отключил его в браузере.
Хм а как тогда работает австатс в панели? Почему он не засчитывает страницы моего сайта а считает только переходы с других?
потому что это такой менеджер) и там работают соответствующие фильтры.
Эээ ну понятно. Спасибо
Добавлено спустя 5 минут 50 секунд: Павел,я не буду отдельную тему создавать. Спрошу тут. Как то давно я качал скрипт новостей с коментами. Он еще у Николая стоит. Там есть рсс канал. Вот сегодня я немного переделал этот скрипт полностью под сайт свой,посадил на куки и сделал смену тем там. И увидел что после добавления новости,новость не записывается в rss.xml . Думал я что то там наделал и начал искать ошибку,но когда посмотрел старый установленный скрипт то увидел что туда тоже не записывалась новость еще с декабря 2008 года. А в то время я вроде со скриптом ничего не делал. Права 666 стоят. В чем может быть проблема и в каком именно файле? Найти ошибку не могу.
хз, что именно за скрипт? в архиве он есть тут?
Да . Это твой скрипт с коментариями. В первом можно было заголовок и новость писать,а во втором только новость. Вот похоже когда я заменил файлы и перестало работать.
позже... у мя терь работа, в инете тостоянно, но по работе, на свои вещи времени практически не остается(
Ну че новости кто нить посмотрит? Кстати новости эти или похожие как тут на главной.
Gemorroj написал:
какие такие новости???
отличный вопрос. Ты не знаешь какой скрипт новостей у тебя на главной? Не я же админ тут.