こしあん日記 ~写真と猫とサッカーと~

子供たちの記録用にはじめたが、思春期になり写真を撮らせてもらえなくなる。写真と愛猫とサッカーが中心のブログです。

つらつらと

ちょっとつらつらと思うがままに書いてみる。

f:id:take1605:20190222114459j:plain

写真は会社について見上げた空。

会社のすぐ横に大きな鉄塔がある。でも特に何の影響もないので気にならない。むしろ良い被写体になってくれる。

鉄塔って男っぽい。女性らしい鉄塔があれば見てみたい。

 

さすがに28mmで撮影すると少しだけケラれるかな。まあ気にならないレベル。むしろ味。

 

昨日晩御飯のとき、お酒を飲むのをやめてみた。全然平気だった。息子に「パパアル中ちゃうかったん?」と失礼なことを言われた。でも寝る前にビール1本飲んだ。アル中か。。。

 

今日からJリーグ開幕。ヴィッセル神戸VSセレッソ大阪といういかにも観客を集めるぞ的な開幕戦。でも素直に見たいな。

 

DAZNとの契約が切れている。今契約すると2月分払わないといけないので3月まで我慢。

 

この時期はいろいろ入用。車の保険が切れる時期。Jリーグの年間パス、ユニフォームを購入する時期、今年は車検もある。。そして長男の高校入学。いくらお金があっても足りない!ことはないけど、お金がないので足りない。

 

システム開発をしだして、少し視野が広がった気がする。

今まではホームページをデザインして作っておしまい。でもシステムはその続きが作れる。更新する。ホームページを増殖する。ユーザーを抱え込む。いろいろやってみたい。

COOKIE認証

日々勉強で覚えることだらけのプログラム。

全部は備忘録に残せないが、大切なものは残しておこう。SQL関連ももう少し書きたいけど、今日やったところから忘れないうちに。

 

誰かの役に立てば幸い。

 

WEBシステムでもアプリっぽい動きを求められることが多い。今作っているシステムもまさにそういったもの。

そこで利用するのがCOOKIE認証。

 

これまでの認証の仕組みで多かったのがSESSION認証。こちらは、ID、パスワードなどの照合を行い、必要な情報をスーパーグローバル変数の$_SESSIONに登録しておき使いまわす方法。

サーバ側で保持する情報のため、一定時間アクションがないと自動解放してしまう。一定時間とはphp.iniで設定されている。

 

COOKIE認証はSESSIONとは違いローカル側で保持する情報になる。

また保持時間も都度自由に設定できるというメリットもある。

サーバ側に持たさないので、負荷が分散化できる。

 

やり方は簡単。

setcookie("クッキー名","値","保持時間");

でクッキーを食わせることができる。

後は食わせた値を使っていろいろできる。

 

と簡単そうだが、重要なこともある。

クッキーはローカル側で持つ情報なため、情報が筒抜けになる。例えば

setcookie("smple_system", $password, strtotime( '+10 year' ));

と書いたとする。値の$passwordはログイン時のパスワードが入るとすると、ブラウザの開発ツールで見れば、パスワードが表示されてしまうというセキュリティとしてはお粗末なものになってしまう。

 

そこで

1.2つ以上の値を設定する。

2.暗号化する。

 

暗号化は可逆性、つまり元の状態に戻せるものを使う。今回はBASE64を選択。

不可逆なハッシュの方がセキュリティは高いが、2つ以上の値を設定しハッシュ化すると、値の再利用が難しくなるので。

 

//ユーザーIDとログインIDをコロンでつなげた文字列をセット

$auth_code = $user_id . ":" . $login_id;

 

//BASE64で暗号化

$auth_crypt = base64_encode($auth_code);

 

//sample_systemというCOOKIEに値をセットし10年間保持

setcookie("sample_system", $auth_crypt, strtotime( '+10 year' ), "/");

 

これで、比較的安全にクッキーを食べることになる。

 

しかし、ログイン画面からログイン処理を行ったときはこの方法でいいが、はじめからクッキーを食べさせて、例えばユーザー登録なしで「いいね」を保持する場合は、これではだめ。

 

上記のような処理を行いたい場合は、トップページにクッキーを食べさせる仕組みが必要になる。

 

//クッキーを食べているか確認し、食べていない場合ユーザー仮登録

if (!isset($_COOKIE["sample_system"])){

 

//ランダムな値の仮ID、パスワード発行
$login_id = uniqid("PREUSER_");
$password = uniqid("PREPASS_");


//USERテーブルへ登録(stateが0を仮登録者とする)
$stmt = $mysqli -> prepare("INSERT INTO user(login_id, state) VALUES(?, ?, 0)");
$stmt->bind_param('ss', $login_id, $password);
$stmt->execute();
$user_id = $mysqli->insert_id; //挿入したレコードのuser_idを取得
$stmt->close();

//クッキーの値作成
$auth_code = $user_id . ":" . $login_id;
$auth_crypt = base64_encode($auth_code);

setcookie("sample_system", $auth_crypt, strtotime( '+10 year' ), "/");
header("Location: index.php");

 

これでユーザーを仮登録し、クッキーを食べさせることができる。

ログイン時は、クッキー情報を一度解放し、値の再取得をするだけ。

だた、クッキーはクローラーBOTなども食べ、都度仮ユーザーを作られてしまう。なので、クローラー対策は必要となる。それはまたいずれ。

 

黒田君ごめんね。

先のブログで書いた通り、17日の日曜日は今年初の多度津FCのTMを見に行った。

相手はFC徳島。同じ四国リーグで2位のチーム。ただ、私の中では多度津FCFC徳島に強いイメージがある。

TMなので、公式で発表されている情報の範疇で。

そして、その結果がこのタイトルになった。

 

TMは3本、1~2本目は45分、3本目は30分で行われた。

私たち夫婦は1本目の途中に到着し、2本目からピッチ横で見させてもらった。

2本目、一進一退の攻防の中、先にFC徳島が先制。1本目の0-1で負けているので少し嫌な雰囲気。

しかし、黒田君が同点ゴール!

その瞬間、多度津ベンチから「撮ってない!撮ってないからもう1回!」との声。

つまり、もう1点取って逆転というエール。

ただ、私の中では「え~頑張って点決めたのに撮れてないん!」と思われるとかわいそうな気がしたので、咄嗟に「撮ったよ!撮ったよ!」と叫んでいた。

その撮った写真がこちら。

 

f:id:take1605:20190220063803j:plain

 

さすが焦点距離500mmの望遠レンズ!去年までの300mmだったら間違いなく全身が撮れていたが、瞬時に焦点距離は変えれなかった。

なので、想像してください。足元にボールがあり押し込んでいるシーンを!

 

そして、その直後がこちら。

f:id:take1605:20190220063816j:plain

超ピンボケ。でもガッツポーズ。間違いなくガッツポーズ。

 

嘘はついていない。撮ったのだ。

ちゃんとでもなく、きれいにでもないけど撮った。。。。

 

黒田君ごめんね。

 

【お詫びの黒田君写真】

f:id:take1605:20190220063905j:plain

f:id:take1605:20190220063837j:plain

 

来週は天皇杯。今年初の公式戦。

10:30から生島。応援します。一緒に応援してくれる方、常に募集中です!