환경 Codeigniter 버전 2 TinyEditor 버전 5 TinyEditor 란? 텍스트 편집기 라이브러리입니다. 텍스트 편집에 관한 많은 플러그인을 제공해주기 때문에, 많은 기능을 쉽고 빠르게 구현할 수 있습니다. TinyEditor 사용방법 CDN으로, 라이브러리 컨텐츠 받아오기 CDN을 이용해서, 컨텐츠를 정상적으로 받아오기 위해서는 API가 필요합니다. API는 TinyEditor홈페이지 무료 가입을하면 받을 수 있습니다. Welcome to TinyMCE! Textarea를 사용하고자 하는 곳에, 위의 script문을 추가합니다. selector는 대상이되는 Textarea를 지정 plugins는 TinyEditor에서 제공하는 다양한 플러인중에서 사용하고자 하는 플러그인을 추가하면 됩니..
IT 공부/CodeIgniter
Email 검증 기능을 구현할 때, 랜덤 hash를 생성하여 DB에 저장한 뒤, hash의 token값을 email 내용의 링크에 포함을 시킵니다. 그 후에, 링클르 클릭하면 token값을 hash로 변환하여 DB에 저장된 hash값과 비교하여 일치하면 검증 성공하는 방법 위와같은 기능을 구현하기 위해 랜덤의 hash값을 생성하는 방법을 알아보겠습니다. random_bytes() random_bytes(int $length): string 파라미터에 넣는 길이 만큼의 랜덤 바이트를 생서합니다. dd(random_bytes(16)); //random_bytes(...) binary string (16) 하지만, 브라우저에서는 바이트값이 표시가되지 않습니다. bin2hex() bin2hex(string $s..
CSRF (Cross-site request forgery) 웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법을 의미한다. 유명 경매 사이트 옥션의 개인정보 유출 사건에 사용된 공격 방식이다. 참고: https://velog.io/@gwanuuoo/CSRF-%EA%B3%B5%EA%B2%A9%EA%B3%BC-%EB%B0%A9%EC%96%B4-%EA%B8%B0%EB%B2%95 방지하기 위해서 여러 방법이있는데, 그 중에서 토큰 방식을 이용할려고 합니다. app\config\filters.php public $globals = [ 'before' => [ // 'honeypot'..
Helper 와 Library의 차이점은, helper는 특정 하나의 기능을하는 함수 Library는 비슷한 기능의 메소드를 묶은 클래스라고 생각하면 편합니다. Helper 현재 로그인 상태를 확인하여, 유저의 아이디를 화면에 출력하는 코드를 helper로 관리 헬퍼를 사용하지 않고 view 파일에서 current user의 name을 가져오기 위해서는 비지니스 코드가 추가되어야만 합니다. 그거는 MVC구조에 좋지 못하기 때문에 helper를 통해 함수를 호출하는 것만으로 name을 가져올 수 있도록 합니다. helper file 생성 helper의 file이름은 만들고자 하는 helper명에 "_helper"를 suffix로 붙혀주면 됩니다. app\helpers\auth_helper.php wellc..
public function show($id) { $task = $this->taskModel->find($id); return view('Task/show', [ 'data' => $data, ]); } 위의 controller의 show 메소드의 코드에서는 url 파라미터로 task의 id값을 받아와서, show 메소드를 통해 브라우저에 task의 내용을 보여주도록 구현했는데, 존재하지 않는 id를 url 파라미터로 전달했을 경우에는 아래와 같은 Error가 발생하게 됩니다. 이러한 문제를 해결하기 위해서 Codeigniter의 PageNotFoundException을 이용하여 404페이지를 보여지도록 하면 됩니다. 일단 위와같은 문제가 발생하는 이유는, taskModel의 find() 메소드를 사용..
Entity로 변경하는 이유는, 앞으로 column수가 증가하거나 수정이 있을 때, 해당 data를 사용하는 곳에서 최대한 변경을 줄일 수 있기 때문입니다. 예를 들어서 form을 파일로 만들어 관리하는 경우 description