[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

validating ID

Posted on 1998-02-19
1
Medium Priority
?
196 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 40 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

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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…
This article will show, step by step, how to integrate R code into a R Sweave document
The viewer will learn how to dynamically set the form action using jQuery.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Suggested Courses
Course of the Month18 days, 23 hours left to enroll

834 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