Solved

validating ID

Posted on 1998-02-19
1
184 Views
Last Modified: 2013-12-25
I tried running the code below to check id the ID entered is correct but nothing seems to happen.  What is wrong?
----------------------
content of stud_id.txt

a1234567 aaaaaa
b1234567 bbbbbb
c1234567 cccccc
d1234567 dddddd
e1234567 eeeeee
f1234567 ffffff
-------------------
#!/apps/perl5/bin/perl

#Change this path!

$DATA_FILE = "/iws/s2389945/hci3.dat";

# The associative array $values will contain the data.

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

# Make sure it's a POST-method form submission
if (! &VerifyForm()) {
      print "<title>Not a POST Form Submission</title>\n";
      print "</head>\n";
      print "<h1>Not a POST Form Submission</h1>\n";
      print "This page should be accessed only by submitting\n";
      print "a form using the POST method. Perhaps your\n";
      print "browser does not support forms.\n";
      print "</body></html>\n";
      exit 0;
}

#OK, it's a form submission, so parse it.
&ParseForm();

#Use the information

#If any field is missing, complain!
if ((! $values{"studId"}) ||
      (! $values{"Practical"}))
{
      print "<title>Please fill out all the fields</title>\n";
      print "</head>\n";
      print "<h1>Please fill out all the fields</h1>\n";
      print "Please fill out the name, email address, AND\n";
      print "comment fields. Back up to the previous page\n";
      print "to try again.\n";
      print "</body></html>\n";
      exit 0;
}

#-------------------------------------------------
# TESTING
# comparison of login id
 
$data="stud_id.txt";

                   open(DATA,"$data") || die "open failed: $!\n";
                    while (<DATA>) {
                      chop;
                      ($id, $name) = split(/ /,$_,2);  
            if ($id =~ /^$values{"studId"}/)
{
print "<title>Thank you user, ", $values{"studId"}, "</title>\n";
print "</head>\n";
print "<h1>Thank you, ", $name, "</h1>\n";
print "You have registered for practical", $values{"Practical"},"\n";
print "</body></html>\n";      
}                              
            else
{
print "<title>Wrong Entry </title>\n";
print "</head>\n";
print "<h1>You gave entered an invalid ID </h1>\n";
print "Please try again \n";
print "</body></html>\n";
}
}

#-------------------------------------------------







#OK, we have all the data. Write it to a file in which
#we collect comments from users. Open to append, of course.

$fname = ">>" . $DATA_FILE;
open(OUT, $fname);

#The format I write here just happens to be appropriate for
#reading with a typical Unix mail reader; for instance,
#mail -f comments.txt should open the file.
#No subject lines, though.

print OUT "From: ", $values{"studId"}, " <", $values{"Practical"}, ">\n";
close(OUT);

print "<title>Thank you user, ", $values{"studId"}, "</title>\n";
print "</head>\n";
print "<h1>Thank you, ", $values{"name"}, "</h1>\n";
print "Thank you for your comments.\n";
print "</body></html>\n";
exit 0;

sub VerifyForm
{
      local($bad, $contentType, $requestMethod, $result);
      $bad = 0;
      # Check the content type of the data we've received
      $contentType = $ENV{"CONTENT_TYPE"};
      if ($contentType ne "application/x-www-form-urlencoded") {
            $bad = 1;
      }
      # And make sure the POST method was used
      $requestMethod = $ENV{"REQUEST_METHOD"};
      if ($requestMethod ne "POST") {
            $bad = 1;
      }

      $result = ! $bad;
}

sub ParseForm
{
      local($fields, $name, $value, $data);
      #Split standard input into fields

      read(STDIN, $data, $ENV{"CONTENT_LENGTH"});
      @fields = split(/&/, $data);

      #Split the fields into names and values, creating
      #an associative array indexed by the names

      foreach $item (@fields) {
            ($name, $value) = split(/=/, $item);
            $name  =~ s/\+/ /g;
            $value =~ s/\+/ /g;
            $values{$name} = $value;
      }
}


-------------------------------

Thanks
0
Comment
Question by:noree97
1 Comment
 

Accepted Solution

by:
manningc earned 20 total points
ID: 1832026
It would help to have more information.  When you say
"Nothing seems to happen", what do you mean?  Does your
browser just lock up or what?  What platform are you running
on, UNIX or Windows?  Also need to see your form page to have
complete information.  Is your path for perl correct?  Can
you run this script successfully from the command line,
either UNIX or DOS?

I copied your script onto my unix server, make a quick form
to use it, and got it to run (altho it has bugs), so the
syntax seems to be OK.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Recently I have been answering a lot of questions like this in IT forums that I frequent. The question posed is usually something along the lines of "We have software X installed and need to uninstall it for reason Y" or some other variant of the sa…
I hope you'll find this tutorial useful and interesting. So let's try to extend Tcl with a new package.  For anyone more deeply interested please check out the book "Practical Programming in Tcl and Tk". It's really one of the best written books abo…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
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…

911 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

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now