httpsのみCookieを許可する
1 2 |
// httpsのみ許可する ini_set('session.cookie_secure', 1); |
在宅プログラマーの備忘録として2005年に始めたブログです。
httpsのみCookieを許可する
1 2 |
// httpsのみ許可する ini_set('session.cookie_secure', 1); |
セッションIDインジェクション対策
1 2 |
// セッションIDインジェクション対策(透過セッションID禁止) ini_set('session.use_trans_sid', 0); |
JavaScriptインジェクション対策
1 2 3 4 |
// JavaScriptインジェクション対策1(http経由のみアクセス可能にする) ini_set('session.cookie_httponly', 1); // JavaScriptインジェクション対策2(不正なセッションIDを拒否) ini_set('session.user_strict_mode', 1); |
ブラウザで動作するWEBシステムで、
使用しているプログラムをcronから呼んだらうまくいかない、
WEBアクセスしたときと結果が違う、
ということはないでしょうか。
cronからPHPをコマンドで実行した場合、
環境変数などの実行環境がWEBとは異なるため
全く同じ動作を行う保証がなく、予測しにくい不具合を生みます。
そこで私は、バッチ処理などでcronからphpを呼ぶ場合は
wgetを使っています。
こんな感じでwgetを呼ぶシェルをcronにセットするだけです。
batch.sh
1 2 3 |
url=https://example.com/test/test1.php?param1=AAA log=/tmp/test1.log wget -q --no-check-certificate ${url} -O ${log} |
これでWEBアクセスと同じ動作を行わせることができます。
重複実行防止処理はphp側で行っています。
もし時間のかかる処理ならwgetのオプションにタイムアウトの指定をします。
1 |
wget --read-timeout=3600 -q --no-check-certificate ${url} -O ${log} |
連想配列を1データとする配列を任意の項目でソートしたい場合
データの例
1 2 3 4 5 |
$list = [ {'name': '佐藤', 'age': 35, 'gender': 1}, {'name': '鈴木', 'age': 25, 'gender': 2}, {'name': '田中', 'age': 45, 'gender': 1}, ]; |
年齢で昇順でソート
1 2 3 4 5 |
$sort = []; foreach($list as $row) { $sort[] = $row['age']; } array_multisort($sort, SORT_ASC, SORT_NUMERIC , $list); |
名前+性別の降順でソート
1 2 3 4 5 |
$sort = []; foreach($list as $row) { $sort[] = $row['name'] . $row['gender']; } array_multisort($sort, SORT_DESC, SORT_STRING , $list); |