위의 예제는 다음과 같이 출력 됩니다 .이 코드 줄은 $err 라는 새 변수를 만들고 파일을 사용할 수 없거나 다른 문제가 발생할 때 사용자에 게 표시 될 기본 메시지를 할당 합니다. 안녕하세요, 좋은 그것이 이런식으로 작동:) DB 레코드 id에 대해이 문서를 확인 하십시오. https://www.finalwebsites.com/creating-secure-php-websites/(모든 코멘트의 대부분) 파일에 대 한 액세스를 제한 해야 하는 경우, 암호화 된 일회성 id를 생성 해야 생성 된 경로를 사용할 수 있습니다. 한 번만. 파일에 공백이 나 캐리지 리턴 (세미콜론 후 제외)은 없어야 합니다. 빈 줄은 PHP가 MIME 형식 텍스트/httland에서 파일을 다운로드 하지 않도록 기본값으로 설정 합니다. 헤더 (` HTTP/1.1 206 부분 내용 `); 헤더 (` 수락-범위: 바이트 `); 헤더 (“내용 범위: 바이트 $start-$end/$filesize”); $content _length = $end-$start + 1; 헤더 (“내용-길이: $length”); 나는 많은 다운로드 스크립트를 PHP로 작성, 간단한 한-라이너에서 전용 클래스로 봤어요. 그러나, 그들 중 적어도 절반은 일반적인 오류를 공유; 많은 경우에 프로그래머는 단순히 작동 뭔가에서 코드를 복사, 심지어 그것이 진짜로 무엇을 이해 하려고 시도 하지 않고. 다음은 완전 한 작업 다운로드 스크립트는 아니지만, 오히려 당신에 대해 알고 있어야 하 고 당신이 더 나은 코드를 작성할 수 있도록 문제의 집합입니다. 현대 세계에서는 인증이 완료 된 후 서버에서 파일 전송을 오프 로드 하는 “sendfile” 메서드를 지원 해야 합니다. 처음에 우리는 url에 매개 변수 파일이 포함 되어 있는지 여부 basename ($ _get [` 파일 `])와 $ _get [` 파일 `] 같은 값을가지고-이 파일을 다운로드 하지 못하도록 하는 것입니다 우리가 검사 하는 그들이 다운로드 하 고 싶지 않아.

나는 기본적으로 브라우저에 원시 HTTP 헤더를 보내는 PHP 헤더 () 함수를 사용 하 여 파일 다운로드를 강제로 방법의 번호를 봤습니다. 브라우저에 따라 일부 파일이 자동으로 다운로드 되지 않습니다. 대신 브라우저 자체 또는 해당 플러그 인에 의해 처리 됩니다. 이것은 종종 PDF 파일, TXT 파일, CSV 파일, 로그 파일, 멀티미디어 파일 (MP3, WAV, MOV, MPEG, AVI 등), 그리고 많은 사용자를 위한 문제입니다, ms 오피스 파일. 개발자로 서, 파일의 모든 유형의 다운로드를 강제로 수 있는 매우 유용 합니다. 요즈음 고객 웹사이트는 다량의 소통량을 때문에 클라이언트 생성 했다 … BTW 나는 정확 하 게 내가 무엇이 필요 했 고 거 장을 움직인다이 포스트를 찾았다! http://stackoverflow.com/questions/157318/resumable-downloads-when-using-php-to-send-the-file/4451376#4451376 범위를 시작 하 고 범위의 길이를 전달할 때까지 건너뛰고 위에서 설명한 방법을 사용 하 여 파일을 출력할 수 있습니다. 위 선은 PHP 설명서에서이 고 대부분의 브라우저에서 작동할 것으로 예상 된다.

경고 처럼 스크립트가 9 행에서 출력을 시작 했다. “반향” 또는 일부 빈 행/공백이 있습니까? 그러나 당신이 전에 그것에 대해 생각: 누구 든 지 그것이 공공의 html 지역 밖에 있더라도 서버 (위)에 어떤 파일도 요청할 수 있었다. 추측은 너무 어렵지 않고 몇 가지 시도에서 공격자는 구성 또는 암호 파일을 얻을 수 있습니다. 안녕 olaf, 나는 인터넷 익스플로러와 사파리를 통해 파일 다운로드에 몇 가지 문제가 있다는 것을 알 수 있습니다. 원본은 저에 게 빈 파일을 주었다. 내가 무슨 말을 하는지 아 세요? 안녕 mar첼로, 파일 사용 권한 또는 CHMOD를 사용 하 여 어떤 상황에서 잘못 된 방법입니다. 그것은 public_html 디렉토리 “위의” 수준으로 다운로드를 이동 하는 것이 좋습니다. 또는 .htaccess를 통해 당신의 전화번호부를 보호 하 고 .htpasswd.

다운로드가 일반 사용 권한으로 작동 합니까? 여기서 일어나 고 있는 일은-먼저 우리는 $filename NULL이 고 그렇다면 우리는 우리의 메시지 $err 메시지가 표시 됩니다 여부를 확인 합니다. NULL이 아닌 경우에는 파일 경로를 저장 하 고 파일의 채워진 이름을 그 끝에 할당 하는 $path 라는 변수를 만듭니다.