Author Archive

IEでクッキー書き込みできない件


         ,. -‐””'””¨¨¨ヽ
         (.___,,,… -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『InternetExplorerで開発中サイトの管理画面にログインしようと
        i|:!ヾ、_ノ/ u {:}//ヘ        思ったらいつのまにかログイン画面に飛ばれされていた』
        |リ u’ }  ,ノ _,!V,ハ |
       /´fト、_{ル{,ィ’eラ , タ人        な… 何を言ってるのか わからねーと思うが
     /’   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった…
    ,゙  / )ヽ iLレ  u’ | | ヾlトハ〉
     |/_/  ハ !ニ⊇ ’/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7’T” /u’ __ /:::::::/`ヽ
   /’´r -―一ァ‐゙T´ '”´ /::::/-‐  \    セッションの設定だとかブラウザのゾーン設定だとかプライベートモードだとか
   / //   广¨´  /’   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ‘ /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::…       イ  もっと恐ろしいものの片鱗を味わったぜ…

 

 事件は夏の暑い日に起こった。
 テスト機に上げ、大詰めのシステムテストを行っていたさなか突然メッセンジャーの受信を告げる音が鳴る。
 <IEで管理画面入れますか?>
 そんな馬鹿な。
 サーバの設定差異は既に調査している。ましてやブラウザ互換などその前のテストフェイズで確認済みなはずだ。
 聞くとセッション切れ時のメッセージと共にログイン画面へ飛ばされると言う。
 早速確かめてみるとたしかに何度やってもログインできない。バージョン6、7、8いずれも同じ現象。他のブラウザは入れるのである。
 別のプロジェクトとして切り分けられている利用者側も入力情報が保持されていないので、セッションに問題がある事は容易に予想がついた。
 アドレスバーに

javascript:document.cookie;

と打ち込みEnterを叩いてみると何も表示されない。
 これはクッキーが入っていないかセキュアフラグの付加されたクッキーを非SSL時に見た時に起こる。
 私は念のためphp.iniに設定がないことを確認し、.htaccessのクッキーセキュアフラグをoffにした。

php_flag session.cookie_secure off

 ブラウザのクッキーも削除し、再度管理画面へログインするがやはり結果は同じ。
 (さてはIEまた何かやらかしたか)
 疑いとわずかな期待を抱きつつグーグル先生で検索をかけてみる。
 最初は今回の件とは関係のない問題があがっていたがキーワードを色々変えているうちにこんなものを見つけた。

http://support.microsoft.com/kb/316112/ja
 

原因
セキュリティ修正プログラム MS01-055 では、不適切な構文を使用した名前のサーバーは Cookie 名を設定できません。Cookie を使用するドメインでは、ドメイン名およびサーバー名に英数字 (“-” または “.”) だけを使用しなければなりません。サーバー名にアンダースコア (“_”) など、その他の文字が含まれている場合、Internet Explorer は Cookie をブロックします。
 

ASP のセッション状態とセッション変数の機能は Cookie に依存しているため、クライアント上に Cookie を設定できない場合、ASP は要求間でセッション状態を維持できません。
 

この問題は、ホスト ヘッダ内の不適切な名前構文が原因の場合もあります。
 

解決方法
この問題を回避するには、次の方法のいずれかを使用します。
•   ドメインとサーバーの名前をを英数字だけを使用する名前に変更する。
•   ドメイン名やサーバー名ではなく、インターネット プロトコル (IP) アドレスを使用してサーバーを参照する

 どうやら原因はサブドメインに「_test」を付けてテスト環境を作っていたからで、ドメイン名の中のアンダースコア(検索用:アンダーハイフン)はRFC規約違反らしい。
 報告してドメインを変更してもらうとIEでも問題なくログインできるようになった。
 プロジェクト周辺の人はだれも知らなかったので実は知らない人割と多いのではないだろうか。
 クライアント側の仕様を把握しきれていないのがwebの怖いところだと私は思う。

みんなも気を付けてね。

【正規表現】精度の割と高いメールアドレスチェック

正規表現3分間クッキング。

 

本日のメニューは、春らしい正規表現を使ったメアド判定です。

 

まずは材料から。

 

~ ローカル部 ~
 

これは@の左側の部分ですね。
以下のようになっております。

  • 英数字
  • ! # $ % & ' * + - / = ? ^ _ { | } ~
  • .(先頭と末尾以外で使用可能。2個以上連続してはならない)

(携帯電話やdionメールなどは連続ドット、@前ドットがあり得る)
 

~ ドメイン部 ~
 

つづいて@の右側部分になります。

  • 英数字、-(先頭以外で使用可能)から成るサブドメインを”.”でつないだもの

 

前述したように、
中にはRFCのルールを無視したアドレスも存在しますがとりあえずPC用

1.まず先頭から末尾まですべてマッチさせるため^と$を入れます。

/^@$/

 2.次に使用可能文字や連続などを踏まえて……

 

出来たものがこちらになります。

/^[\w!#$%&'*+/=?^_{}\\|~-]+(\.[\w!#$%&'*+/=?^_{}\\|~-]+)*@([\w][\w-]*\.)+[\w][\w-]*$/

 

 

少しでも規則に外れようもんなら拒否するとても辛い味に仕上がりました。

こんなの作るのに3分以上掛ったのは番組の仕様です。

 
 

  

おまけ:

携帯などの連続ドットや@前ドットを許可するならこれ。

/^[\w!#$%&'*+/=?^_{}\\|~-]+([\w!#$%&'*+/=?^_{}\\|~\.-]+)*@([\w][\w-]*\.)+[\w][\w-]*$/

webブラウザたちの集い

IE6 さん の発言:
 なんか最近俺だけハブられてる気がするんだけど…
Firefox3.5 さんの 発言:
 キノセイ
Safari4.0 さんの 発言:
 オンリーワンと思えばおk
IE6 さんの 発言:
 お前は元々一匹狼だろ、一緒にすんなよ。
 なぁクロム、お前はどう思うよ。
Chrome3.0 さんの 発言:
 すいません、最近父さんに6さんとはあんま仲良くすんなって言われてるんスよ
 SEも6さんと関わるとなんか面倒らしいッスよ(´δ`)
IE6 さんの 発言:
 新入りのくせに偉そうだな。
 そういうことはシェアで俺に勝ってから言えよ。
Opera10.0 さんの 発言:
 まぁまぁ、6さんもそんなに興奮しないで
 これからはモバイルと家電の時代ですよ
 時代の変化に合わせて体系は変えていくものです
IE6 さんの 発言:
 たしかにお前の変わり身具合には脱帽するよ…
IE8 さんの 発言:
 なんか面白そうな話してますね( ´∀`)
IE6 さんの 発言:
 おう、弟よ。お前からもなんか言ってやってくれ。
 俺はまだまだ現役だってな。
IE8 さんの 発言:
 ―― IE6終了のお知らせ ――
Safari4.0 さんの 発言:
 8は早くアップデートして欲しいんだとよww
Firefox3.5 さんの 発言:
 今時タブもないなんてねぇ( ´,_ゝ`)プッ
Chrome3.0 さんの 発言:
 新しいウィンドウって発想自体時代遅れッスよね
IE6  さんの 発言:
 いいもん、まだシェア一位だもんっヽ(`Д´)ノ
 せいぜい苦労するこったな開発者よ フヘヘ

 


という夢をみたんだ。 

 

googleは今年に入ってIE6のサポートを段階的に終了していくと発表したそうです。

アメリカではとあるデザイン会社がブログ上でIE6葬儀の動画をあげたそうです。 

 

まぁデザイン崩れもそうだが、
DOM(DocumentObjectModel)の違いも大きいですよね。

ものによっては対応させられなくないが余分に時間が掛かりそうです。

 

みなさんはIE6対応は視野に入れていますか?