PHPを使ったフォーム上の、

プルダウンを使って、選択する部分が、IE7では、送信者と設定した送信先に、情報が返されるのですが、
Firefox3.08でフォームに記入すると、プルダウンで入力した情報が一部、送信者と設定した送信先に、返されません。

フォーム内には、複数のプルダウンが存在しておりますが、一部の項目は、きちっと情報が返されるのですが、
一部の項目は情報が返されません。

使用しているフォームメールcgi=WwwMail Ver3.26

この問題の原因と、解決方法を教えていただけると助かります。
よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2009/04/02 21:27:10
  • 終了:2009/04/09 12:41:28

ベストアンサー

id:rouge_2008 No.3

rouge_2008回答回数593ベストアンサー獲得回数3502009/04/06 10:08:56

ポイント80pt

ありがとうございます。

それでは回答で失礼いたします。

1.「ドキュメントタイプ宣言、文字コードの指定、スタイルシートの読み込み、タイトルなどの記述が<body>内にも複数記述」について

他のPHPファイルを読み込んでいるということですが、それらのファイルに記述されている<HTML><META ~><TITLE></TITLE><LINK ~>等の記述をすべて削除すると解決すると思います。

※よく見たらHTMLの閉じタグ「</HTML>」も何箇所かにありましたのでそれも・・・

おそらくフォーム用の共通部品として複数のファイルを作成して、問題のフォームだけでなく他のフォームでも読み込んで使用しているのだと思います。

それらの共通部品用のPHPファイル(あるいはHTMLファイル)にはHTMLやHEAD内タグは不要で、通常いつもBODYタグ内に書いている記述だけを書けば良いことになっているのだと思います。



2.「<option 予約は不要="" value="">」について

これに関してもきちんと直っているようですが、どこかに問題が残っているのでしょうか?

元のファイルが「"value=***"」となっているということですが、「元のファイルは、value="***"となっており、」の間違いでしょうか?

サーバーにアップされたファイルは、ダブルクォーテンションがダブっているということですが、HTMLソースは現在はきちんと直っていますので、サーバーのファイルはそれで正しい書き方なのだと思います。

コメントを投稿した後で解決したのでしょうか?

もしまだ問題が残っているのでしたら、もう少し詳しい状況を教えてください。

元のファイルの記述や各ファイルの関係などが分からないと回答しにくいのでお願いします。

例えば元のファイルの記述が、「<option value="予約は不要">」なのか、あるいは「value="予約は不要"」なのか、それとも「予約は不要」と値だけを記述しているのかなどが分かると良いです。

ファイルの関係というのは、フォームのPHPファイル ← 他の部品PHPファイル(またはHTMLファイル) ← 選択肢の値を記述したファイル(元のファイル)という風に読み込まれている…といった感じでどのファイルがどのファイルを読み込んでいるのかが分かると良いです。

分からない場合は必要ありませんが、PHPのソースを見せていただかないとたぶん分からないと思います。

それから、WwwMail Ver3.26を使用しているということですが、どちらで配布されているのでしょうか?

出来れば実際に確認してみたいので、配布先のURLが分かりましたら教えてください。

id:nobu55

id:rouge_2008

大変わかりやすい回答ありがとうございます。

現在作業をしているのですが、参照しているPHPファイルから<HTML><META ~>等の不要な部分を削除して、ファイルをアップしなおしたのですが、

<HTML><META ~>等の不要部分を削除したPHPファイルのテキストが文字化けしてしまい、一旦元のファイルに戻しました。

おそらく<HTML><META ~>等の不要部分を削除したPHPファイルのテキスト部分を、再度入力しなおす必要があるのかなぁ?と考えております。

もう一度作業を行ってみて、再度報告させていただきます。

色々と丁寧にアドバイスをいただき、本当にありがとうございます。

2009/04/07 19:35:26

その他の回答(2件)

id:m6u No.1

《み》回答回数82ベストアンサー獲得回数62009/04/02 22:48:41

ポイント10pt

 phpが原因なんじゃなくて、ブラウザ側で動くjavascriptの記述の問題のように見えます。

 そして、詳しく原因を探ろうとするとするなら、html/javascriptのソースをチェックしない限りわからないのではないでしょうか。

id:nobu55

ありがとうございます。

何か対応策はありますでしょうか?

2009/04/03 10:01:27
id:m6u No.2

《み》回答回数82ベストアンサー獲得回数62009/04/03 11:54:50

ポイント10pt

Another HTML-lint gateway

http://openlab.ring.gr.jp/k16/htmllint/htmllint.html

 ・・・にかけてみると、いくつか論理構造が破綻しているように見えます。

 option要素の記述がおかしいですね、「value="~~~"」となるべきところが「value "~~~」で改行をはさんで「"」になってるあたりがまずそう。

id:rouge_2008 No.3

rouge_2008回答回数593ベストアンサー獲得回数3502009/04/06 10:08:56ここでベストアンサー

ポイント80pt

ありがとうございます。

それでは回答で失礼いたします。

1.「ドキュメントタイプ宣言、文字コードの指定、スタイルシートの読み込み、タイトルなどの記述が<body>内にも複数記述」について

他のPHPファイルを読み込んでいるということですが、それらのファイルに記述されている<HTML><META ~><TITLE></TITLE><LINK ~>等の記述をすべて削除すると解決すると思います。

※よく見たらHTMLの閉じタグ「</HTML>」も何箇所かにありましたのでそれも・・・

おそらくフォーム用の共通部品として複数のファイルを作成して、問題のフォームだけでなく他のフォームでも読み込んで使用しているのだと思います。

それらの共通部品用のPHPファイル(あるいはHTMLファイル)にはHTMLやHEAD内タグは不要で、通常いつもBODYタグ内に書いている記述だけを書けば良いことになっているのだと思います。



2.「<option 予約は不要="" value="">」について

これに関してもきちんと直っているようですが、どこかに問題が残っているのでしょうか?

元のファイルが「"value=***"」となっているということですが、「元のファイルは、value="***"となっており、」の間違いでしょうか?

サーバーにアップされたファイルは、ダブルクォーテンションがダブっているということですが、HTMLソースは現在はきちんと直っていますので、サーバーのファイルはそれで正しい書き方なのだと思います。

コメントを投稿した後で解決したのでしょうか?

もしまだ問題が残っているのでしたら、もう少し詳しい状況を教えてください。

元のファイルの記述や各ファイルの関係などが分からないと回答しにくいのでお願いします。

例えば元のファイルの記述が、「<option value="予約は不要">」なのか、あるいは「value="予約は不要"」なのか、それとも「予約は不要」と値だけを記述しているのかなどが分かると良いです。

ファイルの関係というのは、フォームのPHPファイル ← 他の部品PHPファイル(またはHTMLファイル) ← 選択肢の値を記述したファイル(元のファイル)という風に読み込まれている…といった感じでどのファイルがどのファイルを読み込んでいるのかが分かると良いです。

分からない場合は必要ありませんが、PHPのソースを見せていただかないとたぶん分からないと思います。

それから、WwwMail Ver3.26を使用しているということですが、どちらで配布されているのでしょうか?

出来れば実際に確認してみたいので、配布先のURLが分かりましたら教えてください。

id:nobu55

id:rouge_2008

大変わかりやすい回答ありがとうございます。

現在作業をしているのですが、参照しているPHPファイルから<HTML><META ~>等の不要な部分を削除して、ファイルをアップしなおしたのですが、

<HTML><META ~>等の不要部分を削除したPHPファイルのテキストが文字化けしてしまい、一旦元のファイルに戻しました。

おそらく<HTML><META ~>等の不要部分を削除したPHPファイルのテキスト部分を、再度入力しなおす必要があるのかなぁ?と考えております。

もう一度作業を行ってみて、再度報告させていただきます。

色々と丁寧にアドバイスをいただき、本当にありがとうございます。

2009/04/07 19:35:26
  • id:m6u
     1の続きですが。
     問題のhtmlソースをどこかに貼り出すなり、そのページのurlを示すなりしないと、今のままの質問文では誰も解決できませんよ。
     htmlやjavascriptの状態を見ない限り、解決方法を引き出せません。
  • id:nobu55
    id:m6u 様
    ご指摘ありがとうございました。
    以下が問題の発生しているフォームになります。
    http://www.hobo-ya.com/kohtao/planetinfo/ask/fandive_book.php
  • id:rouge_2008
    どの項目の情報が送信されないのでしょうか?
    次の項目については、valueに値が指定されず外側に記述してあるのが原因だと思います。

    ・移動手段(行き道)
    ・移動手段(帰り道)
    ・宿泊施設のご予約(第一希望)
    ・宿泊施設のご予約(第二希望)

    一部抜粋しますが、すべて次のようになっています。(※余計な「 =""」も記述されています。)
    <option 予約は不要="" value="">予約は不要 </option>
    <option バス+ボート(06:00発)="" value="">バス+ボート(06:00発) </option>

    本来は次のように記述する必要がありますので、確認して直してからテスト送信してみてはいかがでしょうか?
    <option value="予約は不要">予約は不要 </option>
    <option value="バス+ボート(06:00発)">バス+ボート(06:00発) </option>


    他にも送信されない項目がある場合は、問題の項目のHTMLの記述を見直してみると良いです。


    今回の問題とは関係ありませんが、3人目の方の情報の度付きマスクで「必要」を選択した場合、「必要3」として送信されるようになっています。
    「value="必要3"」となっていましたが、「value="必要"」で良いはずですね・・・(^-^;

    それと、関係ありませんがもう一つ・・・
    <html><head><title></title></head><body></body></html>タグ等は、1ページに一つだけ記述します。
    ドキュメントタイプ宣言、文字コードの指定、スタイルシートの読み込み、タイトルなどの記述が<body>内にも複数記述されていましたので、余分な記述をすべて削除してしまった方が良いと思います。

    ※ページの最初(<body>タグより前)に記述した一組だけ残して、<body>タグ以降にある以下の記述をすべて削除
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>
    <META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
    <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 7.0.0.0 for Windows">
    <META http-equiv="Content-Style-Type" content="text/css">
    <TITLE></TITLE>
    <LINK rel="stylesheet" href="../cate_book.css" type="text/css">


    ※すみません。記述間違いがあったので削除して登録し直しています。
  • id:nobu55
    id:rouge_2008 様

    貴重な情報ありがとうございます。感謝します。
    参考にさせていただき、これから作業してみます。

    回答ではなく、コメントで情報をいただいたのには、何か意味があるのでしょうか?
    (私の知る範囲では、コメントではポイントが入らないので・・)
  • id:rouge_2008
    特に意味はありません。(^-^;
    解決しているかどうか分からなかったのでコメントにしました。
  • id:rouge_2008
    今確認してみましたが、移動手段(帰り道)だけ「=」が抜けていました。
    現在次のようになっています・・・

    <option value "予約は不要
    ">予約は不要
    </option> <option value "バス+ボート(10:00発)
    ">バス+ボート(10:00発)
    </option>
    以下、略(同じように「=」が足りません。)

    ※改行が入っても問題ないと思いますが、一行に記述した方が良くないでしょうか?
  • id:nobu55
    id:rouge_2008 様

    コメントが遅くなりまして、申し訳ありません。

    <option value のあとに=が抜けていたのが原因だったようで、
    問題は解決しました。ありがとうございました。

    しかしながら、コメントでご指摘を受けた
    ①“ドキュメントタイプ宣言、文字コードの指定、スタイルシートの読み込み、タイトルなどの記述が<body>内にも複数記述”
    ②“<option 予約は不要="" value="">”
    この2点についてですが、解決に至っておりません。

    このフォームは私が作成したものではなく、
    PHPを使って作成されているのですが、ローカル上のファイルと
    サーバーにアップした後のファイルでは、ソースが変わるようです。(PHPが機能しているからなのでしょうが。)

    ①ページ内で他のPHPからの情報を読み込んでいるようなのですが、それらのPHPファイルに記述されている
    “ドキュメントタイプ宣言、文字コードの指定、スタイルシートの読み込み、タイトルなどの記述が<body>内にも複数記述”
    これらの情報が、読み込まれてしまっているようなのです。

    ②元のファイルは、"value=***" となっており、ダブルクオテーションマークはダブってないのですが、
    サーバーにアップされた、ファイルをみると、ご指摘いただいたように、ダブルウオテーションマークがダブってしまいます。

    大変恐縮ですが、よろしければこれらの原因について、教えていただけると助かります。(回答をご利用いただければと存じます。)

    どうぞよろしくお願いいたします。




  • id:m6u
     あと気になるところ、「&lt;option value=&quot;~」のあとに改行をはさんでから「&quot;&gt;~&lt;/option&gt;」となっているので、何らかのファイルを読み込んでoption要素を生成しているとしたら、そこで改行コードを取っちゃう「[http://www.php.net/manual/ja/function.rtrim.php:title=rtrim()]」関数を使ってから適用するなどして調整しないと。
     毎度毎度DOCTYPE宣言等が出てくる原因については、もうphpのソースを読めるように、たとえば拡張子phpでなくtxtにしたものをアップロードするなどして開示するしかないように思います。
  • id:rouge_2008
    もう少し詳しい手順を書いておきます・・・

    <!DOCTYPE ~><HTML><META ~>等の記述が複数ある件については、読み込んでいるファイルから削除すれば良いはずですが、読み込んでいるファイルがどれなのか分からない場合は、fandive_book.phpを開いて「require」または「include」の記述がある行を探してみてください。
    その後ろにファイル名が続いているはずですので、そのファイルを探して開いてみてください。
    ※探したファイルに<!DOCTYPE ~><HTML><META ~>等の問題の記述があれば削除します。
    ※「require_once」または「include_once」である可能性もあります。
    読み込んでいるファイルの内容によっては、違う記述の可能性もありますが、とりあえず上記の方法で探してみてください。

    上記で解決できない場合は、m6uさんも書いていますが「fandive_book.php」を「fandive_book.php.txt」などとしてアップロードしたURLを教えていただいた方が解決しやすいと思います。
  • id:rouge_2008
    ブラウザで表示した時に文字化けしているのですか?
    「fandive_book.php」はEUC-JPのようですので、読み込んでいるファイルもEUC-JPだと思います。
    保存時の文字コードをEUC-JPにして保存してみてください。
    ※メモ帳はEUC-JPに対応していないと思いましたので、対応している他のテキストエディタを使用すると良いです。
    フリーでは、TeraPadやサクラエディタ等が有名です。
    (文字コードは自動認識されるはずですので、上書き保存するだけで大丈夫なはずです。※はっきりと指定したい時は、「ファイル」→「文字/改行コード指定保存」(TeraPad)を選択します。サクラエディタの場合は、「名前を付けて保存」を選択すると文字コードを選択する項目があります。
    開いた時に文字化けしている場合は、「ファイル」→「文字コード指定再読込」(TeraPadの場合)あるいは「開き直す」(サクラの場合)等のメニューを使用してEUCで開き直してみてください。)
  • id:rouge_2008
    他に対応しているテキストエディタを持っている場合は、そちらで作業しても大丈夫です。

    TeraPad
    http://www5f.biglobe.ne.jp/~t-susumu/

    サクラエディタ
    http://sakura-editor.sourceforge.net/

  • id:rouge_2008
    もう一つあったので付け加えます。
    ファイルの文字コードが問題ない場合は、「fandive_book.php」を開いて<!DOCTYPE ~><HTML><META ~>等の記述があるか確認してみてください。
    この記述がない場合は、「fandive_book.php」のヘッダー部分に相当する記述まで削除してしまった可能性があります。
    ブラウザで表示した時に余分な記述は15個ありますので、「fandive_book.php」に一番最初に読み込まれているファイルを除いて残りの15個のファイルから問題の記述を削除してください。
    ※おそらく「fandive_book.php」に一番最初に読み込まれているファイルの記述が、ヘッダー部分に相当するのだと思います。(そのファイルに記述されている部分は残しておく必要があります。)


    ※「fandive_book.php」に<!DOCTYPE ~><HTML><META ~>等の記述がある場合やヘッダー部分に相当するファイルの記述を残してある場合は、上に書いた方法(ファイルの文字コードをEUCにする)を試してみてください。
  • id:nobu55
    Dreamweaver8と、秀丸エディタを使用しています。

    文字化けを避けて、<!DOCTYPE ~><HTML><META ~>を外す為に、秀丸でphpファイルを開いて、<!DOCTYPE ~><HTML><META ~>を削除後、EUC-JPに指定して、上書き保存してみましたが、Dreamweaverで開くと、やはり文字化けしてしまいます・・・・。

    今別の方法を試していますので、また報告させていただきます。本当にありがとうございます。
  • id:nobu55
    ご指摘いただいた
    fandive_book.phpの、ヘッダー記述は削除していません。お手間を取らせて恐縮です。
  • id:nobu55
    id:rouge_2008様
    文字化けどうにかなりそうです。また報告させていただきます。
  • id:nobu55
    id:rouge_2008様

    Dreamweaver8 の編集画面で、文字化けを起こすphpファイル(http://www.hobo-ya.com/kohtao/testplanetinfo/ask/person/fan_person1.php)を、以下の手順に従い編集して、Dreamweaver8上では文字化けしなくなりました。

    手順
    1、上記ファイルを複製
    2、元ファイルから、<!DOCTYPE ~><HTML><META ~>等を削除、ファイルを一旦閉じる。
    3、元ファイルを開く(文字化けしている)
    4、コピーファイルから、文字化けしている部分をコピーして、元ファイルにペースト
    5、元ファイルは文字化けしなくなった。

    この状態でサーバーにアップして、
    http://www.hobo-ya.com/kohtao/testplanetinfo/ask/fandive_book.php をブラウザで見てみると
    やはり文字化けしてしまいます・・・・

    http://www.hobo-ya.com/kohtao/testplanetinfo/ask/person/fan_person1.php ファイルだけを
    ブラウザーで読み込むと、文字化けせずに表示されます・・・

    文字化けする前の、ローカル上のfandive_book.phpのコードはこちらです。
    http://www.hobo-ya.com/kohtao/testplanetinfo/ask/fandive_book.txt

    困ってしまいました。お忙しいところ、大変恐縮ですが、アイディアをいただけると助かります。
  • id:nobu55
    http://www.hobo-ya.com/kohtao/planetinfo 
    http://www.hobo-ya.com/kohtao/testplanetinfo 現在運用しているフォルダ

    試験用に新しくフォルダを作ってテストしています。
  • id:nobu55
    Dreamweaver8 上では、文字化けはしてません。
  • id:nobu55
    文字コード難しいですね。

    特にPHPを使うと、いろいろな箇所で文字コードを気にしないとダメなのですね。

    すべてShift_JISに変更して

    以下の゛Shift_JIS" に変更を加えて、解決しました。

    $AccomoData = LoadTextFile("./data/yado_data.txt","Shift_JIS");
    $DiveData = LoadTextFile("./data/dive_data.txt","Shift_JIS");
    $GoData = LoadTextFile("./data/go_data.txt","Shift_JIS");
    $BackData = LoadTextFile("./data/back_data.txt","Shift_JIS");
    $FanData = LoadTextFile("./data/fan_data.txt","Shift_JIS");
    $SpecialData = LoadTextFile("./data/special_data.txt","Shift_JIS");
    $BoatData = LoadTextFile("./data/boat_data.txt","Shift_JIS");
    $ExpData = LoadTextFile("./data/exp_data.txt","Shift_JIS");

    とりあえずは、解決しています。
    明日いろいろとテストしてみます。
    ありがとうございました。
  • id:rouge_2008
    お返事が遅くなってすみません。
    とりあえず解決したようで良かったです。
    文字コードをSJISに変更することで対処したということですが、フォームから送信してみて大丈夫でしたら、それで問題ないと思います。

    残念ながらDreamweaverは使用したことがないので、文字コードに関してどのような動作をするのか分かりません。
    設定によってファイルの文字コードを認識して表示・保存できるようですが、PHPやPerl等のファイルを編集する場合は問題点もあるようです。
    ・文字コードの設定方法
    http://jyokyoku.blog58.fc2.com/blog-entry-23.html
    http://www.webdesignworkshop.net/consul/2006/11/dreamweavereuc.html
    ・それでも問題がある場合は以下の記事を確認してください。
    http://blog.tofu-kun.org/051027180704.php
    ※今回のファイルはEUC-JPですので、紹介されている対処法の通りそのまま記述すると良いはずです。
    (違う文字コードの場合は、文字コードの指定部分を書き変えます。)
    出来れば秀丸等のテキストエディタで作業していただければと思います。


    ところで、「fandive_book.php」の元々の文字コードは何でしょうか?
    (秀丸で開いて確認してみてください。ステータスバーの右側部分に表示されていると思います。)
    アップしていただいた「fandive_book.txt」がSJISでしたので、「fandive_book.php」もおそらくSJISではないかと思います。
    良かったら記述変更前の「fandive_book.php」をEUC-JPに変更してどうなるか試してみてください。
    ※読み込んでいる各PHPファイルも、おそらくEUC-JPである必要があります。
    (出来ればブラウザでの表示時に文字化けが発生するという「fan_person1.php」と問題のないPHPファイル(日本語が書いてあればどれでもいいですが、「top_coment.php」はどうでしょうか?)をtxtにしてアップしてください。)
    ※読み込む各PHPファイルは、編集(余分なタグ削除)後の物と編集前の物とで2回試してみてください。
    ※選択肢を記述したデータファイルはSJISである必要があります。

    文字化けの問題は解決したのでSJISのままで大丈夫という場合は、上記のことは試していただかなくても大丈夫です。


    ・valueの値に改行が含まれる件について
    LoadTextFileというユーザー関数内で、データファイルの文字コードを変換しているようですので、この中にm6uさんが上で記述していたrtrim()による処理で余計な改行を削除すると、HTMLソースの表示が綺麗になると思います。
    分からない場合はLoadTextFile関数が記述されたファイルを探して、その部分だけ抜き出して貼り付けてください。
    ※function LoadTextFile( ~ ){ ~ }という記述が、読み込んでいるどれかのPHPファイルにあると思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません