미션1
접속한 사람의 ip를 확인할 수 있는 로그 프로그램을 만들어라
테이블명 log
idx 숫자, ip 문자, page문자, regdate 날짜
1 192.168.0.1 news>index.php 2025-02-01
클래스명 : Log
함수명 : index,create,edit,delete
routes>
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 varchar(128) NOT NULL,
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (idx),
);
Logs.php
public function edit($value): string
{
if ($this->request->getMethod() === 'POST') {
echo "수정 예정";
} else {
$model = model(LogsModel::class);
if ($model->getLogs($value)){
echo "있다";
$data = [
'logs' => $model->getLogs($value),
'title' => '로그 보기',
];
return view('logs/edit',$data);
} else {
return redirect()->to('/log');
}
}
}
use App\Models\LogsModel;
$model = model(LogsModel::class);
$data = [
'ip' => $_SERVER['REMOTE_ADDR'],
'page' => 'Home>message.php',
];
$model->save($data);
log페이지 만들기
필터기능 넣기
$routes->get('/intro/profile', 'Home::profile',['filter'=>'auth']);
config -> filters에 auth와 경로 추가
'auth' => \App\Filters\AuthFilter::class,
App-> Filters에 AuthFilter 만들기
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('/auth/')->with('error', '로그인이 필요합니다.');
}
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// 로그인 후에는 추가 조치를 하지 않음
}
}
세션이 없으면 auth로 보내줌
-> 로그인 창으로 보내주는 것
#업로드가 가능한 게시판
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
);
public function create(): string
{
$file=$this->request->getFile('upfile');
if ($this->request->getMethod() === 'POST' && $file )
{
if($file->isValid() && !$file->hasMoved()) {
$allowedExtensions = ['jpg', 'png', 'gif', 'pdf'];
if (!in_array($file->getExtension(), $allowedExtensions)) {
return "허용되지 않는 파일 형식입니다!";
}
$newName = $file->getRandomName(); // 랜덤한 파일명 생성
echo $newName;
//exit;
$file->move('uploads', $newName); // 파일 이동
return "파일 업로드 성공: " . base_url("uploads/$newName");
}
} else {
echo "GET";
echo "파일을 선택해주세요";
}
return view('templates/header')
.view('board/create')
.view('templates/footer');
}