Forum Webscript.Ru
Программирование => Perl => Тема начата: glebushka от 12 Апреля 2002, 02:27:22
-
Вот что на самой страничке...
Я этим надеюсь запустить скрипт и передать параметр логин=1
В самом файле скрипта infolog.cgi...
use CGI;#подключаем модуль
$q=new CGI();#создаём модуль
$login=$q->param(\'login\');#надеюсь этим получить в переменную значение 1...
Далее неплохо бы, что бы скрипт получил такие значения, как $ENV{\'REMOTE_ADDR\'}
Почему ничего не получается?
-
а чего не получается? Все правильно, все нормально.
$ENV{\'REMOTE_ADDR\'} таким способом определяется.
Может ты у себя это локально проверял и сервер не запустил? :)
потом редирект на сам рисунок сделай и готово
print "Location: http://glebushka.hut.ru/img.gif\\n\\n";
-
То есть оно без редиректа не работает?
Пошёл менять...
-
То есть оно без редиректа не работает?
Пошёл менять...
работает, просто рисунок же надо загрузить.
А так и без него все будет - сам пробовал ;)
-
Файл создан, указан атрибут 0664!
use CGI;#подключаем модуль
$q=new CGI();#создаём модуль
$login=$q->param(\'login\');
$logfile = "/home/g/glebushka.hut.ru/cgi/hot/logstat/glebstat/$login.pl";
#файл, где храниться инфа для юзера
&get_date;
open (FILE, ">>$logfile");#открываем файл для дописи
print FILE "$ENV{\'REMOTE_ADDR\'};\\n"; #IP-шник юзверя, пришедшего на сайт...
print FILE "$ENV{REMOTE_HOST};\\n";#Имя хоста посетителя, которое обычно совпадает с доменным именем посетителя
print FILE "$ENV{\'HTTP_USER_AGENT\'};\\n"; #Браузер юзверя
print FILE "$ENV{\'HTTP_REFERER\'};\\n"; #Сслающаяся страница (откуда пришёл)
print FILE "$date\\n";#время захода юзверя на сайт
print FILE "---------------------------------------\\n";
close(FILE);
print "Location: http://glebushka.hut.ru/favicon.ico\\n\\n";
exit;
После этого, хоть чего-нить должно остаться в файле, а?
Страница, где вызывается скрипт:
http://www.glebushka.hut.ru/regedit7.html
сразу после тега боди...
Чего не так?
-
все так, а что ничего не пишется?
1. Сделай везде проверку, по типу:
open() or &log("Can not open, reason $!");
и докинь подпрограммку:
sub log {
open(LOG, ">>log.txt") or die("Can not open LOG: $!");
print LOG @_;
close LOG;
exit;
}
увидишь свой лог.
2. Закинь рисунок для начала видимый - если загрузится, значит скрипт сработал ;)
3. кстати, довольно неразумно выглядит это:
$login=$q->param(\'login\');
$logfile = "/home/g/glebushka.hut.ru/cgi/hot/logstat/glebstat/$login.pl";
;) типа небезопасно, можно всякубю хрень передать, а ты это открывать будешь.
4. Может вместо param тут лучше будет такое:
if ($ENV{\'QUERY_STRING\'}=~/login=(\\d+)/){$login=$1;}
else{die("Bad file name!");}
-
у тебя счетчик будет не самый правильный: картинка будет кешироваться ну и при обновлении - ничего ты не увидишь (кстати, может и не работало, т.к. ты там небось с десяток раз побывал и у тебя уже картинка из кеша берется, а как я появился :) сработало)
-
совсем необязательно передавать параметры скрипту в таком виде
script.pl?имя=значение
Если значение одно ;)
то проще так:
script.pl?значение (например script.pl?9 )
И оно содержится в $ENV{\'QUERY_STRING\'}, т.е. прямо оттудова хапаешь и проверяешь (главное проверить что передается)
-
кстати, может и не работало, т.к. ты там небось с десяток раз побывал и у тебя уже картинка из кеша берется, а как я появился сработало)
Угу... Спасибо, что кликнул по ссылке, а то бы я вообще сегодня не спал:), всё скрипт сверял, да на ф5 жал, как идиот, хотя может и без как:))))))))... Ну да ладно, лучше пойду я спать...
Кстати, как сделать "правильный счётчик"?
-
Кстати, как сделать "правильный счётчик"?
;) лучше взять готовый rambler например.. зачем свой сервер грузить, когда можно получить нечто по кач-ву не хуже?
а вообще, нужно подумать как бы предотвратить кеширование на статичных страницах, наверное тут нужен javascript, который бы генерировал некое случайное число в ссылке с картинкой.
-
наверное тут нужен javascript, который бы генерировал некое случайное число в ссылке с картинкой.
Не обязательно, можно и перловым скриптом добавить
$rand_numb = int( rand( 10000000 ));
вызов получится
http://www.glebushka.hut.ru/cgi-bin/hot/logstat/glebstat/infolog.cgi?$user-$rand_numb
-
Не обязательно, можно и перловым скриптом добавить
$rand_numb = int( rand( 10000000 ));
Не-а: он это использует на статичных html страницах.