Re: Creating a Logon Form

[email protected] ("John W. Krahn") Tue, 09 Dec 2008 19:15:37 -0800
Newsgroups perl.beginners.cgi
Message-ID <[email protected]>
[email protected] wrote:
> Hey All,

Hello,

> I'm new to doing CGI with Perl and so am a little lost here.
> 
> I'm working on a web-accessible database system for a (rather large)
> group of area churches and went through the rigmarole of assessing
> various programming and scripting languages to see which is the best
> tool for the job and I landed on Perl::CGI.
> 
> I started working on this project and have created scripts that
> generate a registration page that emails the registration information
> to me for processing.  This is intentional, by the way, as I don't
> want it to be a self-register site for certain security reasons.
> These scripts work fine, so I started working on a logon form to allow
> users who are already registered to logon.  So, on my main page, I
> have a right-hand pane that looks similar to this (in the HTML code):
> 
> <div id='rightcontent'>
>      <p><a href='http://myserver.domain.org/cgi-bin/
> boms.cgi'>Register</a></p>
>      <br />
>      <h3>Logon</h3>
>      <form method='POST' action='http://myserver.domain.org/cgi-bin/
> logon.cgi'>
>           Username:<br />
>           <input type='textfield' name='uname' /><br />
>           Password:<br />
>           <input type='password' name='pwd' /><br />
>           <input type='submit' name='logon' value='Logon' />
>      </form>
> </div>
> ...etc...
> 
> This form displays pretty well, though I need to work on the width of
> the fields, but that's not my issue.  My issue is when I fill in the
> data in the fields and submit it to my "logon.cgi" script, the
> password value gets an arbitrary string of numbers attached to the end
> and I am not having any luck figuring out where those numbers come
> from, nor how to get rid of them back to the clear text of the
> password.  For example:
> 
> I enter the string 'hiyall2008' in the password field and get the
> following values in my logon script...
>      Click 1:  hiyall2008153639492
>      Click 2:  hiyall2008135813700
>      Click 3:  hiyall2008152312388
>      et cetera...
> 
> As you can see, there is a different arbitrary string of numbers at
> the end of the clear text of the password entered.  If it was the same
> each time the password was entered, I would just make it a part of the
> password and encrypt the whole thing into my database.  However, each
> time it is different.  It appears to be only 9 numbers each time, so I
> decided to try and strip those 9 numbers off the password with the
> 'substr()' method.  So, I created the following sub procedure to do
> that:
> 
> sub strip_string
> {
>         my $ret = "";
>         for (my $i = 0; $i < length($_[0]) - 9; $i++) {
> 	        $ret .= substr(length($_[0]) - $i, 1);

Say that you pass the string "hiyall2008153639492" to strip_string and 
the length of that string is 19 characters.  At the start of the loop $i 
is 0 and length($_[0]) - $i is 19 so your expression says:

         $ret .= substr("19", 1);
Or:

         $ret .= "9";

At the next iteration through the loop $i is 1 so you have:

         $ret .= substr("18", 1);


> 	        #print $ret;
> 	}
> 
> 	return $ret;

Since the length of "hiyall2008153639492" is 19 and the loop starts at 0 
and ends at 9 then the length of $ret will be 10.


> }
> 
> Now, when I use this method to "strip" the arbitrary numbers from the
> end of the entered password, I get the following:
> 
> I enter the same password as before, "hiyall2008", and get the
> following:
>      Click 1:  0134588996
>      Click 2:  0157203012
>      Click 3:  0138639940
> 
> Now, not only do I have arbitrary strings of numbers, I have 10
> numbers instead of 9!  I know that it is something that I'm not doing
> correctly, but I cannot figure out what I'm doing wrong.

If you just want to "strip" 9 characters from the end of your string then:

$ perl -le'
$_ = "hiyall2008153639492";
print;
substr( $_, -9 ) = "";
print;
'
hiyall2008153639492
hiyall2008



John
-- 
Those people who think they know everything are a great
annoyance to those of us who do.        -- Isaac Asimov