(2)の記事から「PDO」を使い、データの通信をオブジェクト化しました。
password_hashを使い、パスワード処理の暗号化も行いました。
PDOを導入する一番の理由は「mysql_query」などは近い内に使えなくなるようです!
ネイティブドライバについては、もうひとつ注意すべきことがある。 PHP 用の mysql 拡張モジュールの開発はすでに終了しており、PHP 5.4.0 の時点での公式発表によると 「長期的には廃止予定」だ。つまり、近い将来に削除されるということであり、 PHP 5.6 (になるかどうかわからないけど、5.5 の次にくるやつ) の頃には使えなくなるだろう。
(PHP The Right Way.より)
PDOは「PHP Data Objects」の略で、どのデータベースを使っているかを隠蔽してくれるもの(のよう)です。
使えるのはMySQL、PostgreSQL、SQLiteなど。
PDOの接続方法
PDOの利用の方が詳しいですが、どう使うのかは載っていません・・・。
Class内の関数に入れるのなら
// DBに接続 public function connectDb() { $dsn = 'mysql:dbname=' . self::$dbInfo['name'] . ';host=' . self::$dbInfo['host']; try{ self::$db = new PDO($dsn, self::$dbInfo['user'], self::$dbInfo['pass']); }catch (PDOException $e){ print('Connection failed:'.$e->getMessage()); die(); } }
設定の書き方
public $dbInfo = [ 'host' => 'localhost', 'name' => 'database', 'user' => 'root', 'pass' => '' ];
設定を導入する関数と必要なものを記述すること!
これはDBに接続すると同じ所で使うといいかも?
(そもそも使い方がおかしいかもしれない)
private static $dbInfo; private static $db; // DBの情報を設定 public static function setInfo($dbInfo) { self::$dbInfo = $dbInfo; } // DBの接続切断 public function disconnectDb() { self::$db = null; }
暗号化方法password_hash(password_compact)の使い方
さくらサーバーはPHP 5.4までしか使えない問題があります。
PHP5.5で導入された「password_hash」が使えない・・・。
↓解決策
PHP5.5から使える暗号化「password_hash」を「password_compact」を使って以前のバージョンで利用する
すごく簡単です。
現状
- 表示
- PDOでのDB通信で安全化の強化
- password_compactで管理パスワード比較の安全化
- 読み込み速度の向上
PC、スマートフォン両方利用可能です。
> PC表示
> スマートフォン表示
「?id=1%3BDELETE+FROM+users」のようなデータを受け取らないようにしました。
以前のバージョンではできます/(^o^)\
パスワード自体の変換(保存用)は「crypt」を使っています。
「使っていた関数を見直す」
「更新されていないRSSを読まない」
「RSS情報は受け取るが、日付がある程度過去の場合更新しない」
「無駄な読み込みはなくす」
まとめ
現在、サイトの動作をテストしています。
特に問題はなさそう。
一週間行って問題がなさそうなら公開・配布しますね!
でもオブジェクト指向の書き方、MVCの書き方にそぐわなさそうなので少しずつ改良していきます!