CGI Perl Использование неинициализированного значения $ user в строке - PullRequest
0 голосов
/ 27 мая 2020

У меня проблема с проверкой правильности переменных, которые я извлекаю с помощью CGI.

HTML:

<label for="name">Nombre de Usuario:</label>
<input type="text" id="name" name="user_name" />

<label for="password">Contraseña:</label>
<input type="password" id="password" name="user_password" />

CGI / Perl код:

my $c = CGI->new;
.
.
.
my $user = $c->param('user_name');
my $password = $c->param('user_password');

if($user eq "" || $password eq "") {
        printf "Error";
        exit;
} 

Основная проблема заключается в том, что если я просто сделаю:

print $user;

Вывод правильный, и оно выводит значение, но в apache error.log все равно говорится, что переменная не инициализирована и затем переходит в «if» и выходит.

Я также пробовал с «$ user» и сравнивал строки с undef, но ничего.

1 Ответ

2 голосов
/ 27 мая 2020

Чтобы проверить, имеет ли переменная определенное значение, вы должны использовать функцию 'defined':

if (!defined($user) || !defined($password)) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...