続:掲示板を作ろう その4.5
success.php があまりにも哀れだったので、救済策。完全に蛇足。
今回は success.php。君が主役だ!
投稿後、コメントが投稿されましたと表示させてみる。
参照:入力クラス : CodeIgniter ユーザガイド 日本語版
cookie を使って、投稿後かそうでないかを判断してみたいと思います。
使うのはこいつだ!
$this->input->set_cookie(); $this->input->cookie();
- $this->input->set_cookie()
- cookie を保存
データの渡し方は配列にして渡す方法と個々に渡す方法がある。
name と value が必須属性。expire に空白を入れると cookie を削除 - $this->input->cookie()
- クッキーを読み込み
第一引数に cookie 名、第二引数にXSSフィルタの有無(TRUE / FALSE)
~~~~~~~~~~~~~~~~~~~~~~~~~~ 少し話はそれまして。 ~~~~~~~~~~~~~~~~~~~~~~~~~~
XSSフィルターってなんぞ
XSS【Cross Site Scripting】(クロスサイトスクリプティング)
ソフトウェアのセキュリティホールの一つで、Webサイトの訪問者の入力をそのまま画面に表示する掲示板などのプログラムが、悪意のあるコードを訪問者のブラウザに送ってしまう脆弱性のこと。
参照:XSSとは【Cross Site Scripting】(クロスサイトスクリプティング) - 意味/解説/説明/定義 : IT用語辞典
とのことなので、TRUEにしといた方が無難かな?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
application/controllers/board.php に書き込む
if($this->form_validation->run() === FALSE) { $data['comment'] = $this->boardmodel->comments(); $this->load->view('templates/header'); if ($this->input->cookie('success', TRUE) === 'true') { $cookie = array( 'name' => 'success', 'value' => '', 'expire' => '' ); $this->input->set_cookie($cookie); $this->load->view('success'); } $this->load->view('form'); $this->load->view('comment', $data); $this->load->view('templates/footer'); } else { $this->boardmodel->insert(); $cookie = array( 'name' => 'success', 'value' => 'true', 'expire' => '3600' ); $this->input->set_cookie($cookie); redirect('board'); }
これで投稿時、success.php が表示されるよ!
やったね success.php !すごいぞ success.php !