[FoLUG] script cgi

silentsadman@mybox.it silentsadman@mybox.it
Ven 16 Lug 2004 12:16:08 CEST


Non ne so un tubo di script cgi, ma dovrei inviare una mail con i risultati di un form usandone uno. Ne ho copiato uno che su un server diverso dal "mio" funziona bene, ma ho notato che usa il comando di sendmail per spedire la mail. Poichè io devo usare qmail, ho sostituito il comando con quello di qmail, ma il browser continua a darmi "The server encountered an internal error or misconfiguration and was unable to complete your request." Eccetra. Ho controllato i log, e qmail non spedisce una nisba. Qui sotto vi incollo lo script. I percorsi sono esatti, il percorso indicato nella variabile $mailprog punta ad un link simbolico (a quanto mi dicono) quindi non so... Qualcuno ci salta fuori? Scusate il prolissame. Ciao a tutti.

#!/usr/bin/perl -wT

$backurl = "/form1.htm";
$backname = "form";
$mailprog = '/usr/Sbin/sendmail';
$youmail = 'miamail@server.it';

read(STDIN, $namevalues, $ENV{'CONTENT_LENGTH'});

open (MAIL, "echo to: $youmail |$mailprog - inject -s \"Compilazione form per richiesta\">/dev/null") || die "Can't open $mailprog!\n";



@namevalues = split(/&/, $namevalues);
foreach $namevalue (@namevalues) {
	($name, $value) = split(/=/, $namevalue);
	$name =~ tr/+/ /;
	$value =~ tr/+/ /;
	$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$INPUT{$name} = $value;
	unless ($value eq "") {
		print MAIL ("$name: $value\n");
	}
}

close (MAIL);


print ("Content-Type: text/html\n\n");
print ("<html><head><title>Grazie</title></head>\n");
print ("<body><h1>Grazie per aver inserito le informazioni richieste</h1>\n");
print ("Le seguenti informazioni sono state spedite:<hr>\n");

foreach $namevalue (@namevalues) {
	($name, $value) = split(/=/, $namevalue);
	$name =~ tr/+/ /;
	$value =~ tr/+/ /;
	$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$INPUT{$name} = $value;
	unless ($value eq "") {
		print ("$name: $value<br>\n");
	}
}

print ("<hr>\n");
print ("<a href=\"$backurl\">Torna alla pagina $backname</a><hr>\n");
print ("</body></html>\n");

exit;


-----------------------------------------------------------
Spazio ILLIMITATO per la tua Email, Scanner Antivirus,
Antispam, Backup e POP3. Prova la nuova Email di superEva:
http://webmail.supereva.it/
-----------------------------------------------------------



Maggiori informazioni sulla lista FoLUG