php 파일 다운로드 예제

성공에 파일에서 읽은 바이트의 수를 반환, 또는 실패 Armand에 FALSE, 나는 당신과 함께 동의 100% 하지만 때로는 총아래 작업 코드가 필요할 때 당신은 당신이해야 할 일을해야합니다. php 헤더를 사용하는 것은 파일 배달 방법이 너무 새로운, 결코 수행하고 최대한 빨리 솔루션이 필요했다. 이 방법은 지금 작동하고 나는이의 더 나은 기능 버전을 개발하기 위해 평면. 이제 범위가 있으므로 바이트로 표현되고 여러 범위를 포함하지 않으며 범위 자체가 유효한지 확인해야합니다 (끝은 시작이 음수가 아니며 끝은 파일 자체보다 크지 않습니다) `바이트:-`는 유효한 요청이 아닙니다. 범위가 유효하지 않으면 readfile이 대용량 파일을 올바르게 관리하는 것처럼 보이는 출력을 수행해야합니다. 다른 노하우는 이를 확인하는 것 같습니다. 이 절차에 는 두 가지 중요한 고려 사항이 적용됩니다. 첫째, 누군가가 PDF 파일에 대한 직접 링크를 발견하면 PHP가 방해받지 않고 직접 액세스 할 수 있습니다. 둘째, 이 빠르고 쉬운 접근 방식을 사용하여 보호하려는 각 파일에 대해 PHP 보호가 필요합니다. 이러한 방식으로 여러 파일을 보호하려면 보호된 파일과 PHP 파일의 이름을 같은 이름으로 이름 지정하는 것이 합리적이며 확장자만 다르므로 모든 파일을 똑바로 유지합니다.

둘째, MIME 유형과 관련하여 콘텐츠 유형 : 응용 프로그램 / 강제 다운로드와 같은 것을 종종 봅니다. 그런 일과 콘텐츠 유형은 없습니다 : 응용 프로그램 / 옥텟 스트림 (RFC1521)은 잘 작동합니다 (또는 exe / dll인 경우 응용 프로그램 / x-msdownload). Internet Explorer에 대해 생각하고 있다면 콘텐츠를 “스니핑”하도록 강요하기보다는 명확하게 지정하는 것이 좋습니다. 자세한 내용은 인터넷 탐색기의 MIME 유형 검색을 참조하십시오. 그러나 파일 이름을 지정하는 올바른 방법은 파일 이름 특성 주위에 큰 따옴표를 넣어야합니다 : 안녕하세요, 나는 !$_SESSION 사용자로부터 내 파일을 보호하기 위해, download.php 파일을 만들기 위해 코드를 사용했다. 나는 chmod 값으로 700을 사용하는 경우, URL 액세스에서 내 폴더를 보호하고 싶습니다, 페이지는 다운로드 파일을 반환하지 않습니다,하지만 비워 유지됩니다 (펜오픈 실패). 코드에서 액세스 파일에 어떤 값을 사용해야 합니까? 이 방법을 해결하려면 HTTPS를 통해 다운로드를 강제 할 때마다 다음 두 줄의 코드를 강제 다운로드 스크립트에 추가합니다 (readfile()에 대한 호출 위). PHP readfile() 함수는 PHP 파일을 포함하여 파일을 그대로 읽습니다. GET 또는 POST 양식 데이터(또는 사용자가 스푸를 사용할 수 있는 다른 데이터)를 사용하여 실제 파일 이름을 전달하는 경우 주요 보안 허점이 열립니다. 호기심이 많은 사용자는 ?file=.와 같은 것을 입력하여 중요한 데이터베이스 연결 정보 또는 기타 시스템 데이터에 쉽게 액세스할 수 있습니다. /포함/db_connection.php. 중요한 정보에 대한 무단 액세스를 방지하기 위해 항상 일종의 식별자를 사용해야 합니다.

안녕하세요 올라프, 나는 인터넷 익스플로러와 사파리를 통해 파일 다운로드에 몇 가지 문제가 있음을 알 수 있습니다. 스크립트는 나에게 빈 파일을 주었다. 내가 무슨 말을 하는지 아시겠어요? Internet Explorer의 특정 버전은 다운로드가이 기술을 사용하여 강제로 사용할 때 다음과 같은 오류 메시지를 생성합니다 : 다시, 나는 실제 바이트 범위가 주어진 예제를 보았다 (예를 들어 0-1000), 이는 사양에 따라 잘못된. 스크립트가 시작될 때 파일을 확인한 후(파일이 있는 경우 등) 범위가 요청되었는지 확인해야 합니다. 추측은 너무 어렵지 않으며 몇 번의 시도에서 공격자가 구성 또는 암호 파일을 얻을 수 있습니다. 그것은 “좋은 관행”으로 간주 됩니다 여부의 인수는 사용자가 파일을 다운로드 하도록 강요 하는 대신 그들의 브라우저expected로 그들을 처리 하는 것은 정말이 문서에서 장소를 가지고 있지 않습니다.