基本前のソースをコピペなので一向に覚えられない。
しかも、ソース探すのだるいので。
require 'Smarty/libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->template_dir = "./tpl/";
$smarty->compile_dir = "./template_c/";
require_once("init.php");
$page =isset($_REQUEST['page'])?intval($_REQUEST['page']) : 1;
header("location: tshirt.php");
$smarty->assign('type', $type);
$smarty->display('item.tpl');
$d =htmlspecialchars($_REQUEST['d']);
$infoXML = simplexml_load_file('info.xml');
$dateY = date("Y");
$smarty->assign("year", $dateY);
2009年5月7日木曜日
2009年4月13日月曜日
fusekitでテキストのfadeIn、fadeOut
今までダイナミックテキストをfadeIn、fadeOutできると思ってませんでした。
プロパティにある「フィルタ」で、
任意のテキストフィールドに「カラー調節」を追加することでできるようになる。
参考ブログ
bute_lab.
プロパティにある「フィルタ」で、
任意のテキストフィールドに「カラー調節」を追加することでできるようになる。
参考ブログ
bute_lab.
2009年4月10日金曜日
#includeに関して
今まで問題なくやってきたので、
相当いまさらだと思うがイライラしたんで。
flashの
#include "hogehoge.as"
でインクルードされるファイルはSHIT-JISじゃないと反応しないんすね。
20分はハマッた・・・。
相当いまさらだと思うがイライラしたんで。
flashの
#include "hogehoge.as"
でインクルードされるファイルはSHIT-JISじゃないと反応しないんすね。
20分はハマッた・・・。
2009年3月26日木曜日
読み込んだswfの_root
これ散々悩みましたが、
読み込む処理の後に、
_lockroot = true;
で解決した。
しかし、その後非常に重くなったのであまりよくないのかな?
「_lockroot 重くなる」などで調べても何も出てきませんでした。
別な策で、
読み込まれるswfの構造に工夫をして
_root.root_objを_rootのつもりにして、全てをroot_objの中で簡潔させる。
読み込み先のムービークリップを
load_objとしたら、
_root.load_obj.root_obj
ってなるようにする。
以下のようにしておけば、呼び出されているのかどうかで_rootを書き換えられるだろう。
function rootObj() {
if(_root.load_obj){
return eval(”_root.load_obj.root_obj”);
}else{
return eval(”_root.root_obj”);
}
}
例え)_rootの_visibleを制御する場合
rootObj()._visible = false;
読み込む処理の後に、
_lockroot = true;
で解決した。
しかし、その後非常に重くなったのであまりよくないのかな?
「_lockroot 重くなる」などで調べても何も出てきませんでした。
別な策で、
読み込まれるswfの構造に工夫をして
_root.root_objを_rootのつもりにして、全てをroot_objの中で簡潔させる。
読み込み先のムービークリップを
load_objとしたら、
_root.load_obj.root_obj
ってなるようにする。
以下のようにしておけば、呼び出されているのかどうかで_rootを書き換えられるだろう。
function rootObj() {
if(_root.load_obj){
return eval(”_root.load_obj.root_obj”);
}else{
return eval(”_root.root_obj”);
}
}
例え)_rootの_visibleを制御する場合
rootObj()._visible = false;
flashのローディングに関して
flashで_rootをローディングする際、
その処理を_rootのタイムラインに書いてしまうとうまくいかないようだ。
よく、「30%まで何も表示されないんですが」なんて質問は
リンケージの「最初のフレームに書き出し」と、これが問題なんじゃないかと。
_root.loading:MovieClipを作成して、
_root.loadingのタイムラインにローディングの処理を書くとうまくいきました。
_rootが_rootのローディングをするってのがおかしかったのか・・・
とりあえず、
_rootにムービークリップを作成して、
客観的にロードしなさいよとすれば問題なかったので、これでよし。
その処理を_rootのタイムラインに書いてしまうとうまくいかないようだ。
よく、「30%まで何も表示されないんですが」なんて質問は
リンケージの「最初のフレームに書き出し」と、これが問題なんじゃないかと。
_root.loading:MovieClipを作成して、
_root.loadingのタイムラインにローディングの処理を書くとうまくいきました。
_rootが_rootのローディングをするってのがおかしかったのか・・・
とりあえず、
_rootにムービークリップを作成して、
客観的にロードしなさいよとすれば問題なかったので、これでよし。
2009年2月27日金曜日
fuse kit FMPプロパティ 一覧
BlurFilter (ブラー)
| Blur_blurX | 0 ~ 255 | Xのぼかし量。2のべき乗は高速に最適化。(デフォルトは6)(浮動小数可) |
| Blur_blurY | 0 ~ 255 | Yのぼかし量。2のべき乗は高速に最適化。(デフォルトは6)(浮動小数可) |
| Blur_blur | 0 ~ 255 | XとYのぼかし量を同時に指定。 |
| Blur_quality | 0 ~ 15 | フィルタを適用する回数。1(LOW)/2(MEDIUM)/3(HIGH)(デフォルトは1) |
GlowFilter (グロー)
| Glow_color | 0xRRGGBB | グローのカラー。(デフォルトは0xFF0000) |
| Glow_alpha | 0 ~ 1 | カラーの透明度。(デフォルトは1) |
| Glow_blurX | 0 ~ 255 | Xのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| Glow_blurY | 0 ~ 255 | Yのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| Glow_blur | 0 ~ 255 | XとYのぼかし量を同時に指定。 |
| Glow_strength | 0 ~ 255 | インプリントの強さまたは広がり。(デフォルトは2) |
| Glow_quality | 0 ~ 15 | フィルタを適用する回数。1(LOW)/2(MEDIUM)/3(HIGH)(デフォルトは1) |
| Glow_inner | Boolean | 内側グロー/外側グロー(デフォルトはfalse) |
| Glow_knockout | Boolean | ノックアウト有り/ノックアウト無し(デフォルトはfalse) |
DropShadowFilter (ドロップシャドウ)
| DropShadow_distance | 0 ~ | シャドウのオフセット距離 (ピクセル単位) (デフォルトは4) |
| DropShadow_angle | 0 ~ 360 | シャドウの角度 (デフォルトは45) |
| DropShadow_color | 0xRRGGBB | シャドウのカラー。(デフォルトは0×000000) |
| DropShadow_alpha | 0 ~ 1 | カラーの透明度。(デフォルトは1) |
| DropShadow_blurX | 0 ~ 255 | Xのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| DropShadow_blurY | 0 ~ 255 | Yのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| DropShadow_blur | 0 ~ 255 | XとYのぼかし量を同時に指定。 |
| DropShadow_strength | 0 ~ 255 | インプリントの強さまたは広がり。(デフォルトは1) |
| DropShadow_quality | 0 ~ 15 | フィルタを適用する回数。1(LOW)/2(MEDIUM)/3(HIGH)(デフォルトは1) |
| DropShadow_inner | Boolean | 内側シャドウ/外側シャドウ(デフォルトはfalse) |
| DropShadow_knockout | Boolean | ノックアウト有り/ノックアウト無し(デフォルトはfalse) |
BevelFilter (ベベル)
| Bevel_distance | 0 ~ | ベベルのオフセット距離 (ピクセル単位) (デフォルトは4) |
| Bevel_angle | 0 ~ 360 | ベベルの角度 (デフォルトは45) |
| Bevel_highlightColor | 0xRRGGBB | ベベルのハイライトカラー(デフォルトは0xFFFFFF) |
| Bevel_highlightAlpha | 0 ~ 1 | ハイライトカラーの透明度。(デフォルトは1) |
| Bevel_shadowColor | 0xRRGGBB | ベベルのシャドウカラー(デフォルトは0×000000) |
| Bevel_shadowAlpha | 0 ~ 1 | シャドウカラーの透明度。(デフォルトは1) |
| Bevel_blurX | 0 ~ 255 | Xのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| Bevel_blurY | 0 ~ 255 | Yのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| Bevel_blur | 0 ~ 255 | XとYのぼかし量を同時に指定。 |
| Bevel_strength | 0 ~ 255 | インプリントの強さまたは広がり。(デフォルトは1) |
| Bevel_quality | 0 ~ 15 | フィルタを適用する回数。1(LOW)/2(MEDIUM)/3(HIGH)(デフォルトは1) |
| Bevel_type | String | 外側ベベル(outer)/内側ベベル(inner)/オブジェクトの上(full) |
| Bevel_knockout | Boolean | ノックアウト有り/ノックアウト無し(デフォルトはfalse) |
GradientGlowFilter (グラデーショングロー)
| GradientGlow_distance | 0 ~ | グローのオフセット距離 (ピクセル単位) (デフォルトは4) |
| GradientGlow_angle | 0 ~ 360 | グローの角度 (デフォルトは45) |
| GradientGlow_colors | [0xRRGGBB] | グラデーションを定義する色の配列。 |
| GradientGlow_alphas | [0 ~ 1] | colors 配列内の各色に対応する透明度の配列。 |
| GradientGlow_ratios | [0 ~ 255] | 配列内の対応する色の色分布比率の配列。 |
| GradientGlow_blurX | 0 ~ 255 | Xのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| GradientGlow_blurY | 0 ~ 255 | Yのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| GradientGlow_blur | 0 ~ 255 | XとYのぼかし量を同時に指定。 |
| GradientGlow_strength | 0 ~ 255 | インプリントの強さまたは広がり。(デフォルトは1) |
| GradientGlow_quality | 0 ~ 15 | フィルタを適用する回数。1(LOW)/2(MEDIUM)/3(HIGH)(デフォルトは1) |
| GradientGlow_type | String | 外側グロー(outer)/内側グロー(inner)/オブジェクトの上(full)(デフォルトはinner) |
| GradientGlow_knockout | Boolean | ノックアウト有り/ノックアウト無し(デフォルトはfalse) |
GradientBevelFilter (グラデーションベベル)
| GradientBevel_distance | 0 ~ | ベベルのオフセット距離 (ピクセル単位) (デフォルトは4) |
| GradientBevel_angle | 0 ~ 360 | ベベルの角度 (デフォルトは45) |
| GradientBevel_colors | [0xRRGGBB] | グラデーションを定義する色の配列。 |
| GradientBevel_alphas | [0 ~ 1] | colors 配列内の各色に対応する透明度の配列。 |
| GradientBevel_ratios | [0 ~ 255] | 配列内の対応する色の色分布比率の配列。 |
| GradientBevel_blurX | 0 ~ 255 | Xのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| GradientBevel_blurY | 0 ~ 255 | Yのぼかし量。2のべき乗は高速に最適化。(デフォルトは6) |
| GradientBevel_blur | 0 ~ 255 | XとYのぼかし量を同時に指定。 |
| GradientBevel_strength | 0 ~ 255 | インプリントの強さまたは広がり。(デフォルトは1) |
| GradientBevel_quality | 0 ~ 15 | フィルタを適用する回数。1(LOW)/2(MEDIUM)/3(HIGH)(デフォルトは1) |
| GradientBevel_type | String | 外側ベベル(outer)/内側ベベル(inner)/オブジェクトの上(full) |
| GradientBevel_knockout | Boolean | ノックアウト有り/ノックアウト無し(デフォルトはfalse) |
Fuse Kit : ショートカットプロパティ一覧
| _scale | 0 ~ | _xscaleと_yscaleを同時に指定。 |
| _size | 0 ~ | _widthと_heightを同時に指定。 |
| _frame | 0 ~ | ムービークリップのタイムラインの現在のフレームの値を指定/取得。 |
| _fade | 0 ~ 100 | 透明度の指定。 |
| _tint | 0xRRGGBB | カラーの指定。色の数値を返します。Number()を使って数値変換できます。 |
| _tintString | “0xRRGGBB” | カラーの指定。16進数文字列で返します。Number()を使って数値変換できます。 |
| _tintPercent | 0 ~ 100 | 事前に色変更されたターゲットの色のパーセンテージを指定/取得。 |
| _brightness | -100 ~ 100 | 明度の指定。-100(黒)/0(通常)/100(白) |
| _brightOffset | -100 ~ 100 | 焼き込み効果。-100(黒)/0(通常)/100(白) |
| _invertColor | 0 ~ 100 | ネガ効果。0(通常)/100(反転)。相対値できます。 |
| _colorReset | 0 ~ 100 | 色変化を、0(現状から変化なし)から、100(全てリセット)までの範囲でリセット。 |
| _contrast | 0 ~ 200 | コントラストの指定。0(グレー)/100(通常)/higher(200がコントラスト最大、higher にすると画像をポスタライズ)。相対値できます。 |
| _colorTransform | ra, rb プロパティ等の特定のカラートランスフォームオブジェクトの指定/取得。 |
2009年2月18日水曜日
fuse kit イージング
久々にflashいじってfuse kitの使い方を全部忘れた。
そして後半部はどういう具合に加減速するかを指定します。
何も適用しない場合
None.easeNone
イージング表
前半部には3種類
| easeIn | 動きの最初(In側)に効果を適応させる。 |
| easeOut | 動きの最後(Out側)に効果を適応させる。 |
| easeInOut | 動きの最初と最後両方(InOut)に効果を適応させる |
そして後半部はどういう具合に加減速するかを指定します。
| Sine | ゆるやかに(程度1) |
| Quad | ゆるやかに(程度2) |
| Cubic | ゆるやかに(程度3) |
| Quart | ゆるやかに(程度4) |
| Quint | ゆるやかに(程度5) |
| Expo | ゆるやかに(程度6) |
| Circ | 円っぽい増加!? |
| Elastic | 終点でバネのような動き。ビヨンビヨーン |
| Back | ちょっと行き過ぎて戻る動き |
| Bounce | 終点で跳ね返るような動き |
何も適用しない場合
None.easeNone
サンクスCBCNET, trick7
2009年1月30日金曜日
[IE6] javascriptでのformのsubmitで引っかかった。
firefox, safari, IE7で何の問題もなく動いていた、
javascriptでもformのsubmit。
とこんな感じで動かしていた。
実際は、二度押しなどしないようにフラグ立てたり、
入力文字列のチェックなどもろもろ。
IE6でなぜか動かないということで、試してみると
<input type="submit"> ○動く
<a href="#" onclick="document.formName.submit()">送信○動く
違いは何かというと、
<a href="javascsript:void(0);" onclick="submitCheck();return false;">送信</a>
void(0);が空を意味するなんて聞いたけど、
動いたのでこれでよし。
javascriptでもformのsubmit。
<a href="javascsript:void(0);" onclick="submitCheck() ;return false;">送信
とこんな感じで動かしていた。
実際は、二度押しなどしないようにフラグ立てたり、
入力文字列のチェックなどもろもろ。
IE6でなぜか動かないということで、試してみると
<input type="submit"> ○動く
<a href="#" onclick="document.formName.submit()">送信○動く
違いは何かというと、
<a href="javascsript:void(0);" onclick="submitCheck();return false;">送信</a>
void(0);が空を意味するなんて聞いたけど、
動いたのでこれでよし。
2008年12月11日木曜日
setTimeoutで引数が入った関数を呼ぶ
たぶん常識なんですかね?
ものすごく詰まったので、記載。
setTimeOutで10秒後にホゲホゲを繰り返すみたいなことをやりたくて、
単純に
var str = "文字列"
setTimeOut("hogehoge(" + str + ")",100);
でやっていたところエラーでつまりました。
俺としては
hogehoge(文字列)
をやってるつもりだったのだけれど、
実際には
hogehoge([HTMLDivElement])
が実行されていて、できませんよと。
setTimeoutで呼び出した場合、
オブジェクトとして扱われるのでホゲホゲなんで、
なんだか難しい説明がありましたが動いたから良しとした。
setTimeOut("hogehoge('" + str + "')",100);
のように変数をシングルで囲ってあげなさいと言われました。
参考
JavaScriptのsetInterval()に引数ありの関数を渡す場合
文字のフェードイン・フェードアウト
ものすごく詰まったので、記載。
setTimeOutで10秒後にホゲホゲを繰り返すみたいなことをやりたくて、
単純に
var str = "文字列"
setTimeOut("hogehoge(" + str + ")",100);
でやっていたところエラーでつまりました。
俺としては
hogehoge(文字列)
をやってるつもりだったのだけれど、
実際には
hogehoge([HTMLDivElement])
が実行されていて、できませんよと。
setTimeoutで呼び出した場合、
オブジェクトとして扱われるのでホゲホゲなんで、
なんだか難しい説明がありましたが動いたから良しとした。
setTimeOut("hogehoge('" + str + "')",100);
のように変数をシングルで囲ってあげなさいと言われました。
参考
JavaScriptのsetInterval()に引数ありの関数を渡す場合
文字のフェードイン・フェードアウト
2008年12月8日月曜日
初めてのjquery.js
おそらく一番使う使い方だけど、
まったく理解していないからわからなかったので、記載。
idの指定は$("#id_name")、クラスの指定は$(".class_name")
cssみたいで私たち半端ものには親しみやすい感じ。
jqueryで指定のdivの子要素にあたるclassの取得
$("#targetID").children(".targetClass");
これで取得したクラスのstyleを操作するには
$("#targetID").children(".targetClass").css("display", "block");
あーわかりやすすぎて、全然わかんなかった。
すばらしいリファレンス
jQuery日本語リファレンス
まったく理解していないからわからなかったので、記載。
idの指定は$("#id_name")、クラスの指定は$(".class_name")
cssみたいで私たち半端ものには親しみやすい感じ。
jqueryで指定のdivの子要素にあたるclassの取得
$("#targetID").children(".targetClass");
これで取得したクラスのstyleを操作するには
$("#targetID").children(".targetClass").css("display", "block");
あーわかりやすすぎて、全然わかんなかった。
すばらしいリファレンス
jQuery日本語リファレンス
ラベル:
ajax jquery
2008年12月2日火曜日
javascriptでのdivのスライド
無駄にはまった、書いておく。
setTimeoutを使ってのdivのスライド。
setTimeoutでのstyleのtopに数を加算していく場合、
以下では動かない。
×直では動かない。
document.getElementById('target').style.top += move_num + "px";
○変数で加算していって、styleに代入。
move_num += 5;
document.getElementById('target').style.top = move_num + "px";
60px上に移動する場合の例)
function slide_up() {
move_num -= 5;
hr.style.top = move_num + "px";
if((60 + move_num) <= 0) {
document.getElementById('target').style.top = -60 + "px";
clearTimeout(timer);
return;
}else{
var timer = setTimeout("slide_up()",0);
}
}
clearTimeoutでキャンセルすることを忘れるな。
setTimeoutを使ってのdivのスライド。
setTimeoutでのstyleのtopに数を加算していく場合、
以下では動かない。
×直では動かない。
document.getElementById('target').style.top += move_num + "px";
○変数で加算していって、styleに代入。
move_num += 5;
document.getElementById('target').style.top = move_num + "px";
60px上に移動する場合の例)
function slide_up() {
move_num -= 5;
hr.style.top = move_num + "px";
if((60 + move_num) <= 0) {
document.getElementById('target').style.top = -60 + "px";
clearTimeout(timer);
return;
}else{
var timer = setTimeout("slide_up()",0);
}
}
clearTimeoutでキャンセルすることを忘れるな。
ラベル:
javascript
2008年11月21日金曜日
javascriptによるformの値を取る方法
javascriptによるformの値を取る際、
radioボタンやcheckboxは一度for文で回す必要がある。
複数ある中から、ひとつを探すわけだから当たり前か・・わからんかった。
以下サンプルソース
<form action="#" name="fName">
<input name="radioName" value="0" type="radio">
<input name="radioName" value="1" type="radio">
<input name="radioName" value="2" type="radio">
<input name="radioName" value="3" type="radio">
</form>
radioボタンやcheckboxは一度for文で回す必要がある。
複数ある中から、ひとつを探すわけだから当たり前か・・わからんかった。
以下サンプルソース
<form action="#" name="fName">
<input name="radioName" value="0" type="radio">
<input name="radioName" value="1" type="radio">
<input name="radioName" value="2" type="radio">
<input name="radioName" value="3" type="radio">
</form>
2008年11月20日木曜日
PHP:$_SERVER サーバ環境変数
PHPでは、サーバに関する環境変数はグローバル変数$_SERVERに格納されます。
HTTP_REFERERやREMOTE_ADDR、PHP_SELFなどスクリプト構築において欠かせない変数群を簡単に取得できるので、それぞれ暗記しておいて損はないです。
| $_SERVER['GATEWAY_INTERFACE'] | CGIのバージョン |
| $_SERVER['SERVER_NAME'] | サーバ名 |
| $_SERVER['SERVER_SOFTWARE'] | サーバID |
| $_SERVER['SERVER_PROTOCOL'] | プロトコル名・リビジョン(HTTP/1.0) |
| $_SERVER['REQUEST_METHOD'] | リクエストの種類(HEAD・POST・GET・PUT等) |
| $_SERVER['QUERY_STRING'] | クエリーを格納 |
| $_SERVER['DOCUMENT_ROOT'] | サーバのルートディレクトリ |
| $_SERVER['HTTP_ACCEPT'] | Acceptヘッダの内容 |
| $_SERVER['HTTP_ACCEPT_CHARASET'] | Accept-Charasetヘッダの内容(eucなど) |
| $_SERVER['HTTP_ACCEPT_ENCODING'] | Accept-Charasetヘッダの内容(gzipなど) |
| $_SERVER['HTTP_ACCEPT_LANGUAGE'] | Accept-Languageヘッダの内容(jpなど) |
| $_SERVER['HTTP_CONNECTION'] | Connectionヘッダの内容(Keep-Aliveなど) |
| $_SERVER['HTTP_HOST'] | Hostヘッダの内容 |
| $_SERVER['HTTP_REFERER'] | 現在のページへのリンク元のURLを格納。 ※ブラウザによっては設定しない場合や'Hidden-Referrer'などと設定する場合があり、必ずしも取得できるとは限らない。 |
| $_SERVER['HTTP_USER_AGENT'] | User_Agentヘッダの内容 (compatible; MSIE 6.0; Windows NT 5.0など) |
| $_SERVER['REMOTE_ADDR'] | クライアントのIPアドレス |
| $_SERVER['REMOTE_PORT'] | クライアントマシンで使用されているポート番号 |
| $_SERVER['SCRIPT_FILENAME'] | 実行中のスクリプトの絶対パス |
| $_SERVER['SERVER_PORT'] | サーバで使用されているポート番号 |
| $_SERVER['SERVER_SIGNATURE'] | サーバのバージョン・ヴァーチャルホスト名 |
| $_SERVER['PATH_TRANSLATED'] | 実行中のスクリプトの物理パス |
| $_SERVER['SCRIPT_NAME'] | 実行中のスクリプトのパス |
| $_SERVER['REQUEST_URI'] | 指定されたURI |
| $_SERVER['PHP_SELF'] | 実行中のスクリプトのドキュメントルートに対する相対パス ※PHPスクリプトなどで、自身にフォームを送信したい場合などにactionにこの変数を設定することが多い。 |
コピペですいません。
元ネタありがとうございます。
STUDIO WING
ラベル:
php $_SERVER
2008年11月12日水曜日
phpによるメール
// カレントの言語を日本語に設定する
mb_language("ja");
// 内部文字エンコードを設定する
mb_internal_encoding("UTF-8");
// 件名
$subject = 'メールのタイトル';
// 本文
$mailbody = 'メールの内容';
// メール送信
mb_send_mail("info@hogehoge.com",$subject,$mailbody);
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
「info@hogehoge.com」の部分が宛先メールアドレス。
「$subject」の部分が件名。
「$mailbody」の部分が本文。
文字化けの問題が以外に多いということなので、
念のため記述。
元ネタコピペです。
mb_language("ja");
// 内部文字エンコードを設定する
mb_internal_encoding("UTF-8");
// 件名
$subject = 'メールのタイトル';
// 本文
$mailbody = 'メールの内容';
// メール送信
mb_send_mail("info@hogehoge.com",$subject,$mailbody);
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
「info@hogehoge.com」の部分が宛先メールアドレス。
「$subject」の部分が件名。
「$mailbody」の部分が本文。
文字化けの問題が以外に多いということなので、
念のため記述。
元ネタコピペです。
2008年11月11日火曜日
.htaccessの小技編 - 特定のファイルだけ守る
アクセス制限をかけるときに使う「.htpasswd」ファイルや、掲示板やアクセス解析CGIなどが出力するログファイルなどは、通常ですと、ブラウザーで直接アクセスすると、見れてしまいます。しかし、「.htaccess」の設定により、特定のファイルをHTTPで見れないようにすることができます。
上の例では、拡張子が「.log」のファイルを見れないようにします。これを応用して、たとえば、「.htaccess」と「.htpasswd」を見れないようにするには、
と記述すればいいのです。この記述は、正規表現によるパターンマッチを使っています。難しい言葉ですが、具体例を見て、応用してください。なお以下の例では、上記の例での1行目だけを記載しております。1行だけでは、有効になりませんので、必ず、3行記述するようにして下さい。
■ 特定の拡張子のついたファイルをすべて見れなくする。
これは拡張子が「.dat」であるすべてのファイルが見れないようになります。たの拡張子のファイルを見れないようにするには、「.dat」の部分を書き換えてください。
■ 指定したファイルだけ見れなくする。
これは、「access.log」というファイルだけが見れないようになります。他のファイル名にしたいときは、「access\.log」の部分を書き換えてください。ただ、「.」(ドット)の前には、必ず「\」を入れてください。
■ ワイルドカードを使う
これは、ファイル名のはじめが「foo」で始まって、すべての拡張子をもったファイルが見れなくなります。たとえば、「foo.dat」「foo.log」「foo.jpg」「foo.gif」は、すべて対象となります。ただ、「foo」のように拡張子を持たない場合には、適応されません。
■ 一文字ワイルドカードを使う
これは、「access」の次にくる一文字がなんであろうと、適応されます。ただし、ファイル名の最後は「.dat」である必要があります。たとえば、「access1.dat」「access2.dat」「accessA.dat」はすべて適応されます。ただし、「?」の部分が2文字になると適応されません。たとえば、「access11.dat」がそうです。この場合には、 とする必要があります。
■ 複数の文字列を同時に指定する。
これは、拡張子が「.gif」「.jpg」「.png」であるファイルのみを見れなくします。その他の拡張子を加えたいばあいには、「|」(パイプ)で区切って加えてください。
上であげた例で、見慣れない文字が入っていますが、それぞれについて意味をみていきましょう。
元ネタコピペです。
<Files ~ "\.log$">
deny from all
</Files>
上の例では、拡張子が「.log」のファイルを見れないようにします。これを応用して、たとえば、「.htaccess」と「.htpasswd」を見れないようにするには、
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>と記述すればいいのです。この記述は、正規表現によるパターンマッチを使っています。難しい言葉ですが、具体例を見て、応用してください。なお以下の例では、上記の例での1行目だけを記載しております。1行だけでは、有効になりませんので、必ず、3行記述するようにして下さい。
■ 特定の拡張子のついたファイルをすべて見れなくする。
<Files ~ "\.dat$">これは拡張子が「.dat」であるすべてのファイルが見れないようになります。たの拡張子のファイルを見れないようにするには、「.dat」の部分を書き換えてください。
■ 指定したファイルだけ見れなくする。
<Files ~ "^access\.log$">これは、「access.log」というファイルだけが見れないようになります。他のファイル名にしたいときは、「access\.log」の部分を書き換えてください。ただ、「.」(ドット)の前には、必ず「\」を入れてください。
■ ワイルドカードを使う
<Files ~ "^foo\.*$">これは、ファイル名のはじめが「foo」で始まって、すべての拡張子をもったファイルが見れなくなります。たとえば、「foo.dat」「foo.log」「foo.jpg」「foo.gif」は、すべて対象となります。ただ、「foo」のように拡張子を持たない場合には、適応されません。
■ 一文字ワイルドカードを使う
<Files ~ "^access?\.dat$">これは、「access」の次にくる一文字がなんであろうと、適応されます。ただし、ファイル名の最後は「.dat」である必要があります。たとえば、「access1.dat」「access2.dat」「accessA.dat」はすべて適応されます。ただし、「?」の部分が2文字になると適応されません。たとえば、「access11.dat」がそうです。この場合には、
■ 複数の文字列を同時に指定する。
<Files ~ "\.(gif|jpg|png)$">これは、拡張子が「.gif」「.jpg」「.png」であるファイルのみを見れなくします。その他の拡張子を加えたいばあいには、「|」(パイプ)で区切って加えてください。
上であげた例で、見慣れない文字が入っていますが、それぞれについて意味をみていきましょう。
| ~ | パターンマッチであるという意味です。「=」でないことに注意してください。「~」より右側に記述したルールにマッチしたファイルを適応するということです。 |
| ^ | ファイル名の先頭であることを指示します。たとえば、 |
| $ | ファイル名の最後であることを指示します。たとえば、 |
| * | ワイルドカードです。 |
| ? | 一文字ワイルドカードです。 |
| \ | 「.」「\」「|」「$」のような記号文字は、 |
| (foo|bar) | 括弧内に、「|」で区切って記述すると、その中に記述された文字列のいづれかという意味となります。この場合には、「foo」もしくは「bar」という意味となります。 |
元ネタコピペです。
登録:
投稿 (Atom)