$ brew remove wireshark $ brew install wireshark --with-qt $ brew cask install wireshark-chmodbpf $ brew linkapps wiresharkmacにwiresharkを入れる
2016年11月26日土曜日
macにwiresharkを入れる
2016年11月24日木曜日
2016年11月19日土曜日
2016年11月16日水曜日
2016年11月13日日曜日
CakePHP behaviorにValidation作る
Cake1.x系ですが、参考になりそうなのでメモ
class AddValidationRuleBehavior extends ModelBehavior { function setup(&$model, $config = array()) { //$this->settings = $config; mb_internal_encoding("UTF-8"); } /** * マルチバイト用バリデーション 文字数上限チェック * * @param array &$model * @param array $wordvalue * @param int $length * @return boolean */ function maxLengthJP( &$model, $wordvalue, $length ) { $word = array_shift($wordvalue); //return( mb_strlen( $word, mb_detect_encoding( $word ) ) <= $length ); return( mb_strlen( $word ) <= $length ); } /** * マルチバイト用バリデーション 文字数下限チェック * * @param array &$model * @param array $wordvalue * @param int $length * @return boolean */ function minLengthJP( &$model, $wordvalue, $length ) { $word = array_shift($wordvalue); return( mb_strlen( $word ) >= $length ); } /** * フィールド値の比較 * emailとemail_confフィールドを比較する場合などに利用 * _confは$suffixによって変更可能 * * @param array &$model * @param array $wordvalue * @param string $suffix * @return boolean */ function checkCompare( &$model, $wordvalue , $suffix ){ $fieldname = key($wordvalue); return ( $model->data[$model->alias][$fieldname] === $model->data[$model->alias][ $fieldname . $suffix ] ); } /** * 全角カタカナ以外が含まれていればエラーとするバリデーションチェック * * * @param array &$model * @param array $wordvalue * @return boolean */ function katakana_only( &$model, $wordvalue){ $value = array_shift($wordvalue); return preg_match("/^[ァ-ヶー゛゜]*$/u", $value); } /** * 全角、半角スペースのみであればエラーとするバリデーションチェック * * @param array &$model * @param array $wordvalue * @return boolean */ function space_only( &$model, $wordvalue){ $value = array_shift($wordvalue); if( mb_ereg_match("^(\s| )+$", $value) ){ return false; }else{ return true; } } /** * only Allow 0-9, a-z , A-Z * * @param array ref &$model * @param array $wordvalue * @return boolean */ function alpha_number( &$model, $wordvalue ){ $value = array_shift($wordvalue); return preg_match( "/^[a-zA-Z0-9]*$/", $value ); } } ?>
2016年11月10日木曜日
CakePHP Validationいろいろ
コントローラーでモデルで指定するほどじゃないけど、
ちょっとだけ使いたい。そんなときに。
App::uses('Validation','Utility'); if(Validation::url($this->params['form']['url'])){ echo 'urlだよ'; } else { echo 'noturl'; } if(Validation::blank($this->request->data['User']['email'])){ //ちなみに全角マッチしなかった debug("match"); return; }else{ debug("Not match!!!!!"); return; }
CSRF
csfr仕組み
csfr仕組み
if($this->request->is('post') ){ $tokenHidden = $this->request->data['User']['Token']; $tokenSession = $this->Session->read('Token'); if($tokenHidden == $tokenSession){ debug("Tokenおなじです"); }else{ debug("Tokenちがうよ"); } $this->set('token', $this->Session->read('Token')); }else{ //GET時Tokenセット $this->Session->delete('Token'); $uid = sha1(uniqid(mt_rand(), true)); $this->Session->write('Token', $uid); $this->request->data['User']['Token']=$uid; }
2016年11月6日日曜日
PHP 連想配列並び替え
$arr = array('T'=>'Tokyo', 'Y'=>'Yokohama', 'K'=>'Kyoto'); $arr += array('N'=>'Nagoya'); $arr2 = array('N','K','Y','T');//連組配列を並び替える $ret=array(); foreach ($arr2 as $key => $value) { foreach ($arr as $k => $v) { if($value===$k){ switch ($k) { case 'N': $ret=array_merge($ret,array($k => 'なごや')); break; default: $ret=array_merge($ret,array($k => $v)); echo ''; var_dump($ret); echo ''; break; } } } }
2016年11月1日火曜日
CakePHP バリデーション
コントローラ内でバリデーション処理を呼び出す
フィールドを限定してバリデーションを行う $this->User->set( $this->request->data ); if ($this->User->validates( array( 'fieldList' => array( 'username', 'password')))) { // バリデーションOKの場合の処理 } else { // バリデーションNGの場合の処理 }
CakePHP CSV
【PHP】【CakePHP】CSVダウンロード
//ビューを使わない $this->autoRender = false; //Content-Typeを指定 $this->response->type('csv'); //download()内ではheader("Content-Disposition: attachment; filename=hoge.csv")を行っている $this->response->download("hoge.csv"); $fp = fopen('php://output','w'); //CSVをエクセルで開くことを想定して文字コードをSJISへ変換する設定を行う stream_filter_append($fp, 'convert.iconv.UTF-8/CP932', STREAM_FILTER_WRITE); $user_list = [ [...], [...], [...], ]; foreach($user_list as $user){ fputcsv($fp, $user); } fclose($fp);100, 'k1'=>200, 'k2'=>300, 'k3'=>400), ); echo '
'; var_dump($list); echo ''; $fp = fopen('file.csv', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp); /* 出力結果 連想配列のキーは無視される。 100,200,300,400 */ array('k0'=>100, 'k1'=>200, 'k2'=>300, 'k3'=>400), 'DEF'=> array('k00'=>1000, 'k11'=>2000, 'k22'=>3000, 'k33'=>4000), ); echo '
'; var_dump($list); echo ''; $fp = fopen('file.csv', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp); ?> /* 出力結果 連想配列のキーは無視される。 100,200,300,400 1000,2000,3000,4000 */
ラジオボタン 個別に作る方法
radio('gender', array(1 => 'A'), array('hiddenField' => false));
echo "B:" . $form->radio('gender', array(2 => 'B'), array('hiddenField' => false));
?>
http://rfs.jp/sb/php/cakephp/form-radio-hiddenfield.html
登録:
投稿 (Atom)