2007年12月25日

HTTPヘッダについて(Expires)

PDFファイルダウンロードDE表示ファイルダウンロード処理でのHTTPヘッダについて、いくつかメモ。

"Expires: 0"については、以下を参照としています。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
>HTTP/1.1 clients and caches MUST treat other invalid date formats, especially including the value "0", as in the past (i.e., "already expired").

Expiresには、日付だけでなく「期限切れ」を表す"0"を設定することもできるとのことですね。

ただ、safariは"Expires: 0"の記述に対応していないという、不穏な噂があるような、ないような猫

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 20:51| Comment(0) | TrackBack(0) | 技術メモ

2007年12月23日

PHP+MySQLでの文字エンコーディング設定

UTF-8で統一します。

HTMLファイルのエンコードを以下のように設定します。
HTMLからPHPに渡されるデータはUTF-8になります。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

さらにmy.cnf(my.ini)に以下のように設定を行います。init_connectを設定することで、クライアントから"SET NAMES utf8"を実行したのと同じことになります。つまり、クライアント→サーバのデータのエンコーディングがUTF-8であることを示します。

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect="SET NAMES utf8"

もしくは、

[mysqld]
default-character-set=utf8
init_connect="SET NAMES utf8"



他に"skip-character-set-client-handshake"というパラメータもあります。これは、クライアントからの文字エンコード指定を無視することになり、もし設定するとinit_connect="SET NAMES utf8"の意味がなくなるので、注意猫

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 12:47| Comment(0) | TrackBack(0) | 技術メモ

2007年12月20日

XAMPPをデフォルトインストールでPHPでMySQLでエラーへの対処

「Fatal error: Call to undefined function mysql_connect() in 」

PHPから、mysql_connect()を呼び出そうとして時に↑のようなエラーが出た場合の確認ポイントです。

・phpinfo()の結果にMySQLのセクションがあるか?
・C:\xampp\apache\logs\error.logの内容
・C:\xampp\apache\bin\php.ini
→ extension_dir = "C:\xampp\php\ext\" となっているか?
→ extension=php_mysql.dll となっているか?
→ extension=php_mysqli.dll となっているか?
→ include_path = ".;C:\xampp\php\pear\"のようにダブルクオートでちゃんと閉じられているか?
・C:\xampp\apache\binにlibmysql.dllがあるか?
・C:\xampp\php\extにphp_mysql.dll、php_mysqli.dllがあるか?

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 23:14| Comment(0) | TrackBack(0) | 技術メモ

2007年12月18日

Fedora8にPuTTYで接続してviでUTF8データを見る。

PuTTYで以下のようにキャラクタ設定を行います。

fedora_utf8_01.jpg

↓のようにマルチバイトのディレクトリ名をちゃんと見れます。

fedora_utf8_02.jpg

さらにログインユーザのホームディレクトリに以下の内容の".vimrc"というファイルを作成します。

set fileencodings=iso-2022-jp,euc-jp,cp932,utf-8,latin1
set number
set tabstop=4

viエディタでUTF-8エンコードのファイルを文字化けせずに見ることができます。


posted by 台北猫々 at 20:59| Comment(0) | TrackBack(0) | 技術メモ

2007年08月29日

prototype.jsによるAjaxメモ

prototype.jsをインクルードして、以下のようなラッパー関数を定義します。IEの場合、requestHeadersを以下のように設定しないとキャッシュが働いてしまい、サーバまでリクエストが届かなくなってしまいます。

function AjaxWrapper( url, params, callback ) {
var ajax = new Ajax.Request(url,
{
onSuccess : callback,
onFailure : reportServerError,
onException : reportException,
parameters : params,
method : 'post',
asynchronous: true,
requestHeaders:['If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT']
}
);
}

// Callback Function For Ajax
function receiveResponse(res) {
$('対象オブジェクト名').innerHTML = res.responseText;
}

function reportServerError(res, json) {
alert("Sorry, Server Error.[" + res.statusText + "]");
}

function reportException(request, e) {
alert("Sorry, Exception.[" + e.message + "]");
}
そして、
例えば、こんな感じに呼び出します。

AjaxWrapper("http://xxx.xxx/xxx.php", "param1=aaa&param2=bbb", receiveResponse);

HTMLの対象オブジェクトにAjaxしたレスポンスデータが入力されます。

posted by 台北猫々 at 21:28| Comment(0) | TrackBack(0) | 技術メモ

2007年08月09日

PHPフレームワーク Mapleの良いところ1つ

良いところ1つ。
リクエストパラメータの受け渡しが簡単。

【HTML側】
< input type=text name='req_value' value='内容'>

【PHP(アクションクラス)側】
/* Mapleフレームワークのアクションクラス */
class Sample {
public $req_value;
public function execue() {
echo $this->req_value; /* 「内容」と表示される。*/
return "success";
}
}

HTML上のパラメータ名とアクションクラスのパラメータ名を合わせておけば、そのままインジェクションされるという手軽さ。もちろんリクエストパラメータが配列でもOK。

オブジェクト指向的には、$req_valueをpublicにするのは問題ありかもしれないですが、フレームワークのみが入力すると考えればありかなと思います。

なにしろ、フレームワークに使わすためだけにsetter, getterを用意するのはナンセンスです。

こういう柔軟さ、好きです猫
posted by 台北猫々 at 21:16| Comment(0) | TrackBack(0) | 技術メモ

2007年08月03日

ZendFrameworkでちょっと遊んでいます。

WebサービスのRESTのクライアント機能があったので試してみました。RESTでPOSTリクエストを手軽にできる方法がないかなと思っていたので結構ヒットです。

以下ではライブドアの天気情報Webサービスをお借りしています。リクエストパラメータは"city"と"day"です。GETでもPOSTでも使えます。

$resultのアクセスの仕方が、初め分かりづらかったのですが、慣れると楽チンです。猫


<?php
require_once 'Zend/Rest/Client.php';

$client = new Zend_Rest_Client('http://weather.livedoor.com/forecast/webservice/rest/v1');
$client->city("107"); //リクエスト:地域コード
$client->day("today");//リクエスト:いつの天気か
$result = $client->get();
//$result = $client->post();
echo $result->author() . "<br>";
echo $result->image->title . "<br>";
foreach($result->location->attributes() as $a => $b) {
echo $a,'="',$b,"\"<br>";
}
?>
posted by 台北猫々 at 22:15| Comment(0) | TrackBack(0) | 技術メモ