• ベストアンサー

CGIが・・・いったい何が問題でしょうか?

cgiの登録フォームなのですが、全ての項目を間違いなく入力しても、「郵便番号が入力されていません」というエラーが出ます。http://www.perldeco.net/trial/auction_pro.shtml 上のサイトで購入した、ものなので、ソースコードの間違いはないと思うのですが。 環境はfedora core3を使っていて、cgi,html,plなどバイナリ以外は全て文字コードEUC、改行コードLFに直してから転送しています。 httpdの設定はaddhandlerのコメントをはずし、CGIやshtmlなどすべてのファイルを置いているdocumentrootのoptionsにExecCGIとincludesを追加しました。 あと、入力した項目の確認画面が最終的に登録する前に出てくるのですが、入力した項目のうちいくつかが文字化けしています。問題の見当もつきませんので調べようがない状態です。アドバイスいただけないでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.5

>config fileの中を文字列検索したのですが、やはり$URLはありませんでした。 試用版ではconfig.cgi内で設定しているので、そこで設定すればいいとは思いますが。 ただ、$URLがCGI内で使用されているにもかかわらず、設定箇所が本当にないのであれば、そのCGI作成元に確認したほうがいいと思いますよ。 料金を払って買ったものなのですから、不具合には何らか言った方がいいと思います。

yukiz
質問者

お礼

ご回答ありがとうございます。 いろいろやってみた結果、$URLではトップディレクトリまでしか設定できないようで、httpd.confの設定でdirectoryindexに私がトップページにしたいファイルのファイル名を追加することにより解決いたしました。 あと、作成元には何度か問題が出たときにどういうことか聞きました。しかし、まるで政治家の答弁のように、対応は丁寧だけれども、まったくちゃんとした答えを返してくれませんでした。 本当にサポート体制がひどいサイトだなと思ってしましました!こんなところで愚痴ってもしょうがありませんが・・・。 しかし、Leanさんには本当に感謝しております!幾度となく問題解決の適切なアドバイスをいただきありがとうございました!

その他の回答 (4)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.4

>トップ画面に戻れない問題 正式版でも同じだと思うのですが、pl/config.cgiに$URLの設定箇所がありますのでそちらを適切なURLにしてください。 >メールが文字化け 済みません、このCGIスクリプトjcode.plを使用しているのを見落としていました。 jcode.plだとUTF-8は扱えないので文字コードをUTF-8にするのは駄目ですね。 そうすると、全てのファイルの文字コードをShift-JISにするしかないですね。 文字コードをShift-JISにした後、再度確認して見たらどうなりますか?

yukiz
質問者

お礼

ご回答ありがとうございます。 またもや、完全にLeanさんの仰られたとおりでした。apacheのAddDefaultCharsetをsjisに直してから、 文字コードsjisのファイルで試したところ、すっかり文字化けがなくなりました。 まったく、ご助言の適切さには驚かされるばかりです。ありがとうございました。 あとトップ画面に戻れない問題のほうですが、すみません、私の説明不足でした。 configファイルの設定には下にコピーしたとおり$URL2というのはあるのですが、$URLというものが発見できません。 ## オークションTOPディレクトリのURL ## (例) http://www.*****.co.jp/auction_ex ## デフォルトはhttp:/ ~ /auction_ex $URL2 = "http://www.encollege.com/auction"; ちなみに、この$URL2に上記のように、トップディレクトリのアドレスは代入しましたが、駄目なようです。auctionというディレクトリにもどってしまい、本来戻るべきauction/start.shtmlに戻ってくれません。 config fileの中を文字列検索したのですが、やはり$URLはありませんでした。 これは一体どこで設定するものなのでしょうか? ご助言よろしくお願いいたします。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

>私一人しかCGIにアクセスしていないのにもかかわらずロックエラーというのが出てきます。 >しかも、実際には登録もされていないという状況です。 排他処理のためのロックで失敗しているようですね。 試用版のREADMEにも書いてあるので、正式版の方にも書いてあると思いますが、ディレクトリ構成と各ファイルやディレクトリのパーミッションも指定されていると思いますが、実際にREADMEに書かれている通りのパーミッションになっていますか? 少なくともロック処理用に使用するディレクトリに対する書き込み権(=ファイル作成が可能)が無いと思われます。 >他にも「Auctions!」というロゴが変な場所に出てきたりします。 試用版では確認した分には正常に登録された場合にはです、エラー時に出るようなのでエラー時のメッセージを出力する部分にでも多少の問題があるのではないでしょうか?

yukiz
質問者

お礼

ご回答ありがとうございます! まったく仰られるとおりでした!パーミッションの設定を確認したところ、書き込み権が与えられておらず、それを修正したところ正常に登録できました。 適切なアドバイスをいただきありがとうございました。また、助けていただきました、感謝いたします。 しかし、一難さってまた一難で、また問題が発生いたしまして、やっていただければわかるとは思いますが、ひとつは登録確認メールが文字化けしていることと、もうひとつはトップ画面に戻るリンクがstart.shtmlという本来のファイルに帰るのではなく、それらのファイルが置かれているディレクトリにかえってしまうということです。 メールの文字化けについては、mail.cgiというメール送信を行うCGIファイルを文字コードSーJISに直したところ、一部文字化けがなくなりました。しかし、やはり、化けている部分は残ってしまいます。 トップ画面に戻れない問題のほうは、私はperlがわからないので関係ないのかもしれませんが、 <a href="$URL">オークションTOPへ</a>&nbsp; &nbsp; &nbsp; ・<a href="$SEARCH_CGI?acc=sell_regist&acc2=ap&kt=$FORM{'Fkt1'}"> と記述されているところがリンクの設定だと思うのですが、$URLにstart.shtmlのアドレスを代入している箇所が全てのファイルを探したのですが見当たりませんでした。 どのような設定でこのリンクを正常にトップに戻すことができるのでしょうか? 原因がおわかりでしたら、ぜひ教えていただけないでしょうか? たびたびすみませんが、よろしくお願いいたします。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

以下、あくまでも試用版で確認した上での話しです。 正式版の方にも当てはまるかどうかまでは、こちらでは確認しようがないので分かりません。 >「郵便番号が入力されていません」というエラーが出ます。 どういった判断をして、そのエラーを出しているのかスクリプトを見れないので答えようがありません。 試用版を見る限りでは、何も入力されていない時に似たようなメッセージが出るようですが。 >あと、入力した項目の確認画面が最終的に登録する前に出てくるのですが、入力した項目のうちいくつかが文字化けしています。問題の見当もつきませんので調べようがない状態です。アドバイスいただけないでしょうか? おそらく文字化けしているのは試用版で言うと「お名前」「ふりがな」「ご住所」の所ではないでしょうか? 表示の中にEUCとそれ以外の文字コード(Shift-JIS)が混在しているように見えます。 そのため文字化けしています。 >環境はfedora core3を使っていて、cgi,html,plなどバイナリ以外は全て文字コードEUC、改行コードLFに直してから転送しています。 対処としては、No.1の方が言っているように、配布されている状態の文字コード(Shift-JIS)のまま、改行コードをLFにして転送を行えばいいと思います。 あと、Fedora Code 3のApacheの場合「AddDefaultCharset」が「UTF-8」になっているはずです。 試用版で簡単にですが確認した所では、文字コードUTF-8の場合でも確認画面で文字化けせず表示されるので、文字コードをUTF-8にするというのもあります。 CGIで明示的にcharsetの指定がないので、出来ればサーバのデフォルトのcharsetに合わせておいたほうがいいかとは思います。 だからと言って、CGIの方に合わせて「AddDefaultCharset」を「EUC-JP」にすればいいかと言うと、試しにやってみましたが確認画面では文字化けします。

yukiz
質問者

お礼

ご回答ありがとうございます。 ご指示いただいたとおりに文字コードをUTF-8にしたところ、確認画面の文字化けはなくなりました。 しかし、下のURLで、ご確認いただければ分かると思うのですが。今度は登録ボタンを押したあと「登録完了」とは出るものの、私一人しかCGIにアクセスしていないのにもかかわらずロックエラーというのが出てきます。 しかも、実際には登録もされていないという状況です。 http://www.en-college.com/a/search.cgi?acc=new_user&acc2=usr 他にも「Auctions!」というロゴが変な場所に出てきたりします。 どういうことなのでしょうか? 再びLeanさんに助けていただくことになり、ご迷惑をおかけしますが、どうかご助言お願いいたします。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

今READMEをちょっと読んでみたが、EUCに直したのがまずいんじゃあ? CGIの中身もちらっとみたけど日本語は全部ShiftJISじゃないのかな。ShiftJISのまま送ってみたらどうざんしょ。むしろ全部バイナリで送るのが手間が少ないのでは。で、ページの方が化けるようになったら、コンテントタイプで明示的にcharset=ShiftJISを吐き出してやれば良いだろう。

yukiz
質問者

お礼

ご回答ありがとうございます。 初心者なので「日本語は全てshift-jis」というのがよく分からないのですが?文字コードや改行コードはファイル単位でしか変えれませんよね?日本語の部分だけ変えるということはできるのですか? あと最初全てバイナリで転送したのですが、サーバー のほうがEUC、LFなのでCGIそのものが、動作しませんでした。 READMEのほうにもアスキーで転送するように書いてあったのでそうしたのですが。 HTMLファイルだけSーJISにしたりもしたのですが無駄でした。 お手間をおかけしますが、どうかご助言お願いいたします。

関連するQ&A