CGI-BBS > CGI > Perl > 自作メールフォームCGIの改造で必須項目を判別したい。


カレッヂ
カレッヂ


質問者 うすら専務  投稿日 2005/7/19(火) 15:18:38
メールフォームを作っているのですが、どうもうまく動作しません。
というのも、入力必須項目が空欄の場合、「送信されない」ようにしたいのです。
テキストフィールドとしては「$email」と「$tel」が空欄の場合、エラーページ
に移行させたいと考えています。ご教授願いませんでしょうか?



require './admin/jcode.pl';
$email = param('email');


if ($email ne ''){

$clength = $ENV{'CONTENT_LENGTH'};

if ($clength ne '') {
	read(STDIN, $query_string, $clength);
	@elements = split(/&/, $query_string);
	$i = 0;
	foreach $element (@elements) {
		($key, $buf) = split(/=/, $element);
		$key =~ tr/+/ /;
		$key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
		&jcode'convert(*key, 'jis');
		@name[$i] = $key;
		$buf =~ tr/+/ /;
		$buf =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
		&jcode'convert(*buf, 'jis');
		@value[$i] = $buf;
		$i++;
	}

	&jcode'convert(*sname, 'jis');
	&jcode'convert(*subject, 'jis');
	&jcode'convert(*ftitle, 'jis');

	open (MAIL, "| $sendmail -f $smail $trans");
	if ($sname ne '') {
		print MAIL "From: \"$sname\" <$smail>\n";
	} else {
		print MAIL "From: $smail\n";
	}
	print MAIL "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n";
	print MAIL "Subject: $subject\n";
	print MAIL "\n";

	print MAIL "$ftitle\n";
	print MAIL "\n";

	$tmp = '受付内容';
	&jcode'convert(*tmp, 'jis');
	print MAIL "$tmp\n";

	print MAIL "----------------------------------------------------------------------\n";
	for($j = 0; $j < $i; $j++) {
		print MAIL $j+1 . ": @name[$j] => @value[$j]\n";
	}
	print MAIL "----------------------------------------------------------------------\n";
	close(MAIL);


	print "Location: $query_file\n\n";
}

} else {
	print "Location: $query_file_error\n\n";
	exit(0);
}


【プロバイダ】1-man.net
【習熟度】多少の改造ができる

回答者 sim  [削除]  投稿日 2005/7/25(月) 20:34:28
if(!$email || !$tel){print "Location: $query_file_error\n\n";}

	&jcode'convert(*sname, 'jis');
	&jcode'convert(*subject, 'jis');
	&jcode'convert(*ftitle, 'jis');

こんな感じにしてやればいいんじゃないでしょうか?

返信(回答)する

 


Web裏技