みなさんお疲れ様です。
現在、データを保存する際のサニタイズを行っているのですが、
remove_htmlをしたところ、正しい挙動でもエラーが発生してしまっていて困っています。
saveするデータが数値でしているので、そのせいだとは思うのですが、どう書いたら正しいかわかりません。
周りに気軽に聞けるcakephpをよく理解している方がいないので、どなたかご教授お願いします。
以下はその部分のコードになります。
View/Details/index.ctp
php
1 2 <div id="status"> 3 <?php 4 echo "●処理状態 : "; 5 if ($reportstatus == 0){ 6 echo "未処理"; 7 } else if($reportstatus == 1){ 8 echo "処理済み"; 9 } else { 10 echo "不明な処理"; 11 } 12 ?> 13 </div> 14 15 <form action="/details/update" method="post"> 16 <input type="radio" name="report_status" value=0><?php echo "未処理" ?> //ここの部分 17 <input type="radio" name="report_status" value=1><?php echo "処理済み" ?> //ここの部分 18 <input type="hidden" name="report_id" value=<?php echo $reportId ?>> 19 <input id="reportstatus_submit" type="submit" value="変更"> 20 </form> 21 22 <div id="status"> 23 <?php 24 echo "●表示状態 : "; 25 if($requeststatus == 9){ 26 echo "非表示処理"; 27 } else { 28 echo "表示"; 29 } 30 ?> 31 </div> 32 33 <form action="/details/update" method="post"> 34 <input type="radio" name="request_status" value=0><?php echo "表示" ?> //ここの部分 35 <input type="radio" name="request_status" value=9><?php echo "非表示" ?> //ここの部分 36 <input type="hidden" name="report_id" value=<?php echo $reportId ?>> 37 <input type="hidden" name="request_id" value=<?php echo $requestId ?>> 38 <input id="requeststatus_submit" type="submit" value="変更"> 39 </form> 40 41 <div id="comment"> 42 <?php echo "●管理側コメント" ?><br /> 43 <?php 44 if (isset($comment)) { 45 echo "$comment"; 46 } else { 47 echo ""; 48 } 49 ?> 50 </div> 51 52 <form action="/details/update" method="post"> 53 <textarea name="report_comment" cols=40 rows=4 maxlength=66></textarea> 54 <input type="hidden" name="report_id" value=<?php echo $reportId ?>> 55 <input id="reportcomment_submit" type="submit" value="更新"><input id="reportcomment_reset" type="reset" value="リセット"> 56 </form> 57
Controller/DetailsController
php
1 public function update(){ 2 3 $this->autoRender = false; 4 //処理状態の更新-------------------------------------------------------------- 5 6 if($this->request->is('post')){ 7 8 if(isset($this->request->data['report_status'])){ 9 $reportId = $this->request->data['report_id']; 10 $report = $this->Report->find('all', array('conditions' => array("id" => $reportId))); 11 $report_obj = $report[0]["Report"]; 12 $report_obj["status"] = $this->request->data['report_status']; 13 $report_obj["modified"] = array('modified' => date('Y-m-d H:i:s')); 14 $data = $report_obj; 15 16 $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる 17 18 if($this->Report->save($data)){ 19 //save成功 20 } else { 21 //save失敗エラー画面 22 $this->Session->setFlash('処理状態の更新に失敗しました'); 23 $this->Session->flash(); 24 } 25 26 $this->redirect($_SERVER['HTTP_REFERER']); 27 28 } 29 //表示状態の更新-------------------------------------------------------------- 30 31 if(isset($this->request->data['request_status'])){ 32 $requestId = $this->request->data['request_id']; 33 $request = $this->Request->find('all', array('conditions' => array("id" => $requestId))); 34 $request_obj = $request[0]["Request"]; 35 $request_obj["status"] = $this->request->data['request_status']; 36 $data = $request_obj; 37 38 $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる 39 40 if($this->Request->save($data)){ 41 // save成功 この後の処理に続く 42 } else { 43 // save失敗 エラー画面 44 $this->Session->setFlash('表示状態の更新に失敗しました'); 45 $this->Session->flash(); 46 } 47 48 $reportId = $this->request->data['report_id']; 49 $report = $this->Report->find('all', array('conditions' => array("id" => $reportId))); 50 $report_obj = $report[0]["Report"]; 51 $report_obj["modified"] = array('modified' => date('Y-m-d H:i:s')); 52 $data = $report_obj; 53 54 $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる 55 56 if($this->Report->save($data)){ 57 //save成功 この後の処理に続く 58 } else { 59 //save失敗エラー画面 60 $this->Session->setFlash('時間の更新に失敗しました'); 61 $this->Session->flash(); 62 } 63 64 $this->redirect($_SERVER['HTTP_REFERER']); 65 66 } 67 //コメントの更新-------------------------------------------------------------- 68 69 if(isset($this->request->data['report_comment'])){ 70 $reportId = $this->request->data['report_id']; 71 $report = $this->Report->find('all', array('conditions' => array("id" => $reportId))); 72 $report_obj = $report[0]["Report"]; 73 $report_obj["comment"] = $this->request->data['report_comment']; 74 $report_obj["modified"] = array('modified' => date('Y-m-d H:i:s')); 75 $data = $report_obj; 76 77 $data = Sanitize::clean($data, array('remove_html' => true)); //このままだとエラーになる 78 79 if($this->Report->save($data)){ 80 // save成功 この後の処理に続く 81 } else { 82 // save失敗 エラー画面表示 83 $this->Session->setFlash('コメントの更新に失敗しました'); 84 $this->Session->flash(); 85 } 86 87 $this->redirect($_SERVER['HTTP_REFERER']); 88 89 } 90 91 } else { 92 throw new NotFoundException('このGetは見つかりませんでした。'); 93 } 94 95 $this->redirect($_SERVER['HTTP_REFERER']); 96 97 }
コメントアウトした箇所が問題のところになります。
その他にもこれはこうした方がいいんじゃないかというのがあればぜひご助言お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/20 04:15
2015/08/20 04:29
2015/08/20 04:37
2015/08/20 04:46 編集
2015/08/20 04:50
2015/08/20 05:06
2015/08/20 06:51