Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Kevin
    Registrato dal
    Aug 2002
    Messaggi
    503

    [PERL] cosa non funziona?

    Ciao
    premetto che non conosco perl ho solamente dovuto spostare un sito da un server ad un altro ma questo script non funziona .... mi potete dire cosa ha di sbagliato?
    codice:
    #!/usr/bin/perl
    
    $dberr="dberr.htm";
    
    # Variabili per l'accesso al db
     $NomeDB = "dbname";
     $UserDB = "username";
     $portDB = 5432;
    
    use Pg qw(PGRES_EMPTY_QUERY
    	  PGRES_COMMAND_OK
    	  PGRES_CONNECTION_OK
    	  PGRES_TUPLES_OK
    	  PGRES_COPY_OUT
    	  PGRES_COPY_IN
    	  PGRES_BAD_RESPONSE
    	  PGRES_NONFATAL_ERROR
    	  PGRES_FATAL_ERROR);
    use Pg;
    
    sub DatiHTML
    {  # Prendo i dati della richiesta
    	if ($ENV{"REQUEST_METHOD"} eq 'GET') { $buffer = $ENV{'QUERY_STRING'}; }
    	else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
    	$buffer .= $ARGV[0];
    	@pairs = split(/&/, $buffer);
    	foreach $pair (@pairs) {
    	        ($name, $value) = split(/=/, $pair);
    	        $value =~ tr/+/ /;
    	        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    	        $value =~ s/\n/ /g;
    	        if ($name ne "immagine")
    	        {
    	        	$value=uc($value);
    	        }
    	        $FORM{$name} = $value;
    	}
    }
    
    
    
    # Collega un DB
    sub connect
    {
        ($dbname, $pguser, $pgport) = @_;
    
         $p = "password";
    
         $dbc = Pg::connectdb("user=$pguser port=$pgport dbname=$dbname password=$p");
    
        unless ($dbc->status eq PGRES_CONNECTION_OK) {
    	print("Impossibile collegarsi al DB $NomeDB\n");
        }
    
        if ($DEBUG) {
    	open(TRACE, ">> /tmp/trace.out") || die "can not open trace: $!";
    	$dbc->trace(*TRACE);
        }
    
        return $dbc;
    }
    
    &DatiHTML;
    
    $coll = &connect($NomeDB, $UserDB, $portDB);
    
    $sql="select autore, titolo from dati where genere='PUD' order by autore";
    #print "Content-Type: text/html\n\n$sql";
    
    $ris = $coll->exec($sql); # Esegue la SQL
    
    if ($ris->resultStatus eq 2)
    {
    	$num=$ris->ntuples;
    	if ($num>0)
    	{
    #		print "$num";
    		$domini="";
    		for ($i=0; $i<$num; $i++)
    		{
    			($autore, $titolo) = $ris->fetchrow();
    			$domini .="  <TR>
        <TD height=30>
          <P align=center><font face=\"Verdana, Arial\" size=\"2\" color=\"#fbdc04\">$autore</font></P></TD>
        <TD height=30>
          <P align=center><font face=\"Verdana, Arial\" size=\"2\" color=\"#fbdc04\">$titolo</font></P></TD>
    	</TR>      
          ";
    		}
    	}
    	else
    	{
    		print "Content-Type: text/html\n\n";
    		print "<HTML>
    <HEAD>
    <TITLE>Visualizzazione degli prossime uscite discografiche</TITLE>
    </HEAD>
    
    <body topmargin=\"0\" leftmargin=\"0\" bgcolor=\"#000066\" text=\"#ffffff\" link=\"#ffffff\" vlink=\"#ffffff\" alink=\"#ffffff\">
    <P align=center><FONT face=Arial size=5></FONT></P>
    <P align=center></P>
    <P align=center></P>
    <P align=center><FONT face=Arial size=5>ATTUALMENTE NON E' PREVISTA </FONT><FONT 
    face=Arial size=5>NESSUNA 
    NUOVA USCITA DISCOGRAFICA!</FONT></P>
    <P align=center><FONT face=Arial size=5>RIPROVATE PIU' TARDI!</FONT></P>
    </body>
    </html>";
    exit(1);
    	}
    }
    else
    {
    	# Problemi di connessione al database
    	print "Content-Type: text/html\n\n";
    	open (PAGE, "<$dberr") || die "Impossibile aprire il file $dberr!";
    	while (<PAGE>)
    	{  
    		print "$_";
    	}
    	close PAGE;
    	exit(0);
    }
    
    
    
    print "Content-Type:text/html
    
    
    <HTML>
    <HEAD>
    <TITLE>Le prossime uscite discografiche di Musical Box</TITLE>
    </HEAD>
    
    <body topmargin=\"0\" leftmargin=\"0\" bgcolor=\"#000066\" text=\"#ffffff\" link=\"#fbdc04\" vlink=\"#fbdc04\" alink=\"#fbdc04\">
    <DIV align=center>
    <P align=center><FONT face=Arial size=5 color=\"#fbdc04\">Le prossime uscite discografiche di Musical Box!</FONT></P>
    <P align=center>
            <table border=\"2\" align=\"center\" cellpadding=\"0\" cellspacing=\"2\" width=\"60%\">
                <tr>
                  <td  height=\"70\" align=\"center\" bgcolor=\"#041c81\"><font color=\"#ffffff\" face=\"Verdana, Arial\" size=\"2\">Autore</font></td>
                  <td align=\"center\" bgcolor=\"#041c81\"><font color=\"#ffffff\" face=\"Verdana, Arial\" size=\"2\">Titolo</font></td>
               <tr>
      $domini
      </TABLE></font>
      </P></DIV>
    </body>
    </html>
    ";
    
    exit(0);
    nel log del server mi da questo errore: Premature end of script headers
    grazie
    Non ti accontentare mai. Raggiungi il successo e poi rinizia da capo.
    Non si ha mai una seconda possibilità per fare una bella prima impressione.
    Punti d'immersione in Italia e all'estero
    Template per siti web

  2. #2
    Utente di HTML.it L'avatar di Kevin
    Registrato dal
    Aug 2002
    Messaggi
    503
    nessuno mi può aiutare?
    Non ti accontentare mai. Raggiungi il successo e poi rinizia da capo.
    Non si ha mai una seconda possibilità per fare una bella prima impressione.
    Punti d'immersione in Italia e all'estero
    Template per siti web

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non credo che un print puoi spezzarlo su righe diverse.
    Devi usare print >> al suo posto.
    (non ricordo la sintassi esatta, ma ne trovi vari esempi dentro lo script FormMail (ne trovi una copia nel sito di Shishii) o in altri script.

    Poi nel tuo script ci sono dei print commentati: non vorrei che hai tolto il print della prima riga e lasciato le successive, per cui la pagina non puo` venir visualizzata.

    Ulitma cosa: in questa riga:
    if ($ris->resultStatus eq 2)

    Se e` un confronto tra stringhe deve essere
    if ($ris->resultStatus eq '2')

    Se e` un confronto tra numeri:
    if ($ris->resultStatus == 2)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it L'avatar di Kevin
    Registrato dal
    Aug 2002
    Messaggi
    503
    Ciao Mich_
    intanto grazie per avermi risposto, ora proverò a sfruttare i tuoi consigli il problema reale è che non ho fatto io gli script visto che non conosco Perl, ho spostato questo sito da un server al mio e sto cercando di rimettere in moto il tutto.

    Non ti accontentare mai. Raggiungi il successo e poi rinizia da capo.
    Non si ha mai una seconda possibilità per fare una bella prima impressione.
    Punti d'immersione in Italia e all'estero
    Template per siti web

  5. #5
    Utente di HTML.it L'avatar di Kevin
    Registrato dal
    Aug 2002
    Messaggi
    503
    Allora sembrerebbe che non sia un problema si sintassi ....
    ho provato a eseguire lo script da shell e mi ritorna una cosa del genere:
    Can't locate Pg.pm in @INC( /usr/..........
    che cosa è?
    Non ti accontentare mai. Raggiungi il successo e poi rinizia da capo.
    Non si ha mai una seconda possibilità per fare una bella prima impressione.
    Punti d'immersione in Italia e all'estero
    Template per siti web

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ti manca il modulo
    Pg.pm

    Lo chiami nel tuo programma dalla riga
    use Pg { ... }

    Per sapere cosa sono i moduli e come si usano, puoi vedere il sito di shishii. Io non ho mai usato quel modulo, e non so neppure a cosa serva.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Ciao,

    Pg.pm è un modulo per interfacciarsi al database PostgreSQL. Non è più usato da anni infatti l'ultimo aggiornamento è del 2000. Ormai per interfacciarsi ai database si usa:

    use DBI;
    my $driver = 'pg';

    my $dsn = "DBI:$driver:database=$database;host=$host;$option s";

    my $dbh = DBI->connect($dsn, "$userid", "$passwd");

    cioè l'interfaccia comune DBI + il driver specifico, che nel tuo caso è DBD::Pg.

    Quindi o cambi script o chiedi all'amministratore di istallare il modulo Pg che trovi su http://search.cpan.org
    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
    Utente di HTML.it L'avatar di Kevin
    Registrato dal
    Aug 2002
    Messaggi
    503
    ecco mi pareva ....
    io l'ho scaricato per installarlo come si fa? Basta metterlo in qualche cartella?
    Me lo puoi spiegare perfavore?
    Non ti accontentare mai. Raggiungi il successo e poi rinizia da capo.
    Non si ha mai una seconda possibilità per fare una bella prima impressione.
    Punti d'immersione in Italia e all'estero
    Template per siti web

  9. #9
    Non è possibile (o meglio... è molto complesso) istallarlo per un utente, in quanto quel modulo ha una parte in C che va compilata e linkata a librerie di sistema.
    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
    Utente di HTML.it L'avatar di Kevin
    Registrato dal
    Aug 2002
    Messaggi
    503
    me lo devo installare da me
    ho un server dedicato con l'assistenza ma per ste robe mi hanno detto che mi devo arrangiare ....
    Non ti accontentare mai. Raggiungi il successo e poi rinizia da capo.
    Non si ha mai una seconda possibilità per fare una bella prima impressione.
    Punti d'immersione in Italia e all'estero
    Template per siti web

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.