Почему эта проверка пароля не работает должным образом? - PullRequest
2 голосов
/ 05 апреля 2011

Я пытаюсь расширить с php. Вот основная проблема, которая у меня есть, и я не могу ее понять ...

password.pl

#!/usr/bin/perl

use CGI;
$q = new CGI;

print "Content-type:text/html\r\n\r\n";
print '<html>';
print '<head>';
print '<title>Card</title>';
print '</head>';
print '<body>';
print '<FORM METHOD=POST ACTION=/card.pl>';
print '<INPUT TYPE=password NAME=password SIZE=25>';
print '<input type=submit value=Submit>';
print '</FORM>';
print '</body>';
print '</html>';

1;

card.pl

#!/usr/bin/perl

use CGI;
$q = new CGI;

$password = $q->param("password");
print $password;
if ($password == pass)
{
  print 'Yup';
}
else
{
  print 'Wrong Password';
}


1;

Ничего не передается в card.pl из формы password.pl? Я использовал пример симуляции раньше без проблем?

Больше кофе ...

Ответы [ 2 ]

8 голосов
/ 05 апреля 2011

use strict;, use warnings; и посмотрите в ваших журналах ошибок.Также подтвердите ваш HTML.

Тогда вы будете предупреждены о таких проблемах, как:

Использование слова "pass" недопустимо, пока используются "строгие подпрограммы"card.pl line 7.

Вы, вероятно, хотите:

($password eq 'pass')
1 голос
/ 06 апреля 2011

В моем продолжающемся стремлении отказаться от злоупотребления CGI.pm ваш первый сценарий был бы намного лучше, чем ...

use strict;
use warnings;
use CGI qw( :standard );

print
    header(),
    start_html("O HAI CARD"),
    start_form(-action => "card.pl"),
    fieldset(
             legend("None Shall Pass!"),
             password_field(-name => "password",
                            -size => 25),
             submit(-value => "Submit"),
             ),
    end_form(),
    end_html();

Ваш второй как, может быть, просто например, и так далее -

use strict;
use warnings;
use CGI;
my $q = CGI->new;

print
    $q->header,
    $q->start_html("O HAI CARD");

my $password = $q->param("password");

if ( $password eq "pass" )
{
  print $q->h2("You're all good");
}
else
{
  print $q->h2({-style => "color:#a00"},
           "You're all good");
}

print $q->end_html();

Или, может быть, лучше, все вместе -

use strict;
use warnings;
no warnings "uninitialized";
use CGI qw( :standard );

print
    header(),
    start_html("O HAI CARD");

print param("password") eq "pass" ?
    h2("Yes!") : h2({-style => "color:#a00"}, ":(");

print 
    start_form(),
    fieldset(
             legend("None Shall Pass!"),
             password_field(-name => "password",
                            -size => 25),
             submit(-value => "Submit"),
             ),
    end_form(),
    end_html();

RIF, читать документы: CGI .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...