Forum Webscript.Ru
Программирование => Perl => Тема начата: alex007 от 09 Января 2003, 20:50:47
-
У меня возникла самая идиотская проблема, установил скрипт, как положено установив на него chmod 755, выдает ошибку:
No such file or directory: exec of whois.cgi failed
Зато с #!/usr/bin/perl -w работает без ни каких проблем.
Жду Ответов.
С Уважением,
Алекс
-
Странно. Попробуй:
use CGI::Carp qw (fatalsToBrowser);
-
А что странного?
С путями - грабли. Там и искать ошибку.
-
Chs
Заработал
NeoNox
Это каким путем, если сервер то не у меня дома стоит, а у хоста.
Спасибо.
-
Приветик,
опять та же самая история, но уже с другим скриптом, прописав use CGI::Carp qw (fatalsToBrowser);
и -w работает без проблем, уберая -w выдает ошибку [error] (2)No such file or directory: exec of login.cgi failed
-
Что за скрипт? Если небольшой - выложи сюда.
Это каким путем, если сервер то не у меня дома стоит, а у хоста.
Берем в руки словарь и переводим:
No such file or directory
Это значит у тебя идет вызов несуществующего обьекта. И неважно где.
-
Это значит у тебя идет вызов несуществующего обьекта. И неважно где.
Как раз таки объект существует, но вот в последнее время скрипты на хосте валяют дурака, так как до этого я же там же и тестировал его и он(скрипт) работал отлично.
И если ты прочел до этого сообщение что скрипт работает с -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]);
}}
}
-
NeoNox
Так что скажешь о проблеме?
-
Скажу что это не код, это так что-бы помягче.
Я его даже проверять не хочу.
1) у тебя загружен use CGI qw(:standard); так и разбирай с его помощью параметры передаваемые в скрипт.
2) с куками ты намутил.
print redirect( -URL => $url,
-COOKIE => [$cookie1,$cookie2,$cookie3]);
Хмм... Сначала куки - потом заголовки.
Куки у тебя вообще выставлялись?
Зачем такая конструкция?
if ($in{\'username\'} eq $correctUsername) {
if($in{\'password\'} eq $correctPassword) ...
Тут с логикой нет дружбы. Ты бы готь на бумажке сначало написал что и как должно работать.
-
Зачем такая конструкция?
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]);
Хмм... Сначала куки - потом заголовки.
Куки у тебя вообще выставлялись?
Спасибо.
-
Не обижайся. Мне на работе хватает таких картин...
нет почему же, просто проверяет пароль,
Да потому, что он у тебя пробегает по все цепочкам независимо от чего бы ни было. Это глупо.Тем более в 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]);
Различие увидел?
Когда напишешь все правильно - сам поймешь в чем ошибка.
-
NeoNox
Да ничего спасибо, на ошибках учаться.
Различие увидел?
Да увидил.
-
Там где "‐" это значит "-"
[OFF]Не дружит этот форум с дефолтным линуксовским клипбордом...[/OFF]
-
NeoNox
Да я заметил и понял что имеешь ввиду.