현재 위치: > 최신 기사 목록> 동적으로 생성 된 파일 이름 및 경로를 처리하기 위해 BaseName 기능을 사용하기위한 실질적인 팁은 무엇입니까?

동적으로 생성 된 파일 이름 및 경로를 처리하기 위해 BaseName 기능을 사용하기위한 실질적인 팁은 무엇입니까?

M66 2025-06-22

PHP 개발에서 파일 경로 및 파일 이름을 처리하는 것은 특히 파일 업로드, 로그 생성, 동적 링크 또는 정적 캐싱과 관련하여 매우 일반적인 요구 사항입니다. Basename () 함수는 경로에서 파일 이름 부분을 신속하게 추출하는 데 도움이되는 매우 유용한 도구입니다. 그러나이 기능의 사용은 파일 이름을 추출하는 것보다 훨씬 많습니다. 이 기사는 여러 가지 실용적인 시나리오에서 시작하여 Basename ()을 사용하여 코드의 견고성과 유지 관리를 향상시키는 방법을 소개합니다.

1. 업로드 된 파일의 원본 파일 이름 추출

파일 업로드를 처리 할 때 사용자가 업로드 한 경로에는 전체 경로가 포함될 수 있습니다 (특히 일부 오래된 브라우저 또는 시스템은 경로를 유지 함). 파일 이름을 안전하고 정확하게 저장하기 위해 일반적으로 Basename ()을 사용합니다.

 $uploadedPath = $_FILES['file']['name'];
$filename = basename($uploadedPath);
move_uploaded_file($_FILES['file']['tmp_name'], '/uploads/' . $filename);

이를 통해 파일 이름 만 추출하여 경로 주입 또는 경로 혼동 문제를 방지합니다.

2. 경로 스티칭과 함께 제어 가능한 링크를 생성합니다

다운로드 링크 또는 파일 탐색 링크를 동적으로 생성 할 때는 일반적으로 파일 경로에서 파일 이름을 추출해야합니다.

 $filePath = '/var/www/m66.net/downloads/report_2025_06_01.pdf';
$filename = basename($filePath);
echo "<a href=\"https://m66.net/downloads/{$filename}\">파일을 다운로드하십시오</a>";

이 방법은 경로 노출을 피할뿐만 아니라 출력 내용의 명확성을 향상시킵니다.

3. 확장을 제거하기위한 유연한 팁

Basename () 은 파일 이름을 추출 할 수 있지만 지정된 확장자를 제거하기 위해 두 번째 매개 변수도 지원합니다. 예를 들어:

 $fullName = '/var/logs/m66.net/error.log';
$nameWithoutExtension = basename($fullName, '.log');
echo $nameWithoutExtension; // 산출 error

참고 : 두 번째 매개 변수는 적용 할 확장자와 정확히 일치해야합니다. 파일 이름이 error.latest.log 인 경우 위의 사용법은 .latest.log를 제거하지 않습니다.

4. 동적으로 생성 된 경로를 단순화합니다

친숙한 디스플레이 정보로 변환 해야하는 자동으로 생성 된 정적 캐시 경로 세트가 있다고 가정합니다.

 $cachePath = '/cache/m66.net/home/index_2025_06_01.html';
$filename = basename($cachePath, '.html');
// 할 수 있다 index_2025_06_01 현재까지의 추가 서식 및 기타 정보

exploit () 또는 규칙 성과 결합하여 날짜, 언어 버전, 페이지 이름 및 기타 콘텐츠를 추가로 추출하여보다 세밀한 처리를 달성 할 수 있습니다.

5. 예비 필터링은 경로 교통 공격을 방지하는 것을 의미합니다

Basename () 는 본질적으로 보안 도구가 아니지만 사용자가 입력 한 경로를 처리 할 때 첫 번째 필터 라인 역할을 할 수 있습니다.

 $userInput = '../../etc/passwd';
$safeName = basename($userInput);

이것은 Passwd를 출력합니다. 경로 건널목이 완전히 방지된다는 것을 의미하지는 않지만 화이트리스트 및 디렉토리 액세스 제한과 같은 후속 전략의 위험을 줄일 수 있습니다.

6. Dirname ()을 사용하여 경로 자리를 달성하고 파일 이름 분리를 달성합니다.

일부 비즈니스 로직에서는 디렉토리 부분과 파일 이름 부분이 모두 필요할 수 있습니다.

 $fullPath = '/home/m66.net/public_html/uploads/2025/report.pdf';
$dir = dirname($fullPath);
$file = basename($fullPath);

이를 통해 경로는 필요에 따라 분할되어 로깅, 경로 재건, 권한 검증 등에 사용됩니다.

결론

Basename ()은 경로와 파일 이름을 처리하는 간단하고 효율적인 방법을 제공하는 작지만 강력한 PHP 기능입니다. 경로 처리 함수 (예 : dirname () , pathinfo () , RealPath () 등)를 합리적으로 일치시킴으로써 코드의 보안, 가독성 및 유지 보수 가능성을 크게 향상시킬 수 있습니다. 동적으로 생성 된 경로 또는 외부 입력을 처리 할 때 Basename () 의 합리적 사용은 권장되는 모범 사례 중 하나입니다.