Forum Webscript.Ru

Программирование => Perl => Тема начата: glebushka от 12 Апреля 2002, 02:27:22

Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: glebushka от 12 Апреля 2002, 02:27:22
Вот что на самой страничке...

Я этим надеюсь запустить скрипт и передать параметр логин=1
В самом файле скрипта infolog.cgi...
use CGI;#подключаем модуль
$q=new CGI();#создаём модуль
$login=$q->param(\'login\');#надеюсь этим получить в переменную значение 1...
Далее неплохо бы, что бы скрипт получил такие значения, как $ENV{\'REMOTE_ADDR\'}
Почему ничего не получается?
Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: Green Kakadu от 12 Апреля 2002, 02:56:27
а чего не получается? Все правильно, все нормально.
$ENV{\'REMOTE_ADDR\'}  таким способом определяется.
Может ты у себя это локально проверял и сервер не запустил? :)

потом редирект на сам рисунок сделай и готово

print "Location: http://glebushka.hut.ru/img.gif\\n\\n";
Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: glebushka от 12 Апреля 2002, 02:58:29
То есть оно без редиректа не работает?
Пошёл менять...
Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: Green Kakadu от 12 Апреля 2002, 03:07:00
Цитировать
То есть оно без редиректа не работает?
Пошёл менять...

работает, просто рисунок же надо загрузить.
А так и без него все будет - сам пробовал ;)
Название: Дык не работает!
Отправлено: glebushka от 12 Апреля 2002, 03:30:03
Файл создан, указан атрибут 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
сразу после тега боди...
Чего не так?
Название: ээ
Отправлено: Green Kakadu от 12 Апреля 2002, 03:53:24
все так, а что ничего не пишется?
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!");}
Название: о еще
Отправлено: Green Kakadu от 12 Апреля 2002, 04:02:02
у тебя счетчик будет не самый правильный: картинка будет кешироваться ну и при обновлении - ничего ты не увидишь (кстати, может и не работало, т.к. ты там небось с десяток раз побывал и у тебя уже картинка из кеша берется, а как я появился :) сработало)
Название: и еще
Отправлено: Green Kakadu от 12 Апреля 2002, 04:04:53
совсем необязательно передавать параметры скрипту в таком виде
script.pl?имя=значение
Если значение одно ;)
то проще так:
script.pl?значение (например script.pl?9 )

И оно содержится в $ENV{\'QUERY_STRING\'}, т.е. прямо оттудова хапаешь и проверяешь (главное проверить что передается)
Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: glebushka от 12 Апреля 2002, 04:22:00
Цитировать
кстати, может и не работало, т.к. ты там небось с десяток раз побывал и у тебя уже картинка из кеша берется, а как я появился  сработало)

Угу... Спасибо, что кликнул по ссылке, а то бы я вообще сегодня не спал:), всё скрипт сверял, да на ф5 жал, как идиот, хотя может и без как:))))))))... Ну да ладно, лучше пойду я спать...
Кстати, как сделать "правильный счётчик"?
Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: Green Kakadu от 12 Апреля 2002, 04:46:16
Цитировать
Кстати, как сделать "правильный счётчик"?

;) лучше взять готовый rambler например.. зачем свой сервер грузить, когда можно получить нечто по кач-ву не хуже?

а вообще, нужно подумать как бы предотвратить кеширование на статичных страницах, наверное тут нужен javascript, который бы генерировал некое случайное число в ссылке с картинкой.
Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: NeoNox от 12 Апреля 2002, 12:16:18
Цитировать
наверное тут нужен javascript, который бы генерировал некое случайное число в ссылке с картинкой.

Не обязательно, можно и перловым скриптом добавить
$rand_numb = int( rand( 10000000 ));

вызов получится
http://www.glebushka.hut.ru/cgi-bin/hot/logstat/glebstat/infolog.cgi?$user-$rand_numb
Название: Передача из ХТМЛ-документа параметров скрипту...
Отправлено: Green Kakadu от 13 Апреля 2002, 02:53:25
Цитировать
Не обязательно, можно и перловым скриптом добавить
$rand_numb = int( rand( 10000000 ));

Не-а: он это использует на статичных html страницах.