Visualizzazione dei risultati da 1 a 10 su 10

Discussione: passaggio di parametri

  1. #1

    passaggio di parametri

    Scusate ho bisogno di un aiutino!
    Io ho una subroutine in cui c'è dapprima le istruzioni di visualizzazione di un form x creare utenti, quindi con i campi:
    Username:
    Password:
    ConfirmPassword:
    OK

    Quindi segue la'istruzione:
    %newUser = $connection->create ("user",
    {
    "LoginName" => qui devo passargli il parametro username inserito da form,

    "Password" => "qui devo passargli la pwd",

    "Profile" => [$idProfile + 0]#idprofile è una costante

    });
    Mi spiegate come devo passare a "create" i parametri inseriti da form?
    E soprattutto questa sub che ho chiamato createuser come va richiamata da programma principale?


    Vi prego datemi una mano!
    Grazie a tutti

  2. #2
    Mi spiegate come devo passare a "create" i parametri inseriti da form?
    lo puoi fare con questo codice:

    codice:
    #!/perl
    
    use strict;
    use warnings;
    use CGI;
    
    my $q = new CGI();
    
    my $username = $q->param('Username') || undef;
    my $password = $q->param('Password') || undef;
    ...
    ora gestisciti $username e $password come vuoi!

    do per scontato che nel form .html c'erano questi campi:

    codice:
    ...
    <form method="POST" ACTION="your_script.cgi">
    		<input type="text" NAME="Username">
    		<input type="password" NAME="Password">
    </form>
    ...
    poi...

    E soprattutto questa sub che ho chiamato createuser come va richiamata da programma principale?
    quà dovrai spiegarti un pò meglio...

  3. #3
    Questo è ciò che avevo fatto e che non funziona:

    Prog principale

    #!/opt/InfoVista/ivperl/bin/perl -w

    use lib qw(/opt/InfoVista/ivperl/lib/site_perl/5.6.1);

    use CGI;
    use infovista;

    require "Funzioni.pl";

    open(OUT, ">debug.txt");

    $query = new CGI;

    print $query->header();
    print $query->start_html(-title=>'View',
    -bgcolor=>'9999FF'
    );
    &ivConnectionCookie; #### funzioni.pl ####

    print "<font face='Lucida Console'>";
    print "Login
    ";
    print "Home
    ";

    print $query->startform();

    print "<hr color='blue'>";



    if ($query->param('userAdd')) #userAdd proviene da uno script precedente
    {
    print "<center>";
    print "
    Create User

    ";
    &createUser;
    print "<center>";
    }

    if ($query->param('password') ne $query->param('passwordcopy'))
    {
    &createUser("err passwd");
    }

    if ($query->param('Ok'))
    {

    &createUser;
    }
    print $query->endform;
    print $query->end_html;

    Questa è la subroutine:

    sub createUser
    {

    my $errore = shift; #prende il primo parametro passato alla subroutine e lo elimina dalla coda

    if ($errore ne '')
    {

    print $errore; #stampa l'errore
    };
    print "<center>";

    print $query->startform();
    print $query->start_table();

    print "<tr><td>Username</td><td>";
    print $query->textfield(-name=>'username',
    -size=>'30');
    print "</td></tr>";

    print "<tr><td>
    Password</td><td>";
    print "
    ";
    print $query->password_field(-name=>'password',
    -size=>'30');
    print "</td></tr>";

    print "<tr><td>
    Confirm Password</td><td>";
    print "
    ";
    print $query->password_field(-name=>'passwordcopy',
    -size=>'30');
    print "</td></tr>";


    print $query->end_table;
    print $query->submit('Ok','Ok');
    print $query->endform;

    print "</center>";

    $idProfile = 3; #numero identificativo del profilo administrator
    $nome = $query->param("username");
    $passwd = $query->param("password");

    %newUser = $connection->create ("user",
    {
    "LoginName" => "$nome",

    "Password" => "$passwd",

    "Profile" => [$idProfile + 0]

    });


    $msg = ($connection->getStatusMessage())[0];
    if ($msg ne "ok") {
    print "<center>";
    print "$msg
    ";
    print "Warning! This user already exists!
    ";
    &getUserMgmt;
    print "</center>";
    }
    else{
    print $query->hidden(
    -name => "newUserHidden",
    -override => 1,
    -value => $nome
    );

    print "Ok, User created!
    ";
    }

    }

  4. #4
    Mi è venuto il malditesta .. lascio la parola al moderatore

  5. #5
    Ciao,

    Se scrivi:

    codice:
    %newUser = $connection->create ("user", 
    { 
    "LoginName" => "$nome", 
    
    "Password" => "$passwd", 
    
    "Profile" => [$idProfile + 0] 
    
    });
    si suppone che hai già inizializzato l'oggetto a cui punta $connection

    dove lo hai fatto?

    qual'è la struttura del metodo "create"?

    Infine il modo che usi per richiamare userCreate è corretto, ma tutto lo script soffre di molta confusione, in buona parte derivante dal fatto che non usi all'inizio 'use strict;' con la successiva necessità di dichiarare le variabili.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  6. #6
    Ciao,
    il metodo create recita così:

    sub create
    {
    my ($obj, $className, $refHv) = @_;
    my $newObj = Create ($obj->{apiSession},
    $className,
    $refHv);
    return unless ref ($newObj);
    return %{$newObj};
    }

    I miei problemi nascono dal fatto che senza avere grande esperienza di programmaz mi han messo a scrivere uno script x la creazione e inserimento utenti in un certo programma che usa API perl. Per di più mi sto basando su pezzi di codice scritti da un'altra persona che non sempre riesco a capire.

    Come va inizializzato l'oggetto a cui punta $connection?Effettivamente non l'ho fatto!

    Scusa la mia ignoranza e ti ringrazio x qualsiasi dritta tu possa darmi!

  7. #7
    Ciao,

    nel modulo dove sta il metodo 'create' devi trovare il costruttore. In genere si tratta di un metodo chiamato 'new', ma questo in Perl non è obbligatorio, quindi se non c'è 'new' cerca un metodo che al suo interno ha l'istruzione 'bless' e postalo qui.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  8. #8
    Questo è ciò a cui credo tu ti riferisci!


    sub new
    {
    my ($pkg, $computer, $user, $password) = @_;

    if(isCompatibleWithIVAPI()!= 1){
    my ($majorc ,$minorc, $releasec)= getIVAPICompatibilityVersions();
    my $ivperlVersion= $VERSION;
    my $ivapiVersion= getIVAPIVersion();
    my $ivapicompVersion= sprintf("%1d.%1d.%03d",$majorc ,$minorc, $releasec);
    print STDERR "\nThis InfoVista perl package version (",$ivperlVersion,") is not compatible with the version (",$ivapiVersion,") of IVAPI.dll. You must have at least IVAPI.DLL version ", $ivapicompVersion, "!!\n";
    die;
    }


    my $session = {
    "computer" => $computer,
    "user" => $user,
    "password" => $password,
    };

    bless $session, 'infovista';

    $session->_initialize ();

    return $session;
    }

  9. #9
    Madonna del carmine!!! VVoVe:

    raramente ho visto un modulo più incasinato e fuori standard (il fatto che queste eccentricità siano consentite è il bello ed il brutto di perl).

    Comunque...

    la classe in questione si inizializza così:

    use <nome modulo>;
    # non ho capito come si chiama, comunque devi inserire
    # il nome del file.pm SENZA l'estensione.

    my $connection = <nome modulo>->new($computer, $user, $password);

    dopodichè potrai usare i suoi metodi nella forma:

    $connection->metodo(parametri);
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  10. #10
    Ho risoltoooooooooo!!!
    Era un problema di $idProfile che andava passato senza le parentesi [] all'interno del metodo create....mi era sfuggito questo errore nella lettura del file di error_log.

    Comunque hai ragione il programma che sto usando è davvero incasinato e se lo sommiamo ad una mente incasinata come la mia, il guaio è fatto
    Però la cosa che mi soddisfa è che per quanto sporco possa essere, il codice concettualmente fila e per un novellino come me, messo di fronte ad un perl non proprio banale, non è un magro successo!!!

    Grazie ancora!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.