Forum Webscript.Ru

Программирование => Perl => Тема начата: alex007 от 09 Января 2003, 20:50:47

Название: Проблема со скриптом.
Отправлено: alex007 от 09 Января 2003, 20:50:47
У меня возникла самая идиотская проблема, установил скрипт, как положено установив на него chmod 755, выдает ошибку:
No such file or directory: exec of whois.cgi failed
Зато с #!/usr/bin/perl -w работает без ни каких проблем.

Жду Ответов.
С Уважением,
Алекс
Название: Проблема со скриптом.
Отправлено: Chs от 09 Января 2003, 21:36:24
Странно. Попробуй:
use CGI::Carp qw (fatalsToBrowser);
Название: Проблема со скриптом.
Отправлено: NeoNox от 09 Января 2003, 23:01:14
А что странного?
С путями - грабли. Там и искать ошибку.
Название: Проблема со скриптом.
Отправлено: alex007 от 10 Января 2003, 14:17:55
Chs
Заработал

NeoNox
Это каким путем, если сервер то не у меня дома стоит, а у хоста.

Спасибо.
Название: Проблема со скриптом.
Отправлено: alex007 от 13 Января 2003, 00:07:04
Приветик,

опять та же самая история, но уже с другим скриптом, прописав use CGI::Carp qw (fatalsToBrowser);
и -w работает без проблем, уберая -w выдает ошибку [error] (2)No such file or directory: exec of login.cgi failed
Название: Проблема со скриптом.
Отправлено: NeoNox от 13 Января 2003, 11:04:38
Что за скрипт? Если небольшой - выложи сюда.
Цитировать
Это каким путем, если сервер то не у меня дома стоит, а у хоста.

Берем в руки словарь и переводим:
Цитировать
No such file or directory

Это значит у тебя идет вызов несуществующего обьекта. И неважно где.
Название: Проблема со скриптом.
Отправлено: alex007 от 13 Января 2003, 21:06:58
Цитировать
Это значит у тебя идет вызов несуществующего обьекта. И неважно где.

Как раз таки объект существует, но вот в последнее время скрипты на хосте валяют дурака, так как до этого я же там же и тестировал его и он(скрипт) работал отлично.

И если ты прочел до этого сообщение что скрипт работает с -w, а без нет.

Цитировать
Что за скрипт? Если небольшой - выложи сюда.

Скрипт авторизалка для пользователей.

#!/usr/bin/perl
###############################################################
$pass = "/путь до паролей/passwd.dat";
use CGI::Carp qw (fatalsToBrowser);
use CGI::Cookie;
use CGI qw(:standard);
###############################################################
# Form Data Parsing
################
# Comparison

read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   local($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~
      s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   # strip off any possible SSI comment tags.
   $value =~ s///g;
   $in{$name} = $value;
   }

open(LIST, $pass);
  @pass = ;
close(LIST);

foreach $line(@pass)
   {
   chomp($line);
   ($correctUsername,$correctPassword) = split(/\\|/,$line);
    if ($in{\'username\'} ne $correctUsername) {
      if($in{\'password\'} ne $correctPassword)
     {
     $urlerror="http://$ENV{\'HTTP_HOST\'}/error-authorisation.html";
     print redirect( -URL => $urlerror);
     }}
   if ($in{\'username\'} eq $correctUsername) {
      if($in{\'password\'} eq $correctPassword)
     {
     $cookie1 = new CGI::Cookie(-name=>\'username\',-value=>$in{\'username\'},-path=> \'/\',-expires=>\'+3h\');
     $cookie2 = new CGI::Cookie(-name=>\'password\',-value=>$in{\'password\'},-path=> \'/\',-expires=>\'+3h\');
     $cookie3 = new CGI::Cookie(-name=>\'ip\',-value=>$ENV{\'REMOTE_ADDR\'},-path=> \'/\',-expires=>\'+3h\');
    #print header(-cookie=>[$cookie1,$cookie2,$cookie3]);
    $url="http://$ENV{\'HTTP_HOST\'}/custom/$in{\'username\'}/";
    print redirect( -URL     => $url,
                    -COOKIE  => [$cookie1,$cookie2,$cookie3]);
     }}
}
Название: Проблема со скриптом.
Отправлено: alex007 от 17 Января 2003, 20:24:28
NeoNox
Так что скажешь о проблеме?
Название: Проблема со скриптом.
Отправлено: NeoNox от 18 Января 2003, 14:22:26
Скажу что это не код, это так что-бы помягче.
Я его даже проверять не хочу.
1) у тебя загружен use CGI qw(:standard); так и разбирай с его помощью параметры передаваемые в скрипт.
2) с куками ты намутил.
 print redirect( -URL => $url,
-COOKIE => [$cookie1,$cookie2,$cookie3]);
Хмм... Сначала куки - потом заголовки.
Куки у тебя вообще выставлялись?

Зачем такая конструкция?
 if ($in{\'username\'} eq $correctUsername) {
if($in{\'password\'} eq $correctPassword) ...
Тут с логикой нет дружбы. Ты бы готь на бумажке сначало написал что и как должно работать.
Название: Проблема со скриптом.
Отправлено: alex007 от 18 Января 2003, 15:54:38
Цитировать
Зачем такая конструкция?
if ($in{\'username\'} eq $correctUsername) {
if($in{\'password\'} eq $correctPassword) ...
Тут с логикой нет дружбы. Ты бы готь на бумажке сначало написал что и как должно работать.

нет почему же, просто проверяет пароль, так как с else функцией мне не понравилось дело, поэтому написал или равно или нет.

Цитировать
Скажу что это не код, это так что-бы помягче.
Я его даже проверять не хочу.
1) у тебя загружен use CGI qw(:standard); так и разбирай с его помощью параметры передаваемые в скрипт.
2) с куками ты намутил.
print redirect( -URL => $url,
-COOKIE => [$cookie1,$cookie2,$cookie3]);
Хмм... Сначала куки - потом заголовки.
Куки у тебя вообще выставлялись?

Спасибо.
Название: Проблема со скриптом.
Отправлено: NeoNox от 18 Января 2003, 16:12:10
Не обижайся. Мне на работе хватает таких картин...

Цитировать
нет почему же, просто проверяет пароль,

Да потому, что он у тебя пробегает по все цепочкам независимо от чего бы ни было. Это глупо.Тем более в foreach. Нарисуй на бумаге и поймешь.

Параметры:
$username=param("username");
...
И убрать эту штуку (Form Data Parsing) в самом начале скрипта.

Куки: perldoc CGI::Cookie
Цитировать
use CGI qw/:standard/;
           use CGI::Cookie;

           # Create new cookies and send them
           $cookie1 = new CGI::Cookie(‐name=>’ID’,‐value=>123456);
           $cookie2 = new CGI::Cookie(‐name=>’preferences’,
                                      ‐value=>{ font => Helvetica,
                                                size => 12 }
                                      );
           print header(‐cookie=>[$cookie1,$cookie2]);
Различие увидел?
Когда напишешь все правильно - сам поймешь в чем ошибка.
Название: Проблема со скриптом.
Отправлено: alex007 от 18 Января 2003, 19:38:00
NeoNox
Да ничего спасибо, на ошибках учаться.

Цитировать
Различие увидел?

Да увидил.
Название: Проблема со скриптом.
Отправлено: NeoNox от 19 Января 2003, 14:36:38
Там где "‐" это значит "-"
[OFF]Не дружит этот форум с дефолтным линуксовским клипбордом...[/OFF]
Название: Проблема со скриптом.
Отправлено: alex007 от 19 Января 2003, 14:40:57
NeoNox
Да я заметил и понял что имеешь ввиду.