MW211 EXIT

devlog
正規表現/「1~999」を判定
2012年03月21日
┌──────────────────────────────────────┐
│^([1-9][0-9][0-9]|[1-9][0-9]|[1-9])$                                        │
└──────────────────────────────────────┘
上記のように、「100~999」or「10~99」or「1~9」とする?

いやいや。

┌──────────────────────────────────────┐
│^[1-9][0-9]?[0-9]?$                                                         │
└──────────────────────────────────────┘
上記だと、or条件なしに一発で指定できる。

つまり「?」は、「ある」かもしれないし「ない」かもしれないという意味。
分類:正規表現
Smarty/Smarty変数
2012年03月20日
主なSmarty変数は以下のとおり。
┌───────────────────┬──────────────────┐
│{*コメント*}                          │出力時に完全に無視される            │
│{$変数}                               │                                    │
│{$配列[添字]}                         │                                    │
│{$連想配列.要素}                      │$連想配列['要素']のこと             │
│{$連想配列.$変数}                     │$連想配列[$変数]のこと              │
├───────────────────┼──────────────────┤
│{$オブジェクト->プロパティ}           │                                    │
│{$オブジェクト->メソッド($変数)}      │                                    │
├───────────────────┼──────────────────┤
│{assign var=変数 value='値'}{$変数}   │変数の中身をテンプレートでも定義可  │
│{"値"}                                │値をそのまま表示できる              │
├───────────────────┼──────────────────┤
│{$smarty.get.GET変数}                 │$_GET['GET変数']のこと              │
│{$smarty.post.POST変数}               │$_POST['POST変数']のこと            │
│{$smarty.cookies.COOKIE変数}          │$_COOKIE['COOKIE変数']のこと        │
│{$smarty.server.サーバ変数}           │$_SERVER['サーバ変数']のこと        │
│{$smarty.env.環境変数}                │$_ENV['環境変数']のこと             │
│{$smarty.request.REQUEST変数}         │$_REQUEST['REQUEST変数']のこと      │
│{$smarty.session.SESSION変数}         │$_SESSION['SESSION変数']のこと      │
├───────────────────┼──────────────────┤
│{$smarty.now}                         │タイムスタンプ                      │
│{$smarty.const.定数}                  │「define('定数','値');」の値のこと  │
│{$smarty.config.config変数}           │configファイルに定義した変数        │
│{#config変数#}                        │{$smarty.config.config変数}と同じ   │
│{$smarty.template}                    │テンプレート名                      │
│{$smarty.version}                     │Smartyのバージョン                  │
│{$smarty.ldelim}                      │デミリッタ(左)                      │
│{$smarty.rdelim}                      │デミリッタ(右)                      │
│{ldelim}                              │{$smarty.ldelim}と同じ              │
│{rdelim}                              │{$smarty.rdelim}と同じ              │
└───────────────────┴──────────────────┘
分類:Smarty
PHP/Windowsの場合の分岐
2012年03月19日
Windowsの場合のみの特殊処理を行いたい場合の分岐処理は以下の通り。
┌──────────────────────────────────────┐
│if ((PHP_OS === 'WIN32') || (PHP_OS === 'WINNT')) {                         │
│  echo 'Windowsです';                                                       │
│} else {                                                                    │
│  echo 'Windowsではありません';                                             │
│}                                                                           │
└──────────────────────────────────────┘

例えば、以下のようなファイル権限変更なんてのは
(Linuxとかでは必要だが)Windowsでは不要だから分岐したりする。
┌──────────────────────────────────────┐
│chmod($ファイル, 0644);                                                     │
└──────────────────────────────────────┘
分類:PHP
PHP/php.iniをプログラムから扱う
2012年03月18日
「php.ini」の内容を知るためには、「ini_get()」という関数が使える。
#他には「ini_get_all()」ってのもある。
これで、「php.ini」を直接参照しなくても、プログラム表示で参照することができる。

一方、「ini_set()」では設定までできてしまう。
ただし、権限が絡んでくるので何もかも設定できるわけではない。
ま、設定できる場合は、「php.ini」をプログラム的に
書き換える(ようなこと)ができるわけだ。
分類:PHP
PHP/ファイル出力したい場合
2012年03月17日
「$変数」にひたすら文字列を格納したものを、ファイル出力するには、
「file_put_contents()」が簡単だ。

こんな感じ。
┌──────────────────────────────────────┐
│file_put_contents('C:/xxxx/xxxx.txt', $変数);                               │
└──────────────────────────────────────┘
とっても簡単。
分類:PHP
PDO/トランザクションとPDO
2012年03月16日
PDOでトランザクション処理を行う場合、
「PDO::beginTransaction()」などで処理を開始したりするわけだが、
注意すべきことがある。

通常、トランザクション処理中にSQLエラーが発生すると
最後にCOMMITしても自動でROLLBACKしてくれる。

だが、PDOレベルでエラーが発生するとSQLエラーを検出せずCOMMITしてしまう。

例えば、プレースホルダの記述ミスなんかがPDOレベルのエラーだ。

例えば、以下のようなSQL文で、文中に誤りがあったとする。
┌──────────────────────────────────────┐
│UPDATE "表" SET "列" = :プレースホルダ;                                     │
└──────────────────────────────────────┘

以下の場合は、SQL文としては成立し、SQLエラーとなるのでROLLBACKしてくれる。
┌──────────────────────────────────────┐
│UPDATE "表" SET "列×" = :プレースホルダ;                                   │
└──────────────────────────────────────┘

ところが、以下の場合、プレースホルダ不正によりSQL文成立まで至らないので
ROLLBACKしてくれない。
┌──────────────────────────────────────┐
│UPDATE "表" SET "列" = :プレースホルダ×;                                   │
└──────────────────────────────────────┘
分類:PDO、注意
秀丸/正規表現の最長一致の原則
2012年03月15日
秀丸エディタの正規表現は「最長一致の原則」に従っている。
「【a】【b】」の場合、「【.+】」とすると
「【a】」ではなく「【a】【b】」までが該当する。

最短一致にするにはどうすればよいか?

「【.+?】」と「+」(もしくは「*」)の後ろに「?」をつけるのが
一般的な正規表現の最短一致指定だ。

ただ「【[^】]*】」という方法もある。

こちらだと「【[^】]*】(?!【)」というのも効く。
→【b】だけ検出してくれる。

「【.+?】(?!【)」だとこれが効かないようだ。
→「【a】【b】」を検出してしまう。
分類:秀丸エディタ、正規表現
PHP/php.iniにおけるセッション関係の設定
2012年03月14日
主なものは以下のとおり。
┌────────────┬─────────────────────────┐
│session.save_path       │セッションファイルの保存先                        │
├────────────┼─────────────────────────┤
│session.name            │セッション名(PHPSESSID)                           │
├────────────┼─────────────────────────┤
│session.gc_probability  │セッションファイル破棄確率(分子)                  │
├────────────┼─────────────────────────┤
│session.gc_divisor      │セッションファイル破棄確率(分母)                  │
├────────────┼─────────────────────────┤
│session.gc_maxlifetime  │セッションファイル破棄時間(秒)                    │
├────────────┼─────────────────────────┤
│session.cookie_lifetime │クライアント側クッキーの生存期間(秒)              │
├────────────┼─────────────────────────┤
│session.cookie_path     │クッキーが有効なパス                              │
├────────────┼─────────────────────────┤
│session.cookie_domain   │クッキーが有効なドメイン名                        │
├────────────┼─────────────────────────┤
│session.use_cookies     │セッションIDの保持に、クッキーを利用するのか      │
├────────────┼─────────────────────────┤
│session.cache_limiter   │キャッシュ有無                                    │
│                        │・nocache =キャッシュ無                          │
│                        │・private =ブラウザにキャッシュ                  │
│                        │・public  =キャッシュサーバにもキャッシュ        │
├────────────┼─────────────────────────┤
│session.cache_expire    │キャッシュ期間(分)                                │
└────────────┴─────────────────────────┘
分類:PHP
PHP/タイムアウト延長
2012年03月13日
「Maximum execution time of ■ seconds exceeded」エラーが発生した場合の対処方法
無限ループ対策のタイムアウトにひっかかったので、
タイムアウト時間を延長してあげればよい。

プログラムで対処する場合。
┌─────────────────────────────────────┐
│set_time_limit(■);                                                       │
└─────────────────────────────────────┘

「php.ini」の設定を変更する場合。
┌─────────────────────────────────────┐
│max_execution_time = ■;                                                  │
└─────────────────────────────────────┘

「httpd.conf」の設定を変更する場合(「.htaccess」でもOK)。
┌─────────────────────────────────────┐
│php_value max_execution_time ■;                                          │
└─────────────────────────────────────┘
分類:PHP
HTML/ファイル入力欄の注意点
2012年03月11日
ファイル入力欄(inputタグのfile属性)について、
IEの場合、ファイルを直接入力できるが
それが不正な内容だと、セキュリティの関係から、submitが実行されない。

もし、JavaScriptでsubmitしようものならエラーとなってしまう。

FirefoxやChromeでは、直接入力できない(ファイル選択ダイアログが表示される)ので、
IEの場合も、以下のように直接入力を拒否してあげるのも一つの方法だ。
┌──────────────────────────────────────┐
│<input type="file" name="名前" onkeydown="return false;"/>                  │
└──────────────────────────────────────┘
分類:注意、HTML
前へ 1 … 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 … 156 次へ