Newsgroup: it.comp.lang.perl
Titolo: dov'e' l'errore ?

Sto usando da tempo un programma di formmail che non mi ha mai dato storie.
In questo caso invece continua ad aprirmi la finestra di errore per mancata
compilazione campi.
Ho limitato il no dei campi ma senza successo.
Mi e' sorto il dubbio che possa entrare in conflitto con un altro cgi
contenuto nella stessa cartella ma in altri siti hanno coesistito più cgi
senza problema.
Quoto lo script, sorry per la lunghezza,  sperano che qualche buona anima mi
indichi l'errore.
Grazie per l'aiuto.
Mario
#!/bin/perl
######################################################################
$guestlocation = "
http://www.netspedizioni.com/quotaziones.htm
";
$guestpath = "/custs/home/n/net2947/public_html/quotaziones.htm";
$cgilocation = "
http://www.netspedizioni.com/cgi-bin/quosforms.cgi
";
$mailprog = '/usr/lib/sendmail';
$youmail = '
in...@netspedizioni.com
';
$yourname = "NET 
SPEDIZIONI.COM
";
$getdate = "/bin/date";
#####################################################################
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@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;
 $value =~ s/<([^>]|\n)*>//g;
 $INPUT{$name} = $value;
}
$date = `$getdate +"%A, %B %d, %Y at %T (%Z)"`;
chop($date);
&noname unless $INPUT{'name'};
open (FILE,"$guestpath");
@lines = <FILE>;
close(FILE);
open (MAIL, "|$mailprog $youmail");
if ($INPUT{'email'}) {
 print MAIL ("From: $INPUT{'name'} <$INPUT{'email'}>\n");
} else {
 print MAIL ("From: $INPUT{'name'}\n");
}
print MAIL ("Subject: Net Spedizioni.\n\n");
print MAIL ("$INPUT{'name'} ha richiesto una quotazione occasionale.\n\n");
print MAIL ("Dati della richiesta:\n");
print MAIL ("$INPUT{'name'}: Richiedente\n");
if ($INPUT{'email'}) {
 print MAIL ("$INPUT{'email'}: posta elettronica\n");
}
if ($INPUT{'Responsabile'}) {
 print MAIL ("$INPUT{'Responsabile'}: Responsabile\n ");
}
if ($INPUT{'camion'}) {
 print MAIL ("$INPUT{'camion'}: Modalita' di trasporto richiesta\n ");
}if ($INPUT{'aereo'}) {
 print MAIL ("$INPUT{'aereo'}: Modalita' di trasporto richiesta\n ");
}if ($INPUT{'mare'}) {
 print MAIL ("$INPUT{'mare'}: Modalita' di trasporto richiesta\n ");
}if ($INPUT{'ferrovia'}) {
 print MAIL ("$INPUT{'ferrovia'}: Modalita' di trasporto richiesta\n ");
}
if ($INPUT{'ddu'}) {
 print MAIL ("$INPUT{'ddu'}: Resa\n ");
}if ($INPUT{'ddp'}) {
 print MAIL ("$INPUT{'ddp'}: Resa\n ");
}
if ($INPUT{'daf'}) {
 print MAIL ("$INPUT{'daf'}: Resa\n");
}if ($INPUT{'fob'}) {
 print MAIL ("$INPUT{'fob'}: Resa\n ");
}if ($INPUT{'candf'}) {
 print MAIL ("$INPUT{'candf'}: Resa\n ");
}if ($INPUT{'ex_works'}) {
 print MAIL ("$INPUT{'ex_works'}: Resa\n ");
}
if ($INPUT{'carico'}) {
 print MAIL (" $INPUT{'carico'}: Luogo di carico\n");
}
if ($INPUT{'consegna'}) {
 print MAIL (" $INPUT{'consegna'}: Luogo di consegna\n");
}
if ($INPUT{'imballi'}) {
        print MAIL ("$INPUT{'imballi'}: Numero imballi\n");
}
if ($INPUT{'pallet'}) {
 print MAIL ("$INPUT{'pallet'}: modalita' di imballo\n");
}
if ($INPUT{'casse'}) {
 print MAIL ("$INPUT{'casse'}: modalita' di imballo\n");
}
if ($INPUT{'cartoni'}) {
 print MAIL ("$INPUT{'cartoni'}: modalita' di imballo\n");
}
if ($INPUT{'pezzi'}) {
 print MAIL ("$INPUT{'pezzi'}: modalita' di imballo\n");
}
if ($INPUT{'diverso'}) {
 print MAIL ("$INPUT{'diverso'}: modalita' di imballo\n");
}
if ($INPUT{'dimensioni'}) {
 print MAIL ("$INPUT{'dimensioni'}: dimensioni\n");
}
if ($INPUT{'kgs'}) {
 print MAIL ("$INPUT{'kgs'}: peso lordo in kgs\n");
}
if ($INPUT{'ricambi'}) {
 print MAIL ("$INPUT{'ricambi'}: commodity\n");
}
if ($INPUT{'abbigliamento'}) {
 print MAIL ("$INPUT{'abbigliamento'}: commodity\n");
}
if ($INPUT{'macchinario'}) {
 print MAIL ("$INPUT{'macchinario'}: commodity\n");
}
if ($INPUT{'altro'}) {
 print MAIL ("$INPUT{'altro'}: commodity\n");
}
if ($INPUT{'adr'}) {
 print MAIL ("$INPUT{'adr'}: commodity\n");
}
if ($INPUT{'deperibile'}) {
 print MAIL ("$INPUT{'deperibile'}: commodity\n");
}
if ($INPUT{'siassicurare'}) {
 print MAIL ("$INPUT{'siassicurare'}: asssicurazione\n");
}
if ($INPUT{'nonassicurare'}) {
 print MAIL ("$INPUT{'nonassicurare'}: asssicurazione\n");
}
if ($INPUT{'nocod'}) {
 print MAIL ("$INPUT{'nocod'}: COD\n");
}
if ($INPUT{'sicod'}) {
 print MAIL ("$INPUT{'sicod'}: COD\n");
}
if ($INPUT{'nodoc'}) {
 print MAIL ("$INPUT{'nodoc'}: documenti extra\n");
}
if ($INPUT{'sidoc'}) {
 print MAIL ("$INPUT{'sidoc'}: documenti extra\n");
}
if ($INPUT{'offerta'}) {
 print MAIL ("$INPUT{'offerta'}: quotazione uso\n");
}
if ($INPUT{'merce_pronta'}) {
 print MAIL ("$INPUT{'merce_pronta'}: quotazione uso\n");
}
if ($INPUT{'prossimo_approntamento'}) {
 print MAIL ("$INPUT{'prossimo_approntamento'}: quotazione uso\n");
}
if ($INPUT{'ulteriori_istruzioni'}) {
 print MAIL ("$INPUT{'ulteriori_istruzioni'}: ulteriori istruzioni\n");
}
print MAIL ("-$date\n");
close (MAIL);
# Send info to visitor
if ($INPUT{'email'}) {
 if ($INPUT{'email'} =~ /(.*)@(.*)/) {
  open (MAIL, "|-") || exec $mailprog,$INPUT{'email'} || die "Can't open
$mailprog!\n";
  print MAIL ("From: $yourname <$youmail>\n");
  print MAIL ("Subject: Net Spedizioni :  CONFERMA ISCRIZIONE AL
SERVIZIO.\n\n");
  print MAIL ("Spettabile Ditta\n");
                print MAIL ("$INPUT{'name'},\n\n");
  print MAIL ("Grazie per avere scelto Net Spedizioni!\n\n");
  print MAIL ("Da questo momento  puo' richiedere le quotazioni di trasporto
che\n");
                print MAIL ("desidera per qualsiasi destinazione del
mondo.\n");
                print MAIL ("Ricevera' la risposta via posta elettronica nel
giro di poche ore.\n");
  print MAIL ("Questo servizio e'completamente GRATUITO : nessun costo
quindi Le\n");
                print MAIL ("verra' mai richiesto.\n");
                print MAIL ("Il know how di  Net Spedizioni  permette  di
fornire quotazioni sia\n");
                print MAIL ("occasionali che generali con qualsiasi sistema
di trasporto : aereo,\n");
                print MAIL ("mare, terra, ferrovia.\n");
                print MAIL ("Net Spedizioni vanta inoltre una grande
esperienza commerciale e tecnica\n");
                print MAIL ("nella gestione delle spedizioni dirette nell'
EST EUROPA.\n");
                print MAIL ("I nostri uffici commerciali sono a Sua completa
disposizione per ogni\n");
                print MAIL ("richiesta.\n\n");
                print MAIL ("Cordiali saluti.\n");
  print MAIL ("$yourname\n\n");
  close (MAIL);
 }
}
&htmlafter;
# Error Messages
sub noname {
print ("Content-type: text/html\n\n");
print ("<html><head><title>Errore nella compilazione.</title></head>\n");
print ("<body><blockquote><blockquote><P>
   <!-- $MVD$:spaceretainer() -->&nbsp;</P>
  <P>
   <!-- $MVD$:spaceretainer() -->&nbsp;</P>
  <P><h1>Mancano alcuni dati.</h1>\n");
print ("Verifichi che tutti i campi siano stati completati.\n");
print ("<P>
   <!-- $MVD$:spaceretainer() -->&nbsp;</P><a
href=\"
http://www.netspedizioni.com/\
">Net Spedizioni</a>. \n");
print ("</body></html>\n");
exit;
}
# Print Follow Up HTML
sub htmlafter {
print ("Content-Type: text/html\n\n");
print ("<html><head> <title>NET SPEDIZIONI : I S C R I Z I O N
E.</title></head>\n");
print ("<BODY><blockquote><blockquote><P>
   <!-- $MVD$:spaceretainer() -->&nbsp;</P>
  <P>
   <!-- $MVD$:spaceretainer() -->&nbsp;</P>
  <P>
   <!-- $MVD$:spaceretainer() -->&nbsp;</P><h1>Il Suo messaggio e' stato
correttamente inoltrato.</h1>\n");
print ("Ricevera' una email con la conferma dell'avvenuta
iscrizione.<br><br>\n");
print ("<b>$INPUT{'name'}</b><br>\n");
if ($INPUT{'email'}) {
 print ("<a href=\"mailto:$INPUT{'email'}\">");
 print ("$INPUT{'email'}</a><br>");
 }
print ("-$date<hr>");
print ("<a href=\"
http://www.netspedizioni.com/\
">Net Spedizioni</a>. \n");
print ("</b></body></html>\n");
exit;
}

 &noname unless $INPUT{'name'};
A parte il fatto che, senza offesa, la visione del tuo programma mi ha messo
i brividi, essendo un esempio di non-programmazione in Perl 4, il problema
mi sembra relativamente chiaro.
La finestra la scrive se non e' stato riempito il campo 'name' nel form.
Siccome il campo 'name' nella tua pagina HTML (che sono andato a cercare, dal
momento che era chiaramente li' il problema) non c'e', ma c'e'
"Richiedente", mi sembra quantomeno normale che il programma si lamenti.
Tra l'altro, il tuo messaggio potevi scorciarlo parecchio, dal momento che
non vedo come il problema potesse essere in uno dei duecento 'if INPUT
print' tutti uguali.
Ovviamente mi posso sbagliare, ma per quel che ci hai voluto dire, questo e'
quanto.
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

Ho sbagliato... il link giusto e':
http://forum.html.it/ubb/Forum9/HTML/000690.html

Ho sbagliato thread....