PDA

Visualizza la versione completa : passare un oggetto?


Claudio Vituzzi
18-10-2004, 05:31
Ho in una sub la funzione per controllare se un user loggato,ma la funzione in una libreria esterna...

il mio script inizia cosi':


use cgi;
require "...";
my $q = new CGI();
&check_login;
...


ma al momento di &check_login; mi va in errore lo script dicendomi che la funzione cookie non esiste...

questo il codice nella libreria:


sub check_login {

my $are_you_logged = $q->cookie(-name=>'MYSIMPLENEWS', -path=>'/cgi-bin/MYSIMPLENEWS/');

if ($are_you_logged ne "y")
{
print $q->header();
print qq~<html>You are not logged!</html>~;
exit(0);
}

return;
}
1;


sono bloccato e non s come andare avanti...qualche consiglio?!

Grazie!

shishii
18-10-2004, 12:07
Puoi fare in due modi, il primo pi facile ma deprecato:

use strict;
use vars qw($q $altre_variabili_globali);
use cgi;
require "...";
$q = new CGI();
&check_login;

il secodo molto pi sicuro:

use strict;
use cgi;
require "...";
my $q = new CGI();
&check_login($q);
........
sub check_login {
my $q = shift;
my $are_you_logged = $q->cookie(-name=>'MYSIMPLENEWS', -path=>'/cgi-bin/MYSIMPLENEWS/');

if ($are_you_logged ne "y")
{
print $q->header();
print qq~<html>You are not logged!</html>~;
exit(0);
}

return;
}

Claudio Vituzzi
21-10-2004, 10:06
Approposito del tuo metodo...



use strict;
use cgi;
require "...";
my $q = new CGI();
&check_login($q);
........
sub check_login {
my $q = shift;


andrebbe bene se invece facessi...?



use strict;
use cgi;
require "...";
my $q = new CGI();
&check_login(\$q);
........
sub check_login {
my $q = shift;
my $valore = $$q->param

shishii
21-10-2004, 19:00
funzionerebbe, ma non ha molto senso. $q GIA' un reference, per cui non faresti altro che creare un reference ad un reference.

Loading