미션 테이블명 log idx(숫자),ip(문자),page(문자),regdate(날짜) 1 192.168.0.1 news>index.php 2025-02-01 2 192.168.0.1 news>delete.php 2025-02-01 클래스명 : Logs 함수명 : index,create,edit,delete routes> 매서드 : getLog() ci4.st.kr/log/ ci4.st.kr/log/create 저장 완료 후 ci4.st.kr/log/success로 이동 ci4.st.kr/log/edit/1 ci4.st.kr/log/delete/1 ----------------------------------------------------------------------- CREATE TABLE logs ( idx int(11) NOT NULL AUTO_INCREMENT, ip varchar(128) NOT NULL, page text NOT NULL, reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (idx) ); ----------------------------------------------------------------------- ***필터기능 = 플라스크 에노테이션 기능 ,['$filter=>'auth'] 로그인이 필요한 부분에 사용 app > filters AuthFilters.php 생성(chmod644) < ?php namespace App\Filters; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\Filters\FilterInterface; class AuthFilter implements FilterInterface { public function before(RequestInterface $request, $arguments = null) { // 세션에서 로그인 여부 확인 if (!session()->get('isLoggedIn')) { return redirect()->to('/login')->with('error', '로그인이 필요합니다.'); } } public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { // 로그인 후에는 추가 조치를 하지 않음 } } app > config > filters.php public array $aliases = []; 내에 추가 가능 'auth' => \App\Filters\AuthFilter::class,추가 => 로그인 전 페이지 확인 불가능하게 바뀜 ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 프레임워크? # Board로 만들어주기 (log랑 같음) CREATE TABLE board ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, upfile VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ------------------------------------------------------------------------------ ***파일업로드 사이트 만들기 Boards.php public function create(): string { $file=$this->request->getFile('upfile'); if ($this->request->getMethod() === 'POST' && $file ) { if($file->isValid() && !$file->hasMoved()) { $newflame = $file->getRandomName(); //랜덤한 파일명 생성 echo $newflame; $file->move('uploads', $newflame); // 파일 이동 return "파일 업로드 성공: " . base_url("uploads/$newflame"); } } else { echo "GET"; echo "파일을 선택해주세요"; } return view('templates/header') .view('boards/create') .view('templates/footer'); } /public/uploads 만들기 디렉토리 내 랜덤 이름으로 변경된 파일 업로드 되었는지 확인하기 ------------------------------------------------------------------------------ ***확장자 제한하기 if($file->isValid() && !$file->hasMoved()) { $allowedExtensions = ['jpg', 'png', 'gif', 'pdf']; if (!in_array($file->getExtension(), $allowedExtensions)) { return "허용되지 않는 파일 형식입니다!"; } }