配列の内容を文字列ではなく数値としてソートするには以下のようにします。
array.sort(comparator);
function comparator(value1, value2) {
var index1 = parseInt(value1);
var index2 = parseInt(value2);
return index1 - index2;
}
比較関数(上記の場合はcompareator関数)を入れ替えることにより、色々な順序や方法でソートすることができます。
カテゴリ : JavaScript | コメント(0)
SSLを考えずに作られているページを、.htaccessだけの変更でSSL対応する方法をご紹介します。
もちろん、サーバがSSLに対応している必要はありますが…。
さらに.htaccessとmod_rewriteが入っている必要もあります。
SSLページにしたいHTMLファイル(PHP等でも可)のあるディレクトリに.htaccessファイルを作成し、下の文を追加します。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
ファイルを個別に指定したい場合はちょっと面倒ですが下記のようにします。
ここでは例としてfoo.htmlとbar.htmlをSSLページとし、それ以外はSSLでないページとします。
RewriteEngine on
RewriteCond %{REQUEST_URI} .*/foo.html$ [OR]
RewriteCond %{REQUEST_URI} .*/bar.html$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{REQUEST_URI} !(.*/foo.html$)
RewriteCond %{REQUEST_URI} !(.*/bar.html$)
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
(2007/10/31追記)
RewriteEngine on の記述が抜けていたので追記しました。指摘してくださったタルさん、ありがとうございました。
カテゴリ : HTTP | コメント(8)
レンタルサーバ等でPEARがインストールされておらず、またルート権限が使えないために新たにインストールできないときは、インクルードパスに自分が管理できるディレクトリをset_include_path関数で追加します。
やり方は以下のとおり。
1.プログラム内で自分の管理するディレクトリをインクルードパスに追加する
(例:set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . “/lib”);)
2.PEARのページ(http://pear.php.net/)から必要なパッケージをダウンロードする
(依存関係があるパッケージも全てダウンロードする)
3.1で追加したパスにダウンロードしたPEARパッケージのファイルをアップロードする
これでOKです。
カテゴリ : PHP | コメント(0)
プログラムによって作成したCSVデータなどをダウンロードさせたい場合、デフォルトのファイル名は呼び出されたURLのファイル名になり、xxx.php等になってしまいます。
これを指定したファイル名にしたい場合はHTTPレスポンスのヘッダに、”Content-Disposition”を指定します。
例えばPHPでしたら以下のようになります。
header(”Content-Disposition: attachment; filename=\”fname.ext\”;”);
参考;
Studiying HTTP
カテゴリ : HTTP | コメント(0)
PHPの最新メジャーバージョンが5になってから結構経ちますが、まだPHP4が多く使われているように思います。
PHP5とPHP4では完全な互換がないことはよく知られていますが、PHP5をPHP4互換モードとして動かすことができるのはご存知でしょうか。
この設定はphp.iniだけでなく.htaccessで指定できるので、環境を混在させるときに便利です。
.htaccessで設定するときは以下のように記述します。
php_flag zend.ze1_compatibility_mode On
これを設定すると、『Zend Engine 1 (PHP 4) との互換モードを有効にします。 この設定は、オブジェクトのコピー、キャスト (プロパティを 保持しないオブジェクトが FALSE あるいは 0 のいずれになるか)、 そして 比較 に影響を与えます。このモードの場合、オブジェクトを渡す際の デフォルトの方法は、参照渡しではなく値渡しとなります。』だそうです。
参考:
コア php.ini ディレクティブに関する説明
カテゴリ : PHP | コメント(0)
PHPはデフォルトでは、リクエストの入力にクォーテーション(’)、ダブルクォーテーション(”)、バックスラッシュ(\)がある場合に、自動的に前にバックスラッシュ(\)が付加されます。
これはセキュリティ上あったほうがいいのですが、自分でサニタイジングしたい場合に結構邪魔だったりします。
そんなときは.htaccessに
php_flag magic_quotes_gpc Off
と記述すると自動エスケープを抑制することができます。
参考:
PHP オプションと情報(info)
カテゴリ : PHP | コメント(0)
携帯用サイトを作るときなど、表示用の文字コードと内部の文字コードを別にしたい場合があります。このような時、下記のような設定を.htaccessに記述するとPHPが自動的に変換してくれます。
php_flag output_buffering On
php_value output_handler mb_output_handler
php_value default_charset UTF-8
php_value mbstring.language Japanese
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output UTF-8
php_value mbstring.internal_encoding UTF-8
php_value mbstring.substitute_character none
ここでの各項目の意味は次のようなものになるようです。文字コードを指定する箇所は”UTF8″、”EUC-JP”、”SJIS”等を記述します。ただし、default_charseにシフトJISを設定する場合は”Shift_JIS”にしたほうがいいかも。
| output_buffering |
出力バッファリングの有無 |
| output_handler |
スクリプトの全ての出力を関数にリダイレクトすることがでる
ここにmb_output_handlerを設定すると自動変換してくれる |
| default_charset |
HTTPのContent-typeヘッダで出力する文字コード |
| mbstring.language |
mbstringで使用される言語のデフォルト値 |
| mbstring.encoding_translation |
HTTP入力文字エンコーディング検出および内部文字エンコーディングへの変換を行うか |
| mbstring.http_input |
HTTP入力文字エンコーディングのデフォルト値 |
| mbstring.http_output |
HTTP出力文字エンコーディングのデフォルト値 |
| mbstring.internal_encoding |
内部文字エンコーディングのデフォルト値 |
| mbstring.substitute_character |
無効な文字を代替する文字 |
参考:
マルチバイト文字列関数(mbstring)
コア php.ini ディレクティブに関する説明
カテゴリ : PHP | コメント(1)
IE6には標準準拠モードと後方互換モードの2種類のモードがあり、何もしないと後方互換モードになっています。この後方互換モードが標準に準拠して いないため、標準に準拠しているFirefox等と表示が違ってしまう原因になっています。 IE6で標準準拠モードにするには、HTMLにDOCTYPEを宣言する必要があります。
DOCTYPE宣言の構文とIEのモードをまとめました。
| バージョン |
!DOCTYPE宣言 |
IEのモード |
|
宣言なし |
後方互換 |
| HTML 4.01 |
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”> |
標準準拠 |
| HTML 4.01 Strict |
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”> |
標準準拠 |
| HTML 4.01 Transitional |
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”> |
後方互換 |
| HTML 4.01 Transitional |
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> |
標準準拠 |
| HTML 4.01 Frameset |
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN”> |
後方互換 |
| HTML 4.01 Frameset |
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” “http://www.w3.org/TR/html4/frameset.dtd”> |
標準準拠 |
| XHTML 1.0 Strict |
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> |
標準準拠 |
| XHTML 1.0 Transitional |
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> |
標準準拠 |
| XHTML 1.0 Frameset |
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”> |
標準準拠 |
| Compact HTML 1.0 |
<!DOCTYPE HTML PUBLIC “-//W3C//DTD Compact HTML 1.0 Draft//EN”> |
— |
カテゴリ : HTML+CSS | コメント(0)
PHPでHTTPリクエストのメソッドが何であるかを判定するためには、
$_SERVER[”REQUEST_METHOD”]
に格納されている文字列を使用します。
(例)
if ($_SERVER[”REQUEST_METHOD”] == “GET”) {
// コンテンツの表示処理
} elseif ($_SERVER[”REQUEST_METHOD”] == “POST”) {
// コンテンツの更新処理
}
このようなメソッドの判定は、REST スタイルでプログラムする際に必要になります。
カテゴリ : PHP | コメント(0)