人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでメールフォームを作成しました。しかし一部の利用者からフォームが正しく利用されないとクレームがきています。どなたか原因と思われる方ご回答お願いします。このフォームは各内容をpostで受けセッション変数に格納し、次画面で確認表示をしています。画面遷移する前に必須記入項目の入力をチェックし空の場合はフラグを0にして遷移しないように設定する仕組みです。使用しているサーバーはxreaです。利用者毎にできたりできなかったりするという点が自分にはよく分かりません。サーバーサイドスクリプトにおいてそのような事があるのでしょうか?

●質問者: on-and-on
●カテゴリ:コンピュータ
✍キーワード:PHP XREA クレーム サーバー スクリプト
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● 潮澤 昴
●0ポイント

http://sb.xrea.com/

XREA SUPPORT BOARD - Powered by vBulletin

URL、PHPソース不明につき原因究明不可能かと・・・


※XREAの質問は上記URLでした方が賢明です。Webmasterが対応に入ってくれる”場合”もありますので。


2 ● inosisibeyan
●50ポイント

http://e-words.jp/w/E99D99E79A84E5A489E695B0.html

静的変数とは 【スタティック変数】 ─ 意味・解説 : IT用語辞典 e-Words

セッション変数などが、もしも単純ミスで静的変数になってしまってたら、おかしくなりますね。

私の経験したものでは、戻るボタンで戻ると変数が古いままになった苦い経験が有ります。

もしフラグの0と言うのが静的変数なら、ビンゴなのですが。フラグの初期化がどこかでされていて、そのPHPの画面を開いた場合のみ、正常動作が出来るように思います。その当たりに絞ってチェックして見てはどうでしょうか?

◎質問者からの返答

フラグはご指摘の通り静的変数です。スクリプトの一番初めに全てを初期化しています。フォームから受け取ってくる値だけセッション変数に格納しているのですが、こちらは初期化していません。その辺りがちょっと怪しいということでしょうか?一度変数の体系を見直してみます。

※ソースの一部を載せました。http://loopline.s173.xrea.com/form.php


3 ● sotsusokima
●50ポイント

http://phpspot.net/php/pg%82o%82g%82o%83T%83%93%83v%83%8B%8FW(%83%7D%83%8B%83%60%83o%83C%83g%81E%90%B3%8BK%95%5C%8C%BB).html:detail]

URLは「エンコードは大変なので色々な関数があります」と言う意味で紹介します。

「どなたか原因と思われる方」は「原因に心当たりがある方」と読み直した上で、ソースもURLも無しの推測ですが。

「正しく利用されない」=「正しく表示されない」の場合。

・PHPを出力するファイルでエンコード指定を怠った為、利用者側ブラウザが(直前開いていたサイトのエンコードなどに影響され)予期せぬエンコードで解釈し、表示出来ない。

・フォームにJavaScript必須な機能を入れており、それをJavaScript禁止(未対応)なブラウザで利用者が開いた。

・利用者が開発者の想定より古いブラウザフォンを使って閲覧した。

・出力したフォームのタグが間違っている。インターネットエクスプローラ等、ミスに寛容なブラウザで動作確認をした為に、それを見落とした。そして利用者のブラウザは非寛容なものだった。

・作成したフォームは実は中文,ハングル向け。英語圏や日本語圏の利用者がブラウザを、その言語に対応させずに開いた。

「正しく利用されない」=「送信したメールが利用者の意図しない内容になる」の場合。

・利用者が設計者の意図しないエンコードで文章を本文用テキストボックスに流し込んだ。

・利用者が誤ったHTMLタグを本文用テキストボックスに書き込み、処理側がタグを無効化しなかった。

・利用者はHTMLタグを使った。処理側はタグを無効化する設定にしていた。

・利用者は、たまたまブラウザまたはセキュリティソフトでCookieを制限しており、処理側ではCookieが必須だった。

・処理側はデータベースを経由してメールを送信していた。利用者側はSQLコマンドを打ち込んだ。そこでサーバ側が「不正なSQLを防止する」機能を発動させ、入力を乱した。

・処理側でサーバ側のファイルを利用。しかしファイルロックの処理を怠っていた為、複数利用者の同時書き込みで資源利用が衝突し、そのファイルを正しく得られなかった。

等が考えられます。

もう少し具体的な症状とソースコードを掲載して頂けると、より技能の高い方から支援を得られると思います。

◎質問者からの返答

ご指摘の通りエンコードに関しては全くの未チェックでした。エラー症状が出た方と直接連絡がとれない為あいまいな表記でしか伝えることができません。ちなみにソースはこのようなものです。http://loopline.s173.xrea.com/form.php


4 ● sotsusokima
●10ポイント

http://design.fujitsu.com/jp/universal/assistance/

富士通アクセシビリティ・アシスタンス : FUJITSU Japan

メタタグでエンコードを指定していない事は既出とします。

具体的な症状をクレームと一緒に送ってこなかった事を考えると利用者はWebサイト設計について、それほど知識豊富な方では無いのかも知れません。だいたいの利用者は、そうです。

よってスクリプトそのものではなく、ヒューマンインタフェースの方に問題があるのかも知れません。

「使いづらい」「操作を理解しにくい」「何が必須の手順なのかが分からない」が集約されて、開発側に「利用出来ない」と言う一言で伝わってくる事はあり得ます。


・「コース」、「購入時期」、「状態に当てはまるものにチェックをしてください」、「機種や型をご記入ください」は必須項目なのに、未入力にして確認ボタンを押しても警告メッセージが出ません。(特に「名前」等、上位の項目が空欄の場合)。必須と自覚しないままユーザが確認ボタンを何度も押して『送信されない!』と混乱した可能性はあります。最初に記入漏れを起こした利用者だけが、そのまま泥沼に陥った可能性があります。

・必須項目を未記入にした場合、警告メッセージを出した上でフォームを再表示しますが、入力済みだった「確認の為、もう一度E-mailアドレスをご入力ください※」がこっそりと空欄に戻っています。これに気付かなかったユーザだけが『警告メッセージで言われた項目は全て埋めたのに送信されない!』と混乱した可能性はあります。

・「住所」や「建物名」maxlength=”40”ではあまりに小さいです。文字数許容をもっと大きくした上で「市町村」、「番地」、「マンション名」と細かく住所を分けるか、複数行入力を認める形に書き直しましょう。長い住所の利用者だけが『住所を入力出来ない』状態になったはずです。


それ以外の細かな所では。

・<input style=”IME-MODE:disabled” name=”mail2” type=”text” maxlength=”40”> この項目だけvalueを初期化していません。意図的にそうなさった様にも見えますが。

・<br>(はてなの仕様を踏まえ全角で)と<br />が混在しています。今の内に統一を。

・下記の様なtestボックスも、スラッシュを使うのか使わないのか今の内に統一を。

<input style=”IME-MODE:disabled” name=”mail” type=”text” maxlength=”40” value=””>

<input type=”text” size=”4” style=”IME-MODE:disabled” name=”jiki_y” value=”” />

・電話番号やメールアドレスを正規表現でチェックしている様子が有りません。フォーム表示用ファイルで行う事では有りませんが。

・フォントタグではなく、CSSを使ってフォントの色を指定した方が良いかも知れません。

◎質問者からの返答

こちらで開発したものではないのでlengthについては気づきませんでした。修正したいと思います。ただ質問の意図は「システムやサーバー上の不具合で起こったエラーと仮定しての対処法」という事ですので、残念ながらご指摘の半分以上が的外れの内容であります。せっかくご回答頂いたのですが有効的な回答でなく残念です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ