Hi David,

at first thanks for  your reply.
I'll try to explain how my script is supposed to work:

  -> sub Online_Database_Search
        initial script, no user input needed
        if f_name, f_surname are supplied and button is pressed, sub 
get_pass is called

->sub get_pass
        collects $pass from user (while doing this calls sub fetch)

($password2 = &fetch;)
->sub fetch
        requires $f_name, $f_surname (and $action eq "pw")
        fetches $password2 from mysql DB using $f_name, $f_surname
        returns $password2 to main script
        
[if $pass eq $pasword2 sub pageone is called...]

I hope this explains it  a little bit better...

Regards,
Sven


On Monday, May 6, 2002, at 12:04 AM, David Kirol wrote:

> Sven,
>       I'm not sure what you are trying to do with the script in your post. I
> played with it (after reconstructing a partial table on a local MySql 
> db)
> and noticed you never disconnected from the db. Passing password2 to the
> next script could be done as a hidden field or parameter. If you review 
> your
> data flow (actually write it down) that might clarify it for you. 
> Something
> like:
>
> Initial script:
>       input required from previous script - none
>       print welcome
>               branch 1
>                       registration script
>                       ...
>               branch 2
>                       login script
>                       collect first and last name
>                   verify names in db
>                       output to next script s2 parameters f_name, f_surname
> Script s2:
>       input required from previous script - parameters f_name, f_surname
>       print welcome
>       collect password
>       ...
> Doing this will fragment the task and allow you to focus on each part 
> and
> allow you to do things like implement a consistent error handling 
> routine
> across the application, centralize database access, etc.
> You may find it handy to use:
>
> use CGI::Carp qw( fatalsToBrowser );
>
> in your cgi scripts (it saves me alot of trips to the Apache error log)
> If you can explain the dataflow better (even cgi1 calls cgi2 to 
> register or
> cgi3 to log a member in...) I might be able to help out more, but what I
> developed so far might not be of any use to you (because of my lack of
> understanding).
> David
>
>
> -----Original Message-----
> From: Sven Bentlage [mailto:[EMAIL PROTECTED]]
> Sent: Sunday, May 05, 2002 3:05 AM
> To: [EMAIL PROTECTED]
> Subject: return values to sub
>
>
> Hi everyone!
> I started learning perl about one month ago.
> After havin fun and even getting some scripts running, the fun stopped 3
> days ago.  :(
>
> Having found a problem I am not able to figure out myself, I'm not quite
> sure any more what to do.
> In my script (see below for excerpt) the user enters his/her
> name/surname. by using those the password is retrieved from am mysql DB
> via DBI, which is done in a subroutine (&fetch).
> It works correct, displays the $password2 as it should. But I could not
> yet figure out, how to pass the $password2 on to the next subroutine
> (&pageone), which is called from inside an if-construct.
> (If I do not use the if-construct, all is displayed on the same page at
> the same time....)
>
>   Calling sub fetch from within the next subroutine again does not work
> either :(
>
> If anybody can help me, i would be very grateful since I do not know
> howw to solve that problem...
>
>
> Regards,
>
> John
>
>
> Here's the code
>
> #!/usr/bin/perl -w
>
> use CGI qw(param);
> use DBI;
> use strict;
>
> ###########################
> #     Config section
> ###########################
>
> # action
>       my $action = param('action');
>
> #data source name
>       my $dsn = 'DBI:mysql:etpa:localhost:3306';
>
> #user
>       my $db_user = 'etpup';
>
> #pass
>       my $db_pass = '1234abcd';
>
>
> #f_name
>       my $f_name = param('f_name');
>
> #f_surname
>       my $f_surname = param('f_surname');
>
> #pass
>       my $pass = param('password');
>
> #etp
>       my $f_etp = param('f_etp');
>
>
>
> unless ($action){&Online_Database_Search}
>         elsif (($action eq "pw") and (($f_name eq "") or ($f_surname eq
> ""))){&Online_Database_Search}
>
> my $password2 = &fetch;
> &pw;
>
>
> if ($action eq "login"){&pageone}
>        elsif ($action eq "name"){&search_by_name}
>        elsif ($action eq "print_name"){&print_name}
>        elsif ($action eq "etp"){&search_by_etp}
>        elsif ($action eq "print_etp"){&print_etp}
>        elsif ($action eq "nation"){&search_by_nation}
>        elsif ($action eq "print_nation"){&print_nation}
>        elsif ($action eq "keyword"){&search_by_keyword}
>        elsif ($action eq "print_keyword"){&print_keyword}
> #########################################################################
> #             subs
> #########################################################################
>
> sub pw {
>
>
>
>
>       my $dbh = DBI->connect( $dsn, $db_user, $db_pass  ) || die "Can 
> nat
> connect to MySQL DB $DBI::errstr\n";
>
>       my $get_pw = $dbh->prepare(
>       "select  name, surname, password from memberscopy
>         where name = '$f_name' and surname = '$f_surname' "
>          );
>
>       $get_pw->execute();
>
>       while ( my (  @data ) = $get_pw->fetchrow_array() ) {
>
>            print "Content-type: text/html\n\n";
>
>            print qq~
>            <html>
>            <head>
>            <title>Enter password</title>
>            </head>
>            <body bgcolor="#000850" text="#FFFFFF" link="FFFF00"
> target="main">
>            $password2
>            <div align="center">
>            <font face="Arial, Helvetica, sans-serif" COLOR="#FFFFFF">
>            <b>Dear $data[0] $data[1],</b><br><br>
>            <div align="left">Please enter now the password you have
> received by email.<p>
>            If you     did not receive an email within 15 minutes after
> applying for a password, <p>
>            please send an <a href="mailto:XXX\@xxx.xx";>email to the
> Administrator.</a>
>            </div>
>            </font>
>            <br>
>
>            <form action="login2.cgi" method="post" target="main">
>            <input type="hidden" name="action" value="login">
>
>            <font face="Arial, Helvetica" size="2">Passwort</font>
>            <input type="password" name="password" size="15"><br><br>
>
>            <input type="Submit" value="Log In">
>            </form>
>            </div>
>
>            $data[0], $data[1]
>            </body>
>            </html>
>            ~;
>
>                                                               }
>
>               }
>
> #########################################################################
>
> sub fetch {
>
>
>               my $dbh = DBI->connect( $dsn, $db_user, $db_pass) ;
>
>               ( my $password2 ) = $dbh->selectrow_array( "
>                       select  password from memberscopy
>                       where name = '$f_name'
>                       and surname = '$f_surname' "
>                                                                                      
>          );
>
>               return $password2;
>
>                  }
>
>
> #########################################################################
>
> sub pageone {
>
>
>
>
>       print "Content-type: text/html\n\n";
>
>       print qq~
>       <html>
>       <head>
>       <title> Welcome</title>
>       </head>
>       <body bgcolor="#000850" text="#FFFFFF" link="FFFF00">
>       // $password2
>       <div align="center">
>       <font face="Verdana, Arial" size="2" color="#FFFFFF">
>       <b>ETPA member Area - Welcome  ( / $password2)</b></font><br><br>
>       In this area...[blablablablabla]<br>
>       <image src="../pics/etp-logo_cr-mini.gif" align="center">
>       PASSWORT "$password2"
>       <hr>
>       </body>
>       </html>
>       ~;
>
>
>
>
>                       }
>
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to