Forum Webscript.Ru
Программирование => Perl => Тема начата: от 22 Марта 2001, 16:48:52
-
Подскажите, пожалуйста правильный синтекс и всего остального этого сабжа:
Есть форма для отправки ID(В виде цифр), причем в зависимости от ID перенаправляет на нужную страницу
$cards_url/$cardnumber$cardext
HTML:
Кусок Перл-скрипта:
sub get_card {
opendir (IDIR, $cards_directory);
@files = IDIR;
$file = "$FORM{\'getcards\'}$cardext";
foreach $files (@files) {
if (($file = @files) & ($FORM{\'getcards\'} ne "")){
$cardnumber = $FORM{\'getcards\'};
print "Location: $cards_url/$cardnumber$cardext
";
}
else {print &Error(\'Такого ID-номера Не существует, или, просто, он не введен!\'); exit; }
}
closedir (IDIR);
}
Нужно, чтобы скрипт проверил на наличие файла
$FORM{\'getcards\'}$cardext в директории $cards_directory, где
$FORM{\'getcards\'} - любое число выводимое из формы
$cardext - .html
$cards_directory - c:/что-угодно/postcards
Я еще ЧАЙНИК в это деле, так что сильно не судите....
-
что то типа того
if ( open(FILE, \'путь_и_имя_файла\') ){
print "нашел файл!";
close(FILE);
}else{
print "не нашел";
}
-
>>opendir (IDIR, $cards_directory);
Откуда берешь $cards_directory?
>>@files = IDIR;
>>$file = "$FORM{\'getcards\'}$cardext";
А это что за $cardext ?
>>if (($file = @files) & ($FORM{\'getcards\'} ne "")){
А что значит $file = @files ? Может имеешь ввиду $file = $files ?
>>$cardnumber = $FORM{\'getcards\'};
Ты вроде это значение уже брал. Или я что-то не понимаю???
>>print "Location: $cards_url/$cardnumber$cardext
";
>>}
>>else {print &Error(\'Такого ID-номера Не существует, или, просто, он не введен!\'); exit; }
>>}
>>closedir (IDIR);
Закрывать IDIR нужно до возможного exit\'а. Ну это просто так, для порядку.
-
$cardext - это расширение файла НАПРИМЕР, .html с точкой впереди
-
Ты бы конкретно обрисовал бы задачку. А то не понятно, откуда берутся у тебя эти переменные...
И почему тебе не нравится, например @params=split(/&/,$ENV{\'QUERY_STRING\'})
а такая любовь к $FORM{...} ?
-
Есть скрипт В.открыток, и я решил зарядить туда форму для Pick-up
Которая находится выше, но не знаю как!!!
При отправлении открытки, скрипт создает файл в директории
$cards_directory (например /usr/bin/postcards в конфиге), где имя файла должно быть что-то вроде этого $FORM{\'getcards\'}$cardext
(в конфиге $cardext=".html" $FORM{\'getcards\'} - это некое число генерируемое скриптом). Так вот я хочу, что пользователь вводил в pick-up форму это число и скрипт редиректил его на страницу в указанной директории, с проверкой на существующий файл
Пример,
Создалась у меня открытка в каталоге $cards_directory
С именем файла 53475484.html
($FORM{\'getcards\'} - 53475484 a $cardext - .html т.е получаем
$FORM{\'getcards\'}$cardext)
В форме ввожу число 53475484,
Это число подставляется $FORM{\'getcards\'} и проверяется наличие файла $FORM{\'getcards\'}$cardext) в директории $cards_directory
Если файл обнаружен, то перенаправляем пользователя на указанный ХТМЛ
Если же нет то пишем Сообщение об Ошибке
-
#!/usr/bin/perl
print "Content-type: text/html
";
$extension=".html";
$catalog="new";
@params=split(/&/,$ENV{\'QUERY_STRING\'}); #берет коммандную строку
foreach (@params)
{
($key,$val)=split(/=/,$_); # переписываем все параметры
$param{$key}=$val; # в хэш
}
$nomer = $param{\'getcards\'}; # берем введенный номер
$name=$nomer.$extension;
opendir (IDIR,$catalog);
$found=0;
while(defined($file=readdir(IDIR))) #перебираем весь каталог (не очень полезная затея)
{
if($file==$name) # если нашли, то
{
$found=1; # делаем вот так
closedir(IDIR); # закрываем каталог
}
}
if($found) # и проверяем - нашли или не нашли
{
print "Ура! Нашли файлик!";
}
else
{
print "Ну нет такого файла!";
}
#А вообще-то - храни ссылки на файлы в твоем каталоге в каком нибудь файле (на худой конец), а
в лучшем случае в базе (типа mySQL). :-)
-
Большое Спасибо Lodevar!!!
Сейчас буду пробовать!