Solved

Sample code for form and parsing routine

Posted on 2002-04-22
9
367 Views
Last Modified: 2013-12-25
Hello

The points are for the code for a sample HTML form that uses POST to send it's data to the server, but mostly for the server side code (non java, prefer perl) that parses that data and returns an HTML page which displays the name=value pairs.
I'm trying for something that I can just drop in to an existing server (Apache 1.3.24 on FreeBSD) w/o hassling with environment set-up issues, so I figured perl/cgi wouldn't require any twiddling - just tell me where things need to go, and if it works, the points are yours.

Thanks,

v
0
Comment
Question by:vlg
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
9 Comments
 
LVL 16

Expert Comment

by:maneshr
ID: 6960678
vlg,

"..prefer perl).."

Do you have the CGI module on your server?

if so then i can provide a very short & sweet code for you.

Let me know.
0
 

Author Comment

by:vlg
ID: 6960858
cgi is working, as it seems to by default - do you mean some separate cgi module that must be manually configured?

v
0
 
LVL 16

Expert Comment

by:maneshr
ID: 6960895
vlg,

Here is a very basic Perl script that does not need any modules & should work for you, with bare minimum changes.

Posted below is a sample HTML file and the corresponding Perl script

Let me know how it goes.

==========contact.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><!-- #BeginTemplate "/Templates/template.dwt" -->
<!-- #BeginEditable "doctitle" -->
<TITLE>Consolidated Resorts Contact Form</TITLE>

<A HREF="http://www.experts-exchange.com/cgi/Q.20292319.html">http://www.experts-exchange.com/cgi/Q.20292319.html</A>
<P>

</HEAD>
<BODY leftMargin=0 topMargin=0 marginheight="0" marginwidth="0"  bgcolor="#FFFFFF" onLoad="MM_preloadImages('/sos2.jpg')">
<script type='text/javascript'>

function Go(){return}

</script>
<table width="754" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="2"><img src="/header.jpg" width="775" height="110"></td>
  </tr>
  <tr>
    <td width="130" height="65" valign="top" bgcolor="#000000">

<A HREF="/index2.htm" TARGET="_self" onClick="window.open('http://www.consolidatedresorts.com/satellite.htm', 'satellite', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=250,height=250')" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image3','','/sos2.jpg',1)">
<img name="Image3" border="0" src="/sos1.jpg" width="130" height="22"></a>
      <br>
      <br>
      <br>
      <br>
      <br>
      <img src="/sunset-left.jpg" width="130" height="541"></td>
    <td width="648" height="65" valign="top">
      <table width="641" border="0" cellspacing="4" cellpadding="4">
        <tr>
          <td> <!-- #BeginEditable "content" -->  

              <a name="top"></a>

                            <div align="center"><font size="5" color="#00CC00" face="Verdana, Arial, Helvetica, sans-serif"><b><font color="#0000FF">Contact
                              Consolidated Resorts</font></b></font></div>
                           
                         
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td>
                          <center>
                            <font face="Times New Roman, Times, serif" size="2">Please
                            complete all fields, and press the submit button below.<br>
                            Fields marked with an <font color="#0033FF">*</font>
                            are required. </font><font face="Arial, Helvetica, sans-serif" size="3"><br>
                            <font size="2" face="Times New Roman, Times, serif">Please
                            complete as much as possible so <b>Consolidated Resorts</b>
                            can best fulfill your vacation needs.</font></font>
                            <font size="2" face="Times New Roman, Times, serif"></font>
                          </center>
                        </td>
                      </tr>
                      <tr>
                       
                <td valign="top">
                <FORM METHOD="POST" ACTION="/cgi-bin/my_mailgate.pl">
<input type=hidden name="recipient" value="dhughes@crilv.com,mpalmer@lionzhead.com">
<input type=hidden name="subject" value="Contact Form From Consolidated Resorts Website">
<input type=hidden name="redirect" value="http://www.consolidatedresorts.com/thankyou.htm">
<table width="100%" border="0" cellpadding="0" height="596">
                            <tr height="20">
                              <td colspan="4" height="40"><font face="Times New Roman, Times, serif" size="4" color="#000000"><b></b></font>
                                <table width="100%" border="0" bgcolor="">
                                  <tr height="47">
                                    <td colspan="7" height="31" valign="top" align="left">
                                      <p><font size="4" color="#000000" face="Times New Roman, Times, serif"><b><font size="5">Contact
                                        Information</font></b></font></p>
                                    </td>
                                  </tr>
                                  <tr height="47">
                                    <td colspan="2" height="10" valign="middle">
                                      <font face="Times New Roman, Times, serif"><b><font size="3">
                                      <font color="#0033FF">Name:</font></font></b></font></td>
                                    <td colspan="5" height="10" valign="middle" width="490">
                                      <font face="Times New Roman, Times, serif">
                                      <input type="text" name="name" size="20">
                                      <font color="#0033FF" size="4">*</font></font>
                                    </td>
                                  </tr>
                                  <tr height="19">
                                    <td height="19" valign="middle" colspan="2">
                                      <div align="left"><font size="3" face="Times New Roman, Times, serif"><b><font color="#0033FF">E-mail:</font></b></font>
                                      </div>
                                    </td>
                                    <td colspan="7" height="28" width="490"> <font face="Times New Roman, Times, serif">
                                      <input type="text" name="email" size="20" value="" maxlength="50">
                                      <font color="#0033FF">* </font></font></td>
                                  </tr>
                                </table>
                                <table width="100%" border="0">
                                  <tr>
                                    <td valign="middle" width="9%"> <font size="3" face="Times New Roman, Times, serif"><b><font color="#0033FF">Address:</font></b></font>
                                    </td>
                                    <td valign="middle" width="55%"> <font face="Times New Roman, Times, serif">
                                      <input type="text" name="address" size="30">
                                      <font color="#0033FF" size="4">*</font></font></td>
                                    <td width="6%" valign="middle">
                                      <div align="right"><font size="3" face="Times New Roman, Times, serif"><b><font color="#0033FF">City:</font></b></font>
                                      </div>
                                    </td>
                                    <td colspan="3" valign="middle" width="30%">
                                      <font face="Times New Roman, Times, serif">
                                      <input type="text" name="city" size="10" maxlength="50">
                                      <font color="#0033FF" size="4">*</font></font>
                                    </td>
                                  </tr>
                                </table>
                                <table width="100%" border="0">
                                  <tr>
                                    <td width="9%" valign="middle"> <font size="3" face="Times New Roman, Times, serif"><b><font color="#0033FF">State:</font></b></font><font size="3" color="black" face="Times New Roman, Times, serif"><b>
                                      </b></font> </td>
                                    <td width="33%" valign="middle"><font size="3" color="black" face="Times New Roman, Times, serif"><b>
                                      <input type="text" name="state" size="5" maxlength="10">
                                      <font color="#0033FF" size="4">*</font>
                                      </b></font></td>
                                    <td colspan="2" valign="middle"> <font face="Times New Roman, Times, serif"><b><font size="3" color="#0033FF">ZipCode:</font></b>
                                      <input type="text" name="zip" size="10" maxlength="10">
                                      <font size="4" color="#0033FF">*</font></font>
                                    </td>
                                    <td colspan="2" valign="middle" width="30%">
                                      <font size="3" face="Times New Roman, Times, serif"><b><font color="#0033FF">Country:</font>
                                      </b></font> <font face="Times New Roman, Times, serif">
                                      <input type="text" name="country" size="10" maxlength="15">
                                      <font size="4" color="#0033FF">*</font></font>
                                    </td>
                                  </tr>
                                </table>
                                <table width="100%" border="0">
                                  <tr>
                                    <td width="31%" valign="middle"> <font face="Times New Roman, Times, serif"><b><font size="3" color="#0033FF">Home
                                      Phone Number:</font></b></font></td>
                                    <td width="69%" valign="middle"> <font face="Times New Roman, Times, serif">
                                      <input type="text" name="homephone" size="15" maxlength="20">
                                      <font size="4" color="#0033FF">*</font></font>
                                    </td>
                                  </tr>
                                </table>
                                <font face="Times New Roman, Times, serif"></font></td>
                            </tr>
                            <tr height="20">
                              <td colspan="3" height="40"><font face="Times New Roman, Times, serif" size="4" color="#000000"><b><font size="5">Vacation
                                Profile</font></b></font></td>
                              <td height="40" valign="top" width="101">&nbsp;</td>
                            </tr>
                            <tr height="20">
                              <td colspan="4" height="40">
                                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                  <tr>
                                    <td width="62%" height="123" valign="middle"><b><font face="Times New Roman, Times, serif" size="3" color="#0033FF">Please
                                      Select The Consolidated Resort <br>
                                      You Are Inquiring About</font><font face="Times New Roman, Times, serif" size="3"><br>
                                      </font></b><font face="Times New Roman, Times, serif" size="3">
                                      <font size="2">(To Select Multiple Hold
                                      Down the &quot;Ctrl&quot; Button)</font></font></td>
                                    <td width="38%" height="123" valign="middle">
                                      <select name="select" multiple size="6">
                                        <option value="Club de Soleil, Las Vegas">Club
                                        de Soleil, Las Vegas</option>
                                        <option value="Sands of Kahana, Hawaii">Sands
                                        of Kahana, Hawaii</option>
                                        <option value="Kahana Villa Resort, Hawaii">Kahana
                                        Villa Resort, Hawaii</option>
                                        <option value="Maui Beach Club, Hawaii">Maui
                                        Beach Club, Hawaii</option>
                                        <option value="Hono Koa Resort, Hawaii">Hono
                                        Koa Resort, Hawaii</option>
                                        <option value="The Gardens, Hawaii">The
                                        Gardens, Hawaii</option>
                                        <option value="Maui Banyan, Hawaii">Maui
                                        Banyan, Hawaii</option>
                                        <option value="Kona Islander Inn, Hawaii">Kona
                                        Islander Inn, Hawaii</option>
                                        <option value="Kahana Beach, Hawaii">Kahana


===================my_mailgate.pl
#!/usr/local/bin/perl

$|++;

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

print "Here<P>\n";

&GetInput;

foreach (sort keys %form){
  print $_," = ",$form{$_},"<BR>\n";
}

sub GetInput {
  $buffer = "";
  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
  @pairs=split(/&/,$buffer);
  foreach $pair (@pairs){
    ($key,$value)=split(/=/,$pair);
    $value =~ s/\+/ /g;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/~!/ ~!/g;
    $value =~ s/[\n\r]/ /sg;  #remove \n
    $value =~ s/\[\]//g;  #remove []
    $form{$key}=$value;
  }
}

0
How Do You Stack Up Against Your Peers?

With today’s modern enterprise so dependent on digital infrastructures, the impact of major incidents has increased dramatically. Grab the report now to gain insight into how your organization ranks against your peers and learn best-in-class strategies to resolve incidents.

 
LVL 16

Expert Comment

by:maneshr
ID: 6961104
vlg,

"... do you mean some separate cgi module that must be manually configured?..."

Yes. i meant a seperate module called CGI.pm

Here is a small test script which will tell you if you have that module installed on your server or not.

NOTE: since the perl interpreter is located in /usr/local/bin directory on my server i have used it.
You might have to change it based on the location of that interpreter on your server.

Let me know how this script works for you.

#!/usr/local/bin/perl

$|++;

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

use CGI;

$q=new CGI;

print "CGI exists!!<BR>\n";
0
 

Author Comment

by:vlg
ID: 6962898
Hello maneshr

>Here is a small test script which will tell you if you have that module installed on your server or
not.

I ran it, and I got:
(offline mode: enter name=value pairs on standard input)

What does that signify?

Thanks

v


0
 

Author Comment

by:vlg
ID: 6962988
Hello again maneshr

I fixed up the html you provided, and put in up on the server.  In the same directory as the index page, I created a subdirectory called cgi-bin, and that's where I put the my_mailgate.pl.
I chmod+x my_mailgate.pl also.
When I enter data in your html form, I get a 404 page that says The requested URL /cgi-bin/my_mailgate.pl was not found on this server.
I'm sure I'm missing something simple, any ideas?

v
0
 
LVL 16

Accepted Solution

by:
maneshr earned 175 total points
ID: 6963327
vlg,

"..and put in up on the server...."

Can you post the URL of that page here?

"..                     I created a subdirectory called cgi-bin, .."

Unfortunately, having CGI capabilities might not be as simple as creating a cgi-bin directory.

Where is your site hosted? is it on your own server or at a hosting location?

Is there a server admin you can contact to find out if you have CGI access of the server?

The question at this point goes much more basic than your original question. Therefore, i want to be sure you have CGI access before proceeding any further.

Let me know.
0
 

Author Comment

by:vlg
ID: 6963637
I forgot to configure Apache  - all is now well

Thanks

v
0
 
LVL 16

Expert Comment

by:maneshr
ID: 6963731
vlg,

"..I forgot to configure Apache  - all is now well.."

Excellent!!! Great news!!!

Glad to know you got the solution you were looking for.
0

Featured Post

Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you get a (Blue Screen of Death), your system writes a small file called a minidump. Your first step is to make certain your computer is setup to record memory dumps. Right click My Computer, choose properties. Click on the advanced tab, an…
A quick Powershell script I wrote to find old program installations and check versions of a specific file across the network.
The viewer will learn how to dynamically set the form action using jQuery.
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question