で、今回はセッションクラスを使ってみようとおもいます。自分はだいたい新しいことを試す時はユーザガイドを読むよりも先に、ネットで検索します。そうすると意外に早く理解できたりといったことが多いので…。
CodeIgniterのセッションも検索してみました。するといきなりこんな情報が…CIの標準のsession機能は、何とcookieに全てのデータを入れる仕組み。う〜む、これってどうなんでしょう?
試しに今まで作ってきたスクリプトではなく単にセッションだけのスクリプトを書いてテストしてみました。そしたら確かにクッキーに全情報が入ってました。まあシリアライズ?というのかぱっと見ではよくわからなかったりもしますが。
すると上記ページにPHPのセッションを使ったものがWikiに置いてあると書いてあったので今度はそれを試してみます。
まずFILESというところのコードをコピーしてファイルを作り指定のディレクトリへ…、ってapplication/init/ってないじゃん(--;わからないけど作っちゃえ。んでそこにinit_phpsession.phpとして保存。phpsession.phpはlibirary(これはある)フォルダに保存。
あとは普通のライブラリのように
$this->load->library('phpsession');
でロードして、Exampleのように使う。
すると、今までクッキーに全部入っていたデータが、クッキーにはセッションIDだけになりサーバ側の指定ディレクトリ(デフォルトだとtmpとかか?XAMPPなのでイマイチわからない)にそのセッションIDと同じファイルができてる。中を見るとちゃんとデータが入ってます。
ってこれはPHPのセッション動作そのものですね。自分は前に使ったことがあったので、なるほどこれでできるのかと思いましたが、セッション機構そのものがはじめての人はわかりづらいかもしれませんね。
それはともかくこれで普通のPHPセッションが使えることが判明。これを作ってくれた人に感謝。そしてこれで検索条件が保存できるはず。ということで実装。
POSTデータを直接受取っていた部分
$data['newcity'] = $this->input->post('newcity');
を一旦セッションに格納してから取ってくるように変更
$newcity = $this->input->post('newcity');
if ($newcity <> "")
{
$this->phpsession->save('newcity', $newcity);
}
$session_newcity = $this->phpsession->get('newcity');
if ($session_newcity <> "")
{
$data['newcity'] = $session_newcity;
} else {
$data['newcity'] = "";
}
これで一応検索結果をページングできるようになりました。が、また別の落とし穴が…(--;
ラベル:codeigniter
検索条件が多いなら別ですが