Perl CGI Form Post скрипт ввода не работает

0

Я пытаюсь создать веб-страницу на своем сайте, которая принимает входные данные из формы (имя, фамилия) и обрабатывает этот вход через скрипт PERL CGI и записывает этот ввод в файл.

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

Я уверен, что моя HTML-страница верна при ссылке на скрипт, поэтому я просто опубликую свой скрипт perl ниже.

Заранее спасибо.

#!/usr/bin/perl
use strict; use warnings;
use CGI::Carp qw('fatalsToBrowser'); # send errors to the browser, not to the logfile
use CGI;

print header "Content-Type: text/html\n\n";

print start_html ("Receive Form Post");

my $datestring = localtime();
my $fname = param('firstname');
my $lname = param('lastname');

open (TESTFILE, '>>c:\inetpub\wwwroot\logfiles\bwrigsbee.txt') or die;

print TESTFILE "This file has been successfully edited on $datestring\n";
print TESTFILE "by $fname $lname\n";

close (TESTFILE);

print end_html;

HTML-форму, которая находится на странице, которая вызывает скрипт:

   <form action="logwrite.pl" method="POST">
    <table style="width:400px" border=1px border=solid border=black>
        <tr>
            <td>First name: <input type="text" name="firstname"></td>
        </tr>
        <tr>
            <td>Last name: <input type="text" name="lastname"></td>
        </tr>
        <tr>
            <td><input type="submit" value="Submit"></td>
        </tr>
    </table>
   </form>

Отладка информации из browser---> Неопределенная подпрограмма & main :: param вызвана в C:\studentwebusers\CIS33715\logwrite.pl строка 11.

  • 0
    Опубликуйте свой HTML. Вы хотите убедиться, что вы действительно публикуете скрипт в своем <form action='' Кроме того, важен тип содержимого. Запрос даже попадает в сценарий? Также проверьте свои разрешения
  • 0
    У меня есть правильное действие, когда я отправляю форму, она приводит меня на страницу отладки, которая ссылается на ошибки в скрипте. Однако это мой первый опыт работы с Perl и CGI, и я понятия не имею, что я делаю, поэтому я не очень хорош в отладке.
Показать ещё 5 комментариев
Теги:

1 ответ

0
Лучший ответ

Удалите одинарные кавычки в своем использовании. CGI::Carp call:

use CGI::Carp qw(fatalsToBrowser);

Кроме того, ваш вызов header не должен включать дополнительные параметры. Он может принимать тип text/html, но вся дополнительная информация является ошибкой

print header;

Используйте autodie любое время, когда вы делаете обработку файлов. Таким образом вам не придется беспокоиться о создании подробных сообщений об ошибках. И используйте 3-мерную форму open с лексическими ручками finel.

Наконец, перейдите и используйте обозначение объекта для всех методов в CGI. Это изменит ваш скрипт на следующее:

use strict;
use warnings;
use autodie;

use CGI::Carp qw(fatalsToBrowser); # send errors to the browser, not to the logfile
use CGI;

my $q = CGI->new;

print $q->header;
print $q->start_html("Receive Form Post");

my $datestring = localtime();
my $fname = $q->param('firstname');
my $lname = $q->param('lastname');

open my $fh, '>>', 'c:\inetpub\wwwroot\logfiles\bwrigsbee.txt';
print $fh "This file has been successfully edited on $datestring\n";
print $fh "by $fname $lname\n";
close $fh;

print $q->end_html;
  • 0
    Я считаю, что ваш код здесь исправил проблему с неработающим CGI-скриптом ... Большое спасибо. Теперь мне нужно, чтобы скрипт указал на исходный HTML-файл с правками в теле, поблагодарив их за их ввод ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню