Как отобразить вывод формы на той же html-странице с ошибкой Конец вывода скрипта перед заголовками: inputcgi.cgi

Я получил ошибку: сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Сообщение об ошибке: конец сценария перед заголовками: inputcgi.cgi

Пожалуйста, дайте мне знать, что может быть причиной этого? Я попытался добавить и удалить некоторые строки, но ничего не помогает... Файлы Cgi работают правильно, кроме этих..

    #!"c:\xampp\perl\bin\perl.exe"


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

    my $cgi= new CGI;
    my $this_url=$cgi->url();
    my $cr=$cgi->param("cr");
    print $cgi->header();

    print"Content-type:text/html\n\n";

    print << EndofHTML;

    <html>
        <head><link rel="stylesheet" type="text/css" href="style.css">
        <link href="CalendarControl.css"
          rel="stylesheet" type="text/css">
        <script src="CalendarControl.js"
            language="javascript"></script><script src="inputvalidation.js"></script> </head>
        <title>Baseline Automation-Inputs </title>

        <body>
        <font face = "Calibri">
            <div class="divtop"><img src="logo.jpg" </div>
            <div class="head"><h2><font color = "white"><b>TI Patch Request </b></font><h2></div>



        &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
                If you have already submitted a request, Click on this button. <a href="google.com" target="_blank">Track Application status </a></td><br><br><br>
            <form name="input" method="POST" action="$this_url">
            &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<i> Fields marked with asterisk <font color="red">*</font>  are compulsory</i>
            <div class="divtable">
            <table cellpadding="3" cellspacing="5">
            <tr>
                <td></td>
                <td>Operating System<font color = red>*</font></td>
                <td><input type="radio" name="ostype" id="windows" onclick="checkno()" >Windows</td>
                <td><input type="radio" name="ostype" id="linux" onclick="checkyes()">Linux</td>
                <td><font color="red"><span id="enteros"></font></span></td>
            </tr>
            <tr>
            </tr>
            <tr>
                <td></td>
                <td>Patch Date and Time<font color = red>*</font></td>
                <td><input name="todays_date"
                        onfocus="showCalendarControl(this);"
                        type="text" style="width:100px;"></td>
    </tr>
            <tr>
                <td></td>
                <td>Server Name <font color = red>*</font></td>
                <td><span title="Press the 'ctrl' key to select multiple servers"><select name="serverlist" id="slist" size="4" multiple>
                        <option value="" disabled selected>Select servers</option>
                        <option>Server 1</option>
                        <option>Server 2</option>
                        <option>Server 3</option>
                        <option>Server 4</option>
                        <option>Server 5</option>
                    </select></span>
                </td>
                <td><font color="red"><span id="enterlist"></font></span></td>
            </tr>
            <tr>
            </tr>

            <tr>
                <td></td>
                <td>Frequency<font color = red>*</font></td>
                <td><input type="radio" name="frequency" id="biannual" onclick="checkcondition()">Biannual</td>
                <td rowspan><input type="radio" name= "frequency" id="monthly" onclick="checkcondition()">Monthly</td>
                <td><font color="red"><span id="enterfreq"></font></span></td>
            </tr>
            <tr>
            </tr>
            <tr>
                <td></td>
                <td>Snapshot Required?<font color = red>*</font></td>
                <td><input type="radio" name="snap" id="yes">Yes</td>
                <td><input type="radio" name="snap" id="no">No</td> 


            </tr>

        <tr>
            </tr>
            <tr>
                <td></td>
                <td>Baseline Update duration<font color = red>*</font></td>
                <td> <input type="radio" name="update" id="one">1 hour</td>
                <td> <input type="radio" name="update" id="two">2 hours</td>
                <td>  <input type="radio" name="update" id="four">4 hours</td>
                <td><font color="red"><span id="enterhour"></font></span></td>
            </tr>
            <tr>
            </tr>
            <tr>
                <td></td>
                <td>Change Request </td>
                <td><input type="text" name="cr" id="cr" maxlength="6" style="width:100px;"></td>
            </tr>

            <tr>
            </tr>
            <tr>
            <td></td>

                <td>Description</td>
                <td colspan="5"> <textarea rows="5" cols="40" placeholder="Enter any comments or queries" align="center"></textarea></td>
            </tr>

             <tr>
            </tr>
            <tr>
                <td></td>
                <td style="word-wrap: break-word;">E-mail (in case you want to    <br> receive notifications)</td>
                <td><input type ="text" name="email" style="width:150px;" onfocus=" " onBlur="ValidateEmail()"> </td>
                <td><font color="red"><span id="invalidemail"></font></span></td>
            </tr>

            </table></div>
            <br> <br> 



                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp

                <input type="button" name="prev" id="prev" value="<<Prev"> 
                <input type="button" name="save" id="save" value="Save" onClick="blank()">
                <input type="button" name="next" id="next" value="Next>>">

            <br>
            <br><br>
            <div class="head"><h2><font color = "white"><b>Selected Request</b></font><h2></div><br> <br> 
            &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
                &nbsp &nbsp &nbsp &nbsp &nbsp
            <input type = "submit" value ="Submit Request" name="submit">


            </form></font>
            <p>The cr you entered was '$cr'</p> 
        </body>
        </html> 
        EndofHTML
        #So this was the code.

2 ответа

Если вы ищете perl cgi internal error вы увидите, что для сценариев CGI обычно требуется заглянуть в журнал ошибок. Это покажет вам фактическую ошибку, которая произошла.

В этом случае у вас есть ошибка в так называемой here-document, Читайте об этом в perldoc perlop, ищите <<EOF,

   print <<EOF;
The price is $Price.
EOF
   print << "EOF"; # same as above
The price is $Price.
EOF

Обратите внимание, что метка здесь-док, EOFдолжны прийти сразу после <<, Вы можете использовать пробел, только если вы явно используете заключенный в кавычки ярлык.

В конце документа маркер должен находиться в начале строки.

В другом ответе у вас есть объяснение того, что не так с вашим кодом. Это для более общего случая.

Как правило, всегда полезно использовать библиотеку. CGI::Carp (см. здесь), пока вы отлаживаете свои CGI-скрипты. Он будет отправлять любые ошибки на экран браузера вместо того, чтобы записывать их в журнал ошибок.

Это будет работать для ошибок, сообщенных с croak, confess, carp, warn а также die, Последние два исходят от использования этих инструкций Perl или от ошибок, исходящих от самого Perl; остальные придут от использования библиотеки CarpЭто то, что большинство библиотек CPAN используют для сообщения о проблемах любым вызывающим сценариям.

Так вы размещаете use CGI::Carp; под use CGI и наслаждаться. Если вы хотите только поймать die, вы можете использовать use CGI::Carp qw(fatalsToBrowser);,

После того, как вы отладили свой скрипт, не забудьте исключить использование этой библиотеки, так как она дает слишком много информации для потенциального злоумышленника.

Другие вопросы по тегам