質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

解決済

データのsanitizeをどうしたらよいのか教えてください。

amakusa
amakusa

総合スコア176

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

1回答

0リアクション

0クリップ

2016閲覧

投稿2015/08/20 03:40

編集2015/08/20 03:42

みなさんお疲れ様です。
現在、データを保存する際のサニタイズを行っているのですが、
remove_htmlをしたところ、正しい挙動でもエラーが発生してしまっていて困っています。
saveするデータが数値でしているので、そのせいだとは思うのですが、どう書いたら正しいかわかりません。
周りに気軽に聞けるcakephpをよく理解している方がいないので、どなたかご教授お願いします。

以下はその部分のコードになります。

View/Details/index.ctp

php

<div id="status"> <?php echo "●処理状態 : "; if ($reportstatus == 0){ echo "未処理"; } else if($reportstatus == 1){ echo "処理済み"; } else { echo "不明な処理"; } ?> </div> <form action="/details/update" method="post"> <input type="radio" name="report_status" value=0><?php echo "未処理" ?> //ここの部分 <input type="radio" name="report_status" value=1><?php echo "処理済み" ?> //ここの部分 <input type="hidden" name="report_id" value=<?php echo $reportId ?>> <input id="reportstatus_submit" type="submit" value="変更"> </form> <div id="status"> <?php echo "●表示状態 : "; if($requeststatus == 9){ echo "非表示処理"; } else { echo "表示"; } ?> </div> <form action="/details/update" method="post"> <input type="radio" name="request_status" value=0><?php echo "表示" ?> //ここの部分 <input type="radio" name="request_status" value=9><?php echo "非表示" ?> //ここの部分 <input type="hidden" name="report_id" value=<?php echo $reportId ?>> <input type="hidden" name="request_id" value=<?php echo $requestId ?>> <input id="requeststatus_submit" type="submit" value="変更"> </form> <div id="comment"> <?php echo "●管理側コメント" ?><br /> <?php if (isset($comment)) { echo "$comment"; } else { echo ""; } ?> </div> <form action="/details/update" method="post"> <textarea name="report_comment" cols=40 rows=4 maxlength=66></textarea> <input type="hidden" name="report_id" value=<?php echo $reportId ?>> <input id="reportcomment_submit" type="submit" value="更新"><input id="reportcomment_reset" type="reset" value="リセット"> </form>

Controller/DetailsController

php

public function update(){ $this->autoRender = false; //処理状態の更新-------------------------------------------------------------- if($this->request->is('post')){ if(isset($this->request->data['report_status'])){ $reportId = $this->request->data['report_id']; $report = $this->Report->find('all', array('conditions' => array("id" => $reportId))); $report_obj = $report[0]["Report"]; $report_obj["status"] = $this->request->data['report_status']; $report_obj["modified"] = array('modified' => date('Y-m-d H:i:s')); $data = $report_obj; $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる if($this->Report->save($data)){ //save成功 } else { //save失敗エラー画面 $this->Session->setFlash('処理状態の更新に失敗しました'); $this->Session->flash(); } $this->redirect($_SERVER['HTTP_REFERER']); } //表示状態の更新-------------------------------------------------------------- if(isset($this->request->data['request_status'])){ $requestId = $this->request->data['request_id']; $request = $this->Request->find('all', array('conditions' => array("id" => $requestId))); $request_obj = $request[0]["Request"]; $request_obj["status"] = $this->request->data['request_status']; $data = $request_obj; $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる if($this->Request->save($data)){ // save成功 この後の処理に続く } else { // save失敗 エラー画面 $this->Session->setFlash('表示状態の更新に失敗しました'); $this->Session->flash(); } $reportId = $this->request->data['report_id']; $report = $this->Report->find('all', array('conditions' => array("id" => $reportId))); $report_obj = $report[0]["Report"]; $report_obj["modified"] = array('modified' => date('Y-m-d H:i:s')); $data = $report_obj; $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる if($this->Report->save($data)){ //save成功 この後の処理に続く } else { //save失敗エラー画面 $this->Session->setFlash('時間の更新に失敗しました'); $this->Session->flash(); } $this->redirect($_SERVER['HTTP_REFERER']); } //コメントの更新-------------------------------------------------------------- if(isset($this->request->data['report_comment'])){ $reportId = $this->request->data['report_id']; $report = $this->Report->find('all', array('conditions' => array("id" => $reportId))); $report_obj = $report[0]["Report"]; $report_obj["comment"] = $this->request->data['report_comment']; $report_obj["modified"] = array('modified' => date('Y-m-d H:i:s')); $data = $report_obj; $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる if($this->Report->save($data)){ // save成功 この後の処理に続く } else { // save失敗 エラー画面表示 $this->Session->setFlash('コメントの更新に失敗しました'); $this->Session->flash(); } $this->redirect($_SERVER['HTTP_REFERER']); } } else { throw new NotFoundException('このGetは見つかりませんでした。'); } $this->redirect($_SERVER['HTTP_REFERER']); }

コメントアウトした箇所が問題のところになります。
その他にもこれはこうした方がいいんじゃないかというのがあればぜひご助言お願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。