Forum Webscript.Ru
Программирование => Perl => Тема начата: Strat от 02 Сентября 2002, 22:38:25
-
Здравствуйте, уважаемые профессионалы.
Пожалуйста, помогите!
Мне нужно, чтобы данные из формы записывались в txt файл не в дир. cgi-bin, а в дир. mydomain/ , и после завершения скрипта браузер отправлялся на др. сайт. Мой скрипт чо-то глючит:
#usr/bin/perl
&GetFormInput;
$name=$field{\'name\'};
$pass=$field{\'pass\'};
sub GetFormInput {
(*fval) = @_ if @_ ;
local ($buf);
if ($ENV{\'REQUEST_METHOD\'} eq \'POST\') {
read(STDIN,$buf,$ENV{\'CONTENT_LENGTH\'});
}
else {
$buf=$ENV{\'QUERY_STRING\'};
}
if ($buf eq "") {
return 0 ;
}
else {
@fval=split(/&/,$buf);
foreach $i (0 .. $#fval){
($name,$val)=split (/=/,$fval[$i],2);
$val=~tr/+/ /;
$val=~ s/%(..)/pack("c",hex($1))/ge;
$name=~tr/+/ /;
$name=~ s/%(..)/pack("c",hex($1))/ge;
if (!defined($field{$name})) {
$field{$name}=$val;
}
else {
$field{$name} .= ",$val";
}
}
}
return 1;
}
open (OUTFILE, ">>type.txt");
print OUTFILE "$name";
print OUTFILE "\\n$type";
print OUTFILE "\\n=======END=======\\n\\n";
close (OUTFILE);
print "Location: [url]http://redirect_URL\\n[/url]" ;
Спасибо
-
perldoc CGI в части param
-
print "Location: http://redirect_URL\\n\\n";
-
Serchey, спасибо
print "Location: http://redirect_URL\\n\\n";
но как сделать чтобы файл создавался не в дир. cgi-bin?
-
но как сделать чтобы файл создавался не в дир. cgi-bin?
open (OUTFILE, ">>type.txt");
open (OUTFILE, ">>direktoriya/type.txt");
каталог "direktoriya" должен существовать, если его не будет, будет ошибка:-). В принципе можно скриптом создать директорию функцией mkdir();
-
Плюс к тому ты должен быть его владельцом.
-
Чуть не забыл - спроси у кого-то, где физически расположена твоя директория(не путай с УРЛом). Это также можна сделать скриптом:
#!/usr/bin/perl -w
use strict;
print "Content-type: text/html\\n\\n";
my $sit = `pwd`;
print "$sit
\\n";
Но это только если ты под ...ксом работаешь.
-
Плюс к тому ты должен быть его владельцом
это ты к чему... Разъясни, не понял? Для чего должен быть обязательно владелецем? Для скрипта достаточно права на выполнение, для cgi-bin прав на чтение-запись(или установка sticky bit)-выполнение? разве не так?
Это также можна сделать скриптом:
а ещё можно указывать относительные пути, хоть переносимость с сайта на сайт ухудшается, зато изменение операционной системы тебе паралельно.
-
это ты к чему...
Ты знешь, что на каталог права должны быть -rwxr-xr-x (это у нормальных людей)? А причем тут твои sticky bit-ы и т..д.? Если он хочет записать куда-то, он должен иметь право. Что тут может быть не ясно?
-
-rwxr-xr-x
а если ---rwx--x То что? Если я, например, не владелец, а член группы владельца? Что это меняет? Я скрипт не могу редактировать и запускать?
это у нормальных людей
интересное определение нормальных людей...
А причем тут твои sticky bit-ы и т..д.?
Поясню на примере: Если кто-нибудь имеет право на запись в каталог, то он может добавлять и удалять файлы в этом каталоге, причём удалять не только свои файлы, а разом весь каталог, в котором могут находится файлы, к которым он доступа не имеет. Установка sticky bit
позволяет разрешить пользователю добавление и удаление своих файлов из каталога, НО не даёт возможности удалить весь каталог(!).
он должен иметь право
В этом ты прав, вот только в системе юникс права имеет не только владелец, но и группа, и мир.
Уф... Врятли понятно объяснил, но надеюсь кто-то чего-то понял:-)