Shadowboxのバグ ( IEで中央に表示されずにずれてしまう )
Shadowboxはcssでposition:fixed;にして
常に真ん中に表示されるようになっています。
しかしIE6ではfixedが使えないため
positionをabsoluteにして
スクロールやリサイズがあった度に
位置をしていています。
var centerVertically = function(){
var shadowbox = SL.get('shadowbox');
var scroll = document.documentElement.scrollTop;
var s_top = scroll + Math.round((SL.getViewportHeight() - (shadowbox.offsetHeight || 0)) / 2);
SL.setStyle(shadowbox, 'top', s_top + 'px');
};
上にあるのが該当部分のソースなのですが、
これでは十分ではありません。
compatModeによっては
スクロールの位置を取得できません。
var scroll = document.documentElement.scrollTop;
ここを
var scroll = (document.body.scrollTop || document.documentElement.scrollTop);
このように変更することで
ドキュメントのタイプ宣言にかかわらず
ボックスを画面の中央に表示させる事ができるようになります。
shadowbox.jsに記述されている
という部分は全て
document.documentElement.scrollTop
と書き換えてください。
(document.body.scrollTop || document.documentElement.scrollTop)
phpで ’文字列’ == 0 が 真になる件
phpで
if ( '文字列' == 0 ) {
echo '真';
}
とすると真になって
if分が評価されてしまいます
ビックリ
文字列が数値にキャストされて
intval('文字列'); //数値0になる
intval('123文字列'); //数値123になる
文字列が数値の0になり
予期しない結果となる
数値と文字列の比較では
数値が文字列にキャストされるものとばかり
思っていました
MDB2の複数のデータベースの同時接続
同時接続時に同じユーザーだとリソースが一つになってしまう。
違うデータベースを指定しているのにそれが認識されずに
最後にconnectしたデータベースが使用されるのだと思う。
ユーザーがハンドリングできるデータベースは同時に一つという設定になっているのだろうか(mysql)
phpできれいにセッション管理
phpでセッションを使うときに
注意しないと
サーバやクッキーの変数が残ったままになってしまいます。
セッション変数はファイルで保存されており
サーバ上の/tmpディレクトリ等に作られます。
session_destroyで
現在のsession_idで参照できるセッション変数は消えます。
session_cache_limiterや
session_cache_expireの設定次第では
セッション変数はかなりの期間存在し続けます。
削除はガベージコレクションが管理しており
1/1000等の確率で期限切れの全セッション変数が消えます。
session_idはcookieにも書かれます。
これはsession_destroyしただけでは消えてくれません。
setcookieでsession_nameを指定して明示的に消す必要があります。
ブラウザ終了までの寿命のセッションの場合は
必ずsession_set_cookie_paramsとsetcookieを併用する必要があります。
防犯用ニセテレビFakeTV
こういうアイディアがすばらしいと思う。
自分が直接影響を受けるものではなくて、
自分の部屋で自分の所有物のように扱われるものなのに
外向けに使われるものであって、
しかもそれがFake。
必ずしも効果がある訳ではない。
それでも尚、魅力的なのは何故だろう。
ということをもうちょっと掘り下げて考えたいですね。
apacheのmod_rewriteでURLの最後のスラッシュを補完
以下を.htaccessに記述
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [L,R]
URLがファイル名だと推測される場合
(最後の/以下のURLに.が含まれていた場合)
にはスラッシュの補完をしないようにしています。