カレッヂ |
質問者 au
投稿日 2007/1/16(火) 19:19:42
form2mail.cgiを使用しています。 パソコンやau以外の携帯から送信すると送信できるのですが、 auの携帯からフォームメールを使用すると「送信する前に確認画面を出す」にチェックを入れると cgi-lib:reached end of input while seeking end of headers. Format of CGI input is wrong. 以下略 のエラーメッセージが出て送信できません。 「送信する前に確認画面を出す」のチェックをはずすと問題なく送信できます。 何か対処方法はないでしょうか? au側の問題でしょうか?
【習熟度】初めて |
回答者 rescue
[削除]
投稿日 2007/1/17(水) 13:59:32
確認しないで送信する場合、CGIライブラリ(cgi-lib.pl)を使わないで処理されます。 ライブラリは、バイナリデータ(添付ファイル)の送信を処理するために使われます。 CGIライブラリはインターネットの世界ではかなり標準で使われているもので、 標準的な仕様で使う限り、特に問題はないように思います。そういう意味で言えば、 auのサーバを経由している際に、独自のヘッダレスポンスを使っているのかな? と思わざるを得ません。 フォームメール自体、携帯で利用されることを前提に設計していません。 携帯でもPC用のページを見られる機種が出てきたのも、まだ最近のことですね。 添付ファイル送信を使っていないのであれば、WebFORMを使ってみてください。 WebFormは同様の送信CGIですが、添付ファイルには対応していないので、 CGIライブラリも使っていません。 http://www.rescue.ne.jp/cgi/webform/ ちなみに、エラーで検知される部分は次の部分でした。 HEAD: while (($lpos = index($buf, "\r\n\r\n")) == -1) { if ($left == 0 && $buf eq '') { foreach $value (values %insfn) { unlink(split("\0",$value)); } &CgiDie("cgi-lib: reached end of input while seeking end of " . "headers. Format of CGI input is wrong.\n$buf"); } die $@ if $errflag; $head .= substr($buf, 0, $bufsize); $buf = substr($buf, $bufsize); $amt = ($left > $bufsize ? $bufsize : $left); #$maxbound==length($buf); $errflag = (($got = read(STDIN, $buf, $amt, length($buf))) != $amt); die "Short Read: wanted $amt, got $got\n" if $errflag; $left -= $amt; } |
返信(回答)する
Web裏技 |