in reply to Re: Re: perl tutorial clarification
in thread perl tutorial clarification

i thought you lot would take it easy with me

castaway wasn't trying to be harsh with you; it's just that geeks like us can't read your mind, because we think differently. (I personally tend to think in Perl, when I'm thinking about programming stuff. So thinking about it the way normal people do is hard. castaway may have a similar problem.) Now that you've posted a snippet and an explanation, we are better able to figure out what you need...

From your description, it seems you're always getting that "your username and password did not match" page, right? For testing purposes, why not add some debugging information to that page, so you can have a better idea what's going wrong?

open USER, "<$userfile" or display_page( "Your username ($username) and password ($password) information did not match, or I was unable to verify them. (Technical error code: $!) Check to see that you do not have Caps Lock on, hit the back button, and try again." ), exit;

Try that, and see what it tells you. This should help you isolate the problem, by telling you whether your $username and $password variables are getting set correctly and/or why you can't open the file. (Two chances out of three it's a permissions problem, but the value of $! will tell you that for sure.)


$;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/

Replies are listed 'Best First'.
Re: Re: perl tutorial clarification
by onemadjock (Initiate) on Nov 11, 2003 at 22:28 UTC

    Thank you for that - it now says that no such file or directory exists. The sample user is root and the password is password. I have got a file called root and root.txt.

    Is the problem due to the file name and/or type?

    Thanks for clearing up the misunderstanding as these sites can be quite intimidating for the novice user. We all have to start somewhere!

    Thanks again - oh and the text box in the form is called login not username.

      it now says that no such file or directory exists

      Okay, there's more going on than just a permissions issue, then. The file your code is trying to open doesn't exist, which may mean that it's got the wrong path or filename. I tested the following code:

      use constant USER_DATA => '../data/users/'; my $username = "root"; my $userfile = USER_DATA.$username;

      This sets $userfile to "../data/users/root", which is probably what you intended. (The $username variable did get set to "root", yes? That should be printed in parentheses in the error page, using the code I posted.)

      However, it's a relative path, which leads me to wonder whether the current directory is different from what you thought it was. I believe that when Apache calls a CGI script it sets the current directory to the directory containing the script. So, if your script is /var/www/cgi-bin/something.cgi, the file you're trying to open is /var/www/data/users/root (This is a *nix system, not Win32, right?)

      You're sure that file exists?


      $;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/
      Thats much more like it..

      Are you sure thats the same path your other form is using to save the files to? Try outputting $userfile as well, to see what that contains? You can check if a file exists using '-e', so you could try if(-e $userfile) { display_page("Can't find $userfile") } or something similar..

      C.