Автор Тема: Срочно, help, не работает скрипт!!!  (Прочитано 6816 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Axelman

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Здравствуйте!

Вот написал скрипт на Perl, который записывает отправленные данные в файл с именем пользователя, посылающие эти данные через форму.

Скрипт datasend.cgi, вот его часть:

Форма для отправки данных:
sub send_html {
    print <<"[EOF]";

From: $query{\'name\'}
To: $query{\'toname\'}











[EOF]
}

Процедура записи полученных данных в файл:
sub send {
&findpassword;
&date;
$id = "$date$time$query{\'toname\'}";
            if ($query{\'data\'}) {
            open (datafile, ">>$data_dir/$query{\'toname\'}");
       flock(datafile,2) if ($flocking == 1);
            print datafile "$id|$query{\'name\'}|$date $time|$query{\'data\'}n";
       close datafile;
   } else {
        &send_html;
        exit;
        }
#
}
########################################
$data_dir - предварительно заданная переменная

Проблема: файл не создается и полученные данные не записываются в него.
Получается только, если вместо $query{\'toname\'} в имени файла написать уже определенное значение, например
open (datafile, ">>$data_dir/data.txt"); Но мне нужно, чтобы файл назывался именем пользователя, кому отправлены данные.

Подскажите, пожалуйста, срочно, что делать, чтобы все работало!

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Срочно, help, не работает скрипт!!!
« Ответ #1 : 21 Июля 2003, 21:25:26 »
open (datafile, ">$data_dir/$query{\'toname\'}");
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Axelman

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Срочно, help, не работает скрипт!!!
« Ответ #2 : 22 Июля 2003, 03:15:37 »
Wyclef, и что!? ">>" - открывает файл для записи, а данные записываются в конец, а  ">" - открывает файл для записи,но файл полностью очищается. Кто-нибудь может реально помочь? Очень нужно! Всё написано вроде правильно, не могу просто понять в чем дело, всё из-за $query{\'toname\'}. Может можно сделать по-другому или что-то ещё?

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Срочно, help, не работает скрипт!!!
« Ответ #3 : 22 Июля 2003, 06:48:55 »
Цитировать
Axelman:
">>" - открывает файл для записи, а данные записываются в конец, а ">" - открывает файл для записи,но файл полностью очищается.


">>" - открывается файл для дозаписи (файл ДОЛЖЕН заранее существовать), а при ">" - создается файл если его нет (а если есть перепишет).

[off]Проверь у тебя $query{toname} имеет значение во время записи...[/off]
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Alone

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 182
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Срочно, help, не работает скрипт!!!
« Ответ #4 : 22 Июля 2003, 10:51:36 »
Wyclef
">>" - открывается файл для дозаписи (файл ДОЛЖЕН заранее существовать),

помоему вы ошибаетесь файл создается если его нет...

Axelman
проверь содержимое $query{\'toname\'}
если там все ок то пиши так
open (datafile, ">>$data_dir/$query{\'toname\'}") or print "$!";
выдаст ошибку (если она есть конечно)

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Срочно, help, не работает скрипт!!!
« Ответ #5 : 22 Июля 2003, 11:35:21 »
Цитировать
Wyclef:
файл ДОЛЖЕН заранее существовать

Сорри!!! :) Беру свои слова обратно...
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Срочно, help, не работает скрипт!!!
« Ответ #6 : 22 Июля 2003, 11:36:48 »
Wyclef
http://www.perldoc.com/perl5.8.0/pod/func/open.html

If MODE is \'>\', the file is truncated and opened for output, being created if necessary. If MODE is \'>>\', the file is opened for appending, again being created if necessary.
AS IS...

Оффлайн n0name

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
Срочно, help, не работает скрипт!!!
« Ответ #7 : 22 Июля 2003, 11:38:55 »
Могу посоветовать:
1) проверить permissions;
 2) if ($query{\'data\'}) { print $query{\'data\'} ...
 3) $file_name=$query{\'data\'};open(datafile, ">>$data_dir/$file_name");
Да кому она нужна?!...

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Срочно, help, не работает скрипт!!!
« Ответ #8 : 22 Июля 2003, 12:11:30 »
А я обычно ставлю жесткое разрешение на всякий случай...

open (datafile, ">>$data_dir/$query{\'toname\'}\\.txt");

и если трабла с именем, то появляется файл ".txt", а вообще глянь лог ошибок, там обычно все написано...

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Срочно, help, не работает скрипт!!!
« Ответ #9 : 22 Июля 2003, 12:28:51 »
[off]
Цитировать
ThE0ReTiC:
If MODE is \'>\', the file is truncated and opened for output, being created if necessary. If MODE is \'>>\', the file is opened for appending, again being created if necessary.

Зарапортовался - с кем не бывает ;)[/off]
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Axelman

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Срочно, help, не работает скрипт!!!
« Ответ #10 : 23 Июля 2003, 02:00:57 »
Alone
Содержимое $query{\'toname\'}  проверял, всё нормально.
open (datafile, ">>$data_dir/$query{\'toname\'}") or print "$!";
ничего не дает, то же самое, белый экран и скрипт после этой строчки не выполняется, как раньше.

n0name
1) permissions в порядке, это видно даже потому, что если я назову файл определенно, то всё будет работать, а так не идет дальше;
2) и 3) не помогает, уже раньше пробовал.

Phoinix
open (datafile, ">>$data_dir/$query{\'toname\'}\\.txt");
результат прежний

Короче, получается только, если вместо $query{\'toname\'} в имени файла написать уже определенное значение, например
open (datafile, ">>$data_dir/data.txt"); и больше никак!
Может как-нибудь переделать? Видимо хостинг такой, потому что у меня всё работает!

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
Срочно, help, не работает скрипт!!!
« Ответ #11 : 23 Июля 2003, 02:18:39 »
а если сделать
print ">>$data_dir/$query{\'toname\'}";
что выдает?
•••Jah\'d never let us down!•••

Оффлайн WildWizard

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Срочно, help, не работает скрипт!!!
« Ответ #12 : 23 Июля 2003, 11:33:53 »
Обычно в качестве отладки берется работающий вариант, потом постепенно дописывается все остальное...Пока не прекратит работать, когда это произошло, смотришь на каком шаге...потом читаешь докуменитацию...
В твоем случает.

Проверь такой код:

$file_name = ">>$data_dir/$query{\'toname\'}";
printf ("File name is $file_name
");
open (DATAFILE, $file_name);
print DATAFILE, "Hello World\\n";
close DATAFILE;

Если не работает, то ставишь  
$file_name="./test.txt";
и пробуешь снова, если опять не работаешь создаешь файл ручками, и смотришь открылся он или нет...

Если нет, разводишь ручками и идешь читать доки по хостингу...

Хотя врядли они что-то с этим могли сделать....

Вот...Я надеюсь это были не слишком элементарные вещи.. (смутился) :)
Жизнь-игра, сюжет-фигня, зато какая графика....

Оффлайн WildWizard

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Срочно, help, не работает скрипт!!!
« Ответ #13 : 23 Июля 2003, 11:37:58 »
Эй-зй! кстати я забыл совсем, проверяй что вернула функция open (), потому как если файл открыт (создат), то она (функция) вернет тебе 0, если нет то undef...Поэтому посмотри....А то вдруг не открывается он просто....

Кстати еще бывает полезно указать полный физический путь...вот.
Жизнь-игра, сюжет-фигня, зато какая графика....

Оффлайн Alone

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 182
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Срочно, help, не работает скрипт!!!
« Ответ #14 : 23 Июля 2003, 17:01:10 »
Axelman
приведи пример как ты делаеш.
print "Content-type: text/html \\n\\n"; вначале написал ?

что означает фраза "... то же самое, белый экран и скрипт после этой строчки не выполняется, как раньше..."
не вывыполняется как раньше?
или как и раньше не выполняется ?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28