2007年11月14日水曜日

 

IEでのJavascriptの動作


<img src="" onClick="" />

IE 6ではIMGタグにスクリプトは適用されない。FirefoxOperaは動作。


<span onClick="" ><img src="" /></span>

SPANを使って実現。
また、IEではdisplay要素が適用されないタグがいくつかある。OPTIONタグとか。

ラベル: ,


2007年11月13日火曜日

 

PEAR::Auth認証とログアウト


<?
  require_once("Auth/Auth.php");

  session_cache_limiter("nocache");
  session_cache_expire(30);//キャッシュの有効期限*
  session_start();*
/*       Pear::Auth認証時に呼び出す関数      */
  function loginFunction($usr,$status){
    switch($status){
      case AUTH_IDLED:
      case AUTH_EXPIRED:
           echo "認証期限が切れました。
再ログインして下さい。"
; break; case AUTH_WRONG_LOGIN: echo "USER ID / PASSWORD が間違ってます。"; break; default: break; } } /* 認証に使われるパラメータ */ $params=array( "dsn"=>"mysql://user:password@localhost/database",//DBの種類://DBユーザ:DBパス@DBサーバ名/DB名 "table"=&gr;"table",//ログインのIDとパスワードがあるDBテーブル "usernamecol"=>"username",//ID入力フォーム "passwordcol"=>"password",//パスワード入力フォーム "db_fields"=>"*"//DBテーブルのフィールド ); $myAuth=new Auth("DB",$params,"loginFunction"); /* ログアウト処理 */
if($_POST["logout"] && $myAuth->checkAuth()){ $myAuth->logout(); $_SESSION=array();//セッションを初期化* /* セッションクッキーを無効にする */ if (isset($_COOKIE[session_name()])) { setcookie(session_name(), "", time()-42000, "example.com/admin/"); } session_destroy();//セッションを破壊* echo "ログアウトしました"; }
$myAuth->start(); /* ログイン処理 */ if($myAuth->getAuth()){ $_SESSION["username"]=$myAuth->getAuthData("username");* $_SESSION["id"]=$myAuth->getAuthData("id");* session_write_close();//セッションに保存* }else { //ログイン画面の表示とか } ?>

PEAR::Authを使った認証のプログラムは、他のサイトやマニュアルでも一緒だと思います。
ログアウトに関しては検索しても見つかりません。PEAR::Auth->logout()を呼び出しただけでは意味がなく、セッションを使っていればセッションデータとクッキーを消去しなければいけません。
また、session_cache_limiter("nocache")の設定がなされていないとログアウトした後もブラウザの戻るボタンでキャッシュが表示されてしまいます(デフォルトの設定では大丈夫)。
*がついてる行は直接Auth認証には関係有りません。

参考書

PEAR入門 PHP標準ライブラリを極める!
PEAR入門 PHP標準ライブラリを極める!

ラベル: ,


2007年11月7日水曜日

 

【SQL】日本語検索が上手くいかない時【BINARY】

データベースで日本語を扱う時、条件を指定して検索結果が想定した通りにならないときがある

SELECT * FROM table_name WHERE name LIKE '%山%'

table_name から name に山の文字を含むデータを抽出するSQL文。LIKE によるあいまい検索。ワイルドカード0文字以上のあらゆる文字を表す。

UTF-8マルチバイト文字列を扱う時に生じると思われるが、条件を満たしているデータが検索にヒットしない場合がある。
次のようなSQL文にすると望む結果が得られる。
SQL文が間違っていなければ

SELECT * FROM table_name WHERE BINARY name LIKE '%山%'

ラベル: ,


2007年11月1日木曜日

 

ブラウザ表示のフォントサイズ変更を調べて、その値を表示するJavascript関数。

参考リンク
ファイルのダウンロードはページ下のThat’s it!からZIP形式

以下のスクリプトファイルを読み込んで使用。


<script type="text/javascript" src="textresizedetector.js"></script>

このスクリプトを使ったフォントサイズ変更時に実行される関数 onFontResize()初期関数 init()


function init()  {
  var iBase = TextResizeDetector.addEventListener(onFontResize,null);
  alert("The base font size = " + iBase);
}
function onFontResize(e,args) {
  var msg = "\nThe base font size in pixels: " + args[0].iBase;
  msg +="\nThe current font size in pixels: " + args[0].iSize;
  msg += "\nThe change in pixels from the last size:" + args[0].iDelta;
  alert(msg);
}
//フォントサイズを調べる要素IDを与える
TextResizeDetector.TARGET_ELEMENT_ID = 'header';
//初期関数を与える
TextResizeDetector.USER_INIT_FUNC = init;

HTMLソース。スクリプトに与えるIDを付ける。


<body id="header">
<h1>Resize me, now!</h1>
</body>

demo page

ブラウザ毎に異なるフォントのリサイズ値を指定してデザインの崩れを防げそう。ユーザには不自由だけど。

ラベル:


This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google