Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    41

    banale problema per un cgi.

    Salve.
    Ho un semplicissimo script con due subroutine.
    In una viene costruita una form e nell'altra vengono eseguite delle operazioni in base ai dati inseriti nel form.

    my $query = new CGI;
    print $query->header,
    $query->start_html("Cambio password");
    print "<div style='margin:0 auto;width:500px;text-align:center;'>";
    print $query->img({src=>'/images/logo.gif'});
    print $query->h2('Cambio password');
    &print_form($query);
    print "</div>";
    print $query->end_html;

    viene chiamata la subroutine print_form che stampa una form su una pagina web, vengono riempiti i campi e alla pressione del tasto submit vorrei richiamare la subroutine change_pass che e' definita nello stesso script e che si incarica di elaborare i dati inseriti.
    Ho provato a mettere nella action $myself/change_pass, dove
    myself=$query->self_url, ma non funziona.
    Come devo fare?

  2. #2
    C'è un errore concettuale, devi essere tu a dire allo script quali subroutine eseguire e quando.

    mettiamo che hai il seguente codice:

    codice:
    use CGI;
    my $query = new CGI; 
    
    sub tuo_codice {
    #codice che hai postato
    }
    
    sub change_pass {
    # codice cambio password
    }
    devi operare i seguenti interventi

    codice:
    use CGI;
    my $query = new CGI; 
    
    if($query->param('change_pass')) {
       &change_pass);
    }
    else {
       &tuo_codice();
    }
    
    sub tuo_codice {
    #codice che hai postato
    }
    
    sub change_pass {
    # codice cambio password
    # aggiungi codice html per la pagina di risposta
    }
    
    sub print_form {
      ....
      # aggingi agli altri tag
      print $query->hidden(-name => 'change_pass',
                           -value => '1' );
      # non sono sicurissimo della sintassi per la 
      # creazione di tag hidden. Controlla
      ...
    }
    in questo modo la prima volta che la pagina sarà chiamata visualizzerà il form, la seconda - trovando il tag change_pass - effettuerà le operazioni che ti servono.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    41
    devi dire che se nella action metto $action che per default corrisponde allo script stesso la cosa funziona.
    potrei lasciare cosi' visto che funziona ma non mi sembra un modo di procedere ortodosso.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    41
    si ma se nella print_form ho dei parametri da passare alla change_pass, il valore dei campi, come li passo?

  5. #5
    non capisco la domanda.
    Non sai come si passano dei valori tramite dei form?
    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
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    41
    Originariamente inviato da shishii
    non capisco la domanda.
    Non sai come si passano dei valori tramite dei form?
    no, non mi funziona lo script e non capisco il motivo eppure e' abbastanza semplice:

    my $query = new CGI;
    if($query->param('change_pass')) {
    &change_pass($query);
    }
    else{
    &print_page;
    }

    sub print_page {
    print $query->header,
    $query->start_html("Cambio password");
    &print_form;
    print $query->end_html;
    }

    sub print_form {
    print $query->start_form();
    print $query->textfield( -name=>'user',
    -size=>30,
    -maxlength=>30);
    print $query->hidden(-name=>'change_pass',
    -value=>'1');
    ecc.

    sub change_pass {
    my ($query) = @_ ;
    my($user, $cur, $new1, $new2) = (
    $query->param('user'),
    $query->param('cur'),
    $query->param('new1'),
    $query->param('new2')
    );
    $user =~ s@^\s+|\s+$@@g;

    l'errore me lo da sulle variabili $user, $cur, $new1, $new2 dicendo che non sono inizializzate.
    Eppure l'oggetto $query lo passo.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.