Newsgroup: it.comp.lang.perl
Titolo: come comunicano un form ed uno script???

Ho deciso di creare un form in HTML costituito da una serie di ceckbox da
spuntare. Ho salvato in una cartella tre file txt. Rispettivamente art1.txt,
art2.txt e art3.txt. Una volta selezionate le caselle lo script in risposta
deve aprire nella stessa pagina i file richiesti con la spunta del cekbox.
<FORM ACTION="
http://localhost/cgi-bin/articoloscelto.pl
"
method="POST">
   <p>
      file 1 <input type="checkbox" name="art" value="art1"><br>
      file 2 <input type="checkbox" name="art" value="art2"><br>
      file 3 <input type="checkbox" name="art" value="art3"><br>
   </p>
<INPUT TYPE="SUBMIT" VALUE="invia">
<INPUT TYPE="RESET" VALUE="cancella">
</form>
Seguendo le istruzioni contenute nel manuale Perl 5 (Tecniche Nuove) ho
copiato (senza comprenderne il significato) il seguente script (da
utilizzare come subroutine) che dovrebbe interpretare i dati del form
riportato sopra e renderli disponibili per il mio programma
sub get_form_data
{
   # Ottiene l'input
   read(STDIN, $buffer, $ENV{ 'CONTENT_LENGTH' });
   # Divide le coppie nome-valore
   @pairs = split(/&/, $buffer);
   foreach $pair (@pairs)
   {
      ($name, $value) = split(/=/, $pair);
      # Trasforma segni più e codifica
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",
      hex($1))/eg;
      $value =~ s/<!--(.|\n)*-->//g;
      if($FORM{$name} ne "")
      {
         $FORM{$name}.= "; $value";
      } else
      {
         $FORM{$name} = $value;
      }
   }
}
1;
Poi ho cominciato a tentare di scrivere il mio programma che ho cominciato
così
#!/usr/bin/perl
require "
get_form_data.pl
";
&get_form_data;
print "Content-type: text/html\n\n";
print <<EOF;
<html>
<head>
<title>
Ecco le poesie che hai scelto #line10
</title>
</head>
<BODY BGCOLOR="#FFFFFF">
<H2>POESIE SCELTE...</H2>
<p>
EOF
$input=yes;
while ($input[$num]=yes
ecc.
(dimenticavo ho impostato i permessi x idue script su 755)
Il mio problema? Non capisco assolutamente come comunicano lo script e il
form. Come devo chiamare le variabili da usare nello script? Che valori
danno le caselle vuote o spuntate? Su internet non ho trovato gran che, su
grossi libroni su HTML non è spiegato chiaramente e neppure sui libri che ho
consultato sul perl.
Vi prego di aiutarmi sono bloccato da 10 giorni!
Paolo.
per risposte private
la mia email è solo questa:
poetid...@poetidazione.it

danno le caselle vuote o spuntate? Su internet non ho trovato gran che, su
Dopo aver chiamato la funzione che hai copiato dal testo, trovi tutti i
campi del modulo nell'hash %FORM. Ad esempio:
$FORM{'art'}
contiene il valore di una checkbox. Detto questo, non puoi chiamare
piu` di una checkbox con lo stesso nome, come hai fatto. Dovresti scrivere
cosi`:
file 1 <input type="checkbox" name="art1"><br>
file 2 <input type="checkbox" name="art2"><br>
file 3 <input type="checkbox" name="art3"><br>
Le checkbox assumono valore "on" se sono spuntate, o nullo se non
lo sono. Quindi per verificarne il valore puoi usare:
if ($FORM{'art1'} eq 'on') { ... }
if ($FORM{'art2'} eq 'on') { ... }
if ($FORM{'art3'} eq 'on') { ... }
Stai attento alle maiuscole/minuscole sui campi dei moduli: scrivere
"Art1" e` diverso da scrivere "art1". Non hai sbagliato in questo
caso, pero` te lo dico lo stesso cosi` ti eviti eventuali scleri. ;-)
Ultima cosa: il Perl gia` include il modulo CGI.pm che ti permette
di accedere ai contenuti di un modulo, considera l'uso di quello
anziche' della funzione che hai copiato.
	A presto, Michele.
-- 
Michele Beltrame
m...@io.com
http://www.io.com/~mick/
ICQ# 76660101
==> Sito di it.comp.lang.perl: 
http://www.perl-it.org
==> Sei del triveneto e vuoi unirti ai Perl Mongers? Scrivimi!


......


Ciao ,
se ti interessa su 
www.softwareplanet.net
 ci sono corsi di Perl e CGI (+
molto altro); se ti interessa trovi anche li le risposte.

ti restituisce un hash con le coppie nomedelcampo/valore
Una nota: 
cgi-lib.pl
 e` una libreria considerata obsoleta, in
quanto sostituita dal modulo CGI gia` integrato nella distribuzione
standard del Perl. Questo modulo prevede un'interfaccia diversa
(object oriented) per accedere ai campi dei form, ma mette a
disposizione (per compatibilita`) anche la funzione ReadParse
di 
cgi-lib.pl
.


Ti consiglio di dare un'occhiata al modulo CGI che ti semplifica la vita...


 ha scritto nel
messaggio news:3B1CCA51...@venaria.marelli.it...
