Solved

validating ID

Posted on 1998-02-19
1
187 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

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
This article will show, step by step, how to integrate R code into a R Sweave document
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
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)

770 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