• ベストアンサー

safari でのフォーム送信不具合

はじめまして、質問させていただきます。 よろしくお願いいたします。 現在、入力フォームにIDとパスワードを入力し、フォームデータをID・パスワード認証用のCGIに渡し、正しければ任意のページへジャンプするという動きのページを製作したのですが、safariで動作チェックしたところ、正しく動きません。各サイトやQ&Aなどを調べたところ、どうやら文字化けによるものだと推測しました。 safariでフォーム送信が正常に動いているサイトなども見たのですが特別なことをしている様子が無いので、原因がいまいちわかりません。 詳細は下記 ■サイト閲覧環境 OS:OSX 10.3.7 ブラウザ safari 1.2.4(v125.12) テキストエンコーディング:Shift_Jis ■フォーム入力ページの仕様(HTMLファイルの中身) <html lang="ja"> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> ↑この二つのタグは記入してあります。 WindowsのIE・NN・Operaでは正常に動作します。 マックはほぼ無知に近いので、そのあたりもふまえて伝授いただければと思います、申し訳ありません、よろしくお願いいたします。

  • Mac
  • 回答数4
  • ありがとう数3

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

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.3

パスワードに使用する文字に2バイト文字を許容すれば、おっしゃるようなことが起きるでしょうが、ASCII文字(A - Z、a -z、1 -9、ほか決められた記号類)のみに制限すれば、文字化け(文字コードの相違)が影響することはあり得ません。 なぜなら、ASCII文字(0001~007E)は、日本語に限らず全言語の文字コードで共通だからです。 パスワード認証がとおらないのは、ふつう暗号化に使っている技術をウェブブラウザ側が採用しているかどうかの問題と考えます。 hrs_rickyさんが暗号化・複合化のCGIまでお書きになっているのではないでしょうから、使っているCGIの付属ドキュメントで確かめてみてはいかがでしょうか? Safariでパスワード認証できないサイトはまだいっぱいありますよ。だからInternet ExplorerをいまだにMac OS Xに付属させざるをえないのでしょう。

hrs_ricky
質問者

補足

回答ありがとうございます。 私の方で説明不足が多く申し訳ございません。 もう少し詳しく補足させていただきます。 パスワード認証用のCGIはPerlで自作しました。 CGIの内容は・・ フォーム内容を受け取り、会員情報のデータベース と照合しOKであれば任意のページにジャンプすると いうものです。 「暗号化」「複合化」はしていません。 送信用のフォーム部品は普通のテキストボックス(<input type="text" name"○○○">)でパスワード 用のフォーム部品は使っていません。 >パスワードに使用する文字に2バイト文字を許容す >れば、おっしゃるようなことが起きるでしょう >が、ASCII文字(A - Z、a -z、1 -9、ほか決めら >れた記号類)のみに制限すれば、文字化け(文字 >コードの相違)が影響することはあり得ません。 フォームで送るデータについては2バイト文字を 使っておらず、すべてASCII文字での入力となって います。 質問を出しつつ、簡単なパスワード認証用のCGIを 自作しテストしてみました。その結果まったく文字 化けはしておらず、きれいにフォーム送信内容が送 られて来ました。当然ですね(^^; >Safariでパスワード認証できないサイトはまだい >っぱいありますよ。だからInternet Explorerをい >まだにMac OS Xに付属させざるをえないのでし >ょう。 そうなんですか、まだ問題のあるブラウザなので すね、できればsafariにも対応したいと思っている ので。 困りました・・・。 最後に・・・ Windowsでは問題なく動作し、safariで文字化けして いないとなると、自作したCGIの内容に問題がある のだと思うのですが、やはり原因不明は変わらない ような気もします。 なにか思い当たる事があれば ご回答ください。

その他の回答 (3)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.4

パスワード認証についての本題については、ASCII文字ないし半角英数字に限定するということで解決したと思いますが、「SafariからシフトJISの文字コードを送信したい」という発展した問題についても触れてみたいと思います。 Safariの環境設定>表示で「デフォルトエンコーディング:」を「日本語(Shift JIS)」にすれば、シフトJISで送信してくれると思います。ご検証ください。

hrs_ricky
質問者

お礼

ご回答ありがとうございます。 デフォルトエンコーディングを「日本語(Shift_JIS)」 で検証して見ます。

  • nemaka
  • ベストアンサー率50% (8/16)
回答No.2

自分もよくしらないんですけど、聞いたことがあることを書きます。 FOMRで送るときに「GET」「POST」があります。 GETだと、URLに添付させてデータを送るもので、 POSTだとある変数にいれこんで送るものだと思います。 (厳密にいうと違うと思います。すいません。 GETで送る場合、CGIだと文字化けをしてしまうようなので、 POSTで送ってみてはどうでしょうか。

hrs_ricky
質問者

お礼

回答ありがとうございます。 私の説明不足でした。 フォームの送信は「POST」で行っています。 パスワード認証のCGIはperlで自作しました。 私の自作CGIの方に何か問題があるのかもしれません チェックしてみます。 ありがとうございました。

  • agehage
  • ベストアンサー率22% (2544/11322)
回答No.1

Safariのバグかもしれませんね。 途中から一気に化けることがありました。

参考URL:
http://homepage.mac.com/mkino2/safari/hmdt.html
hrs_ricky
質問者

お礼

早速の回答ありがとうございます。 safariに限らずブラウザのバグを製作側が対応していくのって非常に大変ですね。参考URLを見たところパッチで回避する方法もあるんですね、参考になりましたありがとうございました。

関連するQ&A

  • Safariで画像が出ません!

    WinXPにてHPを作っています。 WinではIE7、IE6、NN7、FireFox、Opera MacではIE、FireFox、Opera、Safari で動作・レイアウトの確認をしています。 何故かSafariのみ、以下のタグを入れたページの背景画像が出ず真っ白な画面になってしまいます。 どこに間違いがあるのかさっぱりわからないんです… ご存知の方、教えて頂けるとありがたいです!! 宜しくお願い致します。 タグ一覧↓ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <BASE target="_parent"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Imagetoolbar" content="no"> <meta name="robots" content="noindex, nofollow,noarchive"> <meta name="GOOGLEBOT" content="NOINDEX, NOFOLLOW, NOARCHIVE"> <TITLE>top</TITLE> <STYLE type="text/css"> <!-- BODY{ background-color : black; background-image : url("****.gif"); background-repeat : no-repeat; background-position:25% 0%; } --> </STYLE> </HEAD> </HTML>

    • 締切済み
    • CSS
  • Safari4 ID・パスワード自動入力がきかない

    本日はじめてSafari4を使用しております。それまではFireFox3をメインブラウザとして使用していました。 Safariの動作が快適なのでFireFoxから乗り換えようと思っているのですがID・パスワードの自動入力がききません。環境設定上で自動入力タブの「ユーザ名とパスワード」の項目へチェックを入れてから、ID・パスワードを入力するサイト上でログインすると、保存しますか?といった旨のメッセージは表示されるのですが、保存がされていないようです。 FireFoxであればログアウト後、ID・パスワードを入力するページのID入力フォーム上でダブルクリックするとプルダウンで保存したアカウントが表示されていたのですが、Safariではそのような方法で自動でログインできないのでしょうか?ちなみにSafariに「自動入力」というアイコンがあったのでクリックしたのですが、「自動入力機能はフォームに入力できませんでした」というメッセージが表示されます。 とにかく、一度入力後はログアウト(自動ログアウト)しても、FireFoxのようにボタン一発でID・パスワードが入力できるようにならないでしょうか。

    • 締切済み
    • Mac
  • フォームから入力した漢字が文字化けに

    アンケートを作成しました. 入力フォームに漢字(名前など)を入力して送信すると内容がメールで受け取れます.入力フォームは確認画面が表示できるようにしてありその後,送信でメールを受け取ります.確認画面表示は問題なく2バイト文字は表示されています.そのhtmlファイルの記述に下記設定をしています. <META HTTP-EQUIV='Content-Type' CONTENT='text/html;CHARSET=Shift_JIS'> CHARSET=Shift_JISの部分の指定をいろいろ替えました変化ありません. なにかこのようなことで知ってる方教えてください. また文字コードの制御,フォームとCGIのデータのやりとりなどがわかるサイトや書籍を知ってましたら併せて教えてくださるとありがたいです. よろしくお願いします.

    • 締切済み
    • CGI
  • エンコードをEUC-JP⇒ShiftJISに変えたい

    モバイル用サイトをEUC-JPで作ってしまったので、Shift-JISに変えたいのですが、 どのように変えれば良いのでしょうか? PHP、MySQLの設定ではEUC-JPです。 METAタグでShift-JISに変えてみましたし、 PHPでエンコーディングをShift-JISに設定したのですが、変わりません。 -------------------------------------------------------------- <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> mb_internal_encoding("SJIS"); -------------------------------------------------------------- また一から作り直すしか術はないのでしょうか・・・?

    • 締切済み
    • PHP
  • Safariの不具合について(僕だけ??)

    お世話になります。 OSXに移行してからSafariをメインに使用しております。 ほとんどのページに不具合はないのですが 一部のページで不具合があります。 しかし、これらが開けないという話はあまり聞きません。 もしかして私だけなのでは?と思う次第です。 不具合は以下のものです。 1. ユーザーID、パスワードを入力して初めて開くページが開かない。 (というか入力ダイヤログそのものがでてこない) 例えば http://home.linkclub.or.jp/ でも同じエンジンのシイラでは見れます。 2. ヤフージャパンのページが非常に開きにくい。 トップページ右側のトピックがかなりの確率で欠落する。 また、そのリンクが非常に開きにくい(リロードを何度もすると開ける) 現在これらのページを開くときはIEを使ってますが できればSafariだけで済ませたいのです。 なにか方法はあるのでしょうか?

    • ベストアンサー
    • Mac
  • 文字化け

     英語が混じった日本語のページを、ドメイン名が.jpで終わらない海外のサイトに置いたのですが、Safari, Netscape, IEのどのブラウザを使っても文字化けしてしまい、強制的にシフトJISにしてやらないと、思ったように表示されません。何が悪いのでしょうか。そのページの先頭には、以下のように書き込んでいますが、何か問題があるのでしょうか? <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS">

    • ベストアンサー
    • HTML
  • パスワード入力フォームのガイドの制作するには・・・?

    入力フォームにデフォルト値でガイド的な文字を入れ フォームクリックでガイド文字が消え、入力できるようになるものを 作りたいのですが input type="text" のフォームはできましたが input type="password" のフォームに実装すると ガイド文字も●●●●と表示されてしまいます。 これを制作するのは無理なのでしょうか? 以下はサンプルで作ったソースです。 ------------------------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>テスト</title> </head> <body> <div class="id_box"><input type="text" name="id" onfocus="if (this.value == 'アカウントID') this.value='';" value="アカウントID"></div> <div class="pw_box"><input type="password" name="pass" onfocus="if (this.value == 'パスワード') this.value='';" value="パスワード"></div> </body> </html> ------------------------------------------------------------------- たぶんjavascriptだと思うのですがよろしくお願いします。

  • 作成したホームページのエンコードを変更したい

    ジオシティにサイトを作成中なのですが、トップページが表示されません。「表示」でエンコードをEUCにすると見えるようになるのですが、ほかのコンテンツはすべてSHIFT_JISで見えるようになってますし、なんとかトップページもShift_JISで表示させたいのですが。 一応<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> というタグもはってあるのですが… どなたかお教えください。

  • フォームで送られたデータのキャッシュを消したい。

    最近phpを始めたばかりの初心者です。 簡易的なアクセス認証?のようなものを作っています。 実行すると、フォームが現れ、パスワード「12345」を入れると includeのindex.incを表示し、 パスワードが合っていなければ「パスワードが違います」と表示させるように以下のコードを書きました。(かなり稚拙なコードで見難いとは思いますが。。) <?php $pass = $_POST['pass']; if ($pass=="12345"){ include("index.inc"); exit; }elseif ($pass!="12345"){ echo 'パスワードが違います'; }else{ echo ' <form method="post" action="'; echo $PHP_SELF; echo '"> <input type="password" name="pass"></form> パスワードを入れてください'; }?> で、一応は動作するのですが、ページをリロードさせるとブラウザから「フォームのデータを再送信します」旨のアラートが出ます。 ここで困っています。 パスワードを間違った場合、ブラウザのバックで戻る事で、入力フォームには戻れますが、もしそのままリロードしてしまうと、誤ったデータがキャッシュに入ったまま再入力されてしまい、再度このphpに戻っても「パスワードが違います」という表示のままになってしま、フォームが現れません。 また、一旦ページを閉じたり、別のページに飛んでも、このphpに入ったときには再度パスワードを入力させたいと思います。 ブラウザのキャッシュに問題があると思い、 <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-control" CONTENT="no-cache"> <META http-equiv="Expires" content="0"> を追加してみたのですが、うまく行きません。 どのようにしたら良いのでしょうか? なるべく簡易的なものを考えています。 が、やはりセッションなどを使う事になるのでしょうか。。

    • ベストアンサー
    • PHP
  • 携帯から日本語をフォーム送信→展開に失敗?

    docomo、AUの端末(全端末を試したわけではないのですが)では大丈夫で、 vodafoneの端末のみ、EUC-JP のhtmlからpostにて日本語を送信すると、 遷移後のページで送信されたものを表示しようとすると 「??」と、化けてしまっているのかそう表示されてしまいます。 ・PHPのバージョンは、4.3.10です。 ・1バイト文字ではOKでした ・メタタグ <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> を <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> に、 「htmlもphp(php自体の文字コードも同時に変えています)もどちらも変えてみる」 「htmlだけ変える」 「phpだけ変える」 の3パターンを試してみたのですが、どれも結果は同じでした。 web上を検索して出てきた、フォームのサンプル(ただしソースは無い) http://www.sokudoku.gr.jp/i/form.html を携帯に送って確認したのですが、このページでは文字化けは起こりませんでした。 なので、何かしらの解決方法はあるはずなのですが・・。 PHP側で、フォームから入力された文字を mb_convert_encodingなどで変換しているのでしょうか? どなたかこの問題に対してご経験がある方、ご存知なかたがいらっしゃいましたら、 どうかご教授いただけますよう、よろしくお願い致します。

    • 締切済み
    • PHP