Forum Webscript.Ru

Программирование => Perl => Тема начата: Strat от 02 Сентября 2002, 22:38:25

Название: Помогите чайнику!!!
Отправлено: 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]" ;



Спасибо
Название: Помогите чайнику!!!
Отправлено: Chs от 03 Сентября 2002, 14:19:19
perldoc CGI в части param
Название: Помогите чайнику!!!
Отправлено: Serchey от 03 Сентября 2002, 15:29:07
print "Location: http://redirect_URL\\n\\n";
Название: Помогите чайнику!!!
Отправлено: Strat от 03 Сентября 2002, 22:04:33
Serchey, спасибо

Цитировать
print "Location: http://redirect_URL\\n\\n";


но как сделать чтобы файл создавался не в дир. cgi-bin?
Название: Помогите чайнику!!!
Отправлено: glebushka от 03 Сентября 2002, 23:58:06
Цитировать
но как сделать чтобы файл создавался не в дир. cgi-bin?

Цитировать
open (OUTFILE, ">>type.txt");

open (OUTFILE, ">>direktoriya/type.txt");
каталог "direktoriya" должен существовать, если его не будет, будет ошибка:-). В принципе можно скриптом создать директорию функцией mkdir();
Название: Помогите чайнику!!!
Отправлено: Serchey от 04 Сентября 2002, 00:40:04
Плюс к тому ты должен быть его владельцом.
Название: Помогите чайнику!!!
Отправлено: Serchey от 04 Сентября 2002, 00:43:28
Чуть не забыл - спроси у кого-то, где физически расположена твоя директория(не путай с УРЛом). Это также можна сделать скриптом:
#!/usr/bin/perl -w
use strict;

print "Content-type: text/html\\n\\n";
my $sit = `pwd`;
print "

$sit

\\n";

Но это только если ты под ...ксом работаешь.
Название: Помогите чайнику!!!
Отправлено: glebushka от 04 Сентября 2002, 02:09:34
Цитировать
Плюс к тому ты должен быть его владельцом

это ты к чему... Разъясни, не понял? Для чего должен быть обязательно владелецем? Для скрипта достаточно права на выполнение, для cgi-bin прав на чтение-запись(или установка sticky bit)-выполнение? разве не так?
Цитировать
Это также можна сделать скриптом:

а ещё можно указывать относительные пути, хоть переносимость с сайта на сайт ухудшается, зато изменение операционной системы тебе паралельно.
Название: Помогите чайнику!!!
Отправлено: Serchey от 04 Сентября 2002, 11:41:44
Цитировать
это ты к чему...
Ты знешь, что на каталог права должны быть -rwxr-xr-x (это у нормальных людей)? А причем тут твои sticky bit-ы и т..д.? Если он хочет записать куда-то, он должен иметь право. Что тут может быть не ясно?
Название: Помогите чайнику!!!
Отправлено: glebushka от 05 Сентября 2002, 22:41:40
Цитировать
-rwxr-xr-x

а если ---rwx--x То что? Если я, например, не владелец, а член группы владельца? Что это меняет? Я скрипт не могу редактировать и запускать?
Цитировать
это у нормальных людей

интересное определение нормальных людей...
Цитировать
А причем тут твои sticky bit-ы и т..д.?

Поясню на примере: Если кто-нибудь имеет право на запись в каталог, то он может добавлять и удалять файлы в этом каталоге, причём удалять не только свои файлы, а разом весь каталог, в котором могут находится файлы, к которым он доступа не имеет. Установка
Цитировать
sticky bit
позволяет разрешить пользователю добавление и удаление своих файлов из каталога, НО не даёт возможности удалить весь каталог(!).
Цитировать
он должен иметь право

В этом ты прав, вот только в системе юникс права имеет не только владелец, но и группа, и мир.
Уф... Врятли понятно объяснил, но надеюсь кто-то чего-то понял:-)