Solved

validating ID

Posted on 1998-02-19
1
179 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
Comment Utility
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

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Making a simple AJAX shopping cart Couple years ago I made my first shopping cart, I used iframe and JavaScript, it was very good at that time, there were no sessions or AJAX, I used cookies on clients machine. Today we have more advanced techno…
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.
Learn the basics of modules and packages in Python. Every Python file is a module, ending in the suffix: .py: Modules are a collection of functions and variables.: Packages are a collection of modules.: Module functions and variables are accessed us…
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…

762 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

10 Experts available now in Live!

Get 1:1 Help Now