[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 -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/