백엔드 개발 PHP 튜토리얼 PHP Mysql 및 jQuery는 파일 다운로드 횟수 통계를 구현합니다.

PHP Mysql 및 jQuery는 파일 다운로드 횟수 통계를 구현합니다.

Jul 25, 2016 am 08:55 AM

  1. 존재하지 않는 경우 테이블 만들기 `downloads` (
  2. `id` int(6) unsigned NOT NULL AUTO_INCREMENT,
  3. `filename` varchar(50) NOT NULL,
  4. `savename` varchar(50) NOT NULL,
  5. `downloads` int(10) unsigned NOT NULL DEFAULT '1',
  6. PRIMARY KEY(`id`),
  7. UNIQUE KEY ` filename` (`filename`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
코드 복사

데모를 직접 다운로드하고 SQL 파일을 가져올 수도 있습니다. 데이터가 모두 들어있습니다.

다운로드 주소: PHP 파일 다운로드 횟수 통계 소스 코드입니다.

2. HTML 부분

index.html 페이지 본문에 다음 HTML 구조를 추가합니다. 여기서 ul.filelist는 파일 목록을 표시하는 데 사용됩니다. 이제 콘텐츠가 없으며 jQuery를 사용하여 파일 목록을 비동기적으로 읽습니다. 또한 HTML로 jQuery 라이브러리 파일을 로드해야 합니다.

    🎜>
  • 코드 복사 3, CSS 부분 데모에서 페이지 효과를 더 잘 표시하기 위해 CSS를 사용하여 페이지를 수정했습니다. 다음 코드는 주로 파일 목록 표시 효과를 설정합니다. 물론 실제 프로젝트에서는 필요에 따라 해당 스타일을 설정할 수 있습니다.

    1. #demo{width:728px;margin:50px auto;padding:10px;border:1px solid #ddd; background-color:#eee;}
    2. ul.filelist li{배경:url("img/bg_gradient.gif") 반복-x 중앙 하단 #F5F5F5
    3. border:1px solid #ddd;border-top-color:#fff;list-style: none;위치:상대적;}
    4. ul.filelist li.load{배경:url("img/ajax_load.gif") no-repeat-left:20px
    5. 위치:상대적; 왼쪽:150px; 위쪽:30px; 너비:200px}
    6. ul.filelist li a{display:block;padding:8px;}
    7. ul.filelist li a:hover .download{display:block;}
    8. span.download{배경 색상:#64b126;테두리:1px 솔리드 #4e9416;색상:흰색;
    9. 디스플레이:없음;글꼴 크기:12px;패딩:2px 4px;위치:절대;오른쪽:8px; 🎜>텍스트 장식:없음;텍스트 그림자:0 0 1px #315d0d;top:6px;
    10. -moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}
    11. span.downcount{color:#999;padding:5px;position:absolute; margin-left:10px;text-꾸밈:none;}
    코드 복사
    4, PHP부분

    이해를 돕기 위해 두 개의 PHP 파일이 나누어져 있습니다. 하나는 mysql 데이터 테이블의 데이터를 읽고 프런트엔드 index.html 페이지를 호출하기 위해 데이터를 JSON 형식으로 출력하는 데 사용됩니다. 다른 하나는 filelist.php이고, 하나는 다운로드 작업에 응답하는 데 사용되는 download.php입니다. , 해당 파일의 다운로드 횟수를 업데이트하고 브라우저를 통해 다운로드를 완료하세요. 실제로 다운로드 압축 패키지에 포함된 데이터베이스 연결 파일인 conn.php도 있습니다. 다운로드하려면 여기를 클릭하세요. filelist.php는 다운로드 테이블을 읽고 다음 Ajax 비동기 작업을 위해 준비된 json_encode()를 통해 데이터를 JSON 형식으로 출력합니다.

      require 'conn.php'; //데이터베이스에 연결
    1. $result = mysql_query("SELECT * FROM downloads" );
    2. if(mysql_num_rows($result)){
    3. while($row=mysql_fetch_assoc($result)){
    4. $data[] = array(
    5. 'id' => $row ['id'],
    6. 'file' => $row['filename'],
    7. 'downloads'=> $row['downloads']
    8. }
    9. echo json_encode($data)
    10. }
    11. 코드 복사

    Download.php는 URL에 따라 매개변수를 전달하고, 해당 데이터를 얻기 위해 쿼리하고, 다운로드할 파일이 존재하는지 감지하고, 존재하는 경우 해당 데이터의 다운로드 횟수를 1로 업데이트하고 header()를 사용합니다. 다운로드 기능을 구현합니다. header() 함수를 사용하는 것은 언급할 가치가 있습니다. 를 선택하여 파일을 강제로 다운로드하고, 다운로드 후 로컬에 저장할 파일 이름을 설정할 수 있습니다.

    일반적으로 업로드된 파일은 백그라운드 업로드 프로그램을 통해 이름이 변경되어 서버에 저장됩니다. 일반적으로 사용되는 파일의 이름은 날짜와 시간을 따서 지정됩니다. 이 방법의 장점 중 하나는 파일 이름이 중복되거나 왜곡된 중국어 이름을 피하는 것입니다. 상태. 로컬로 다운로드한 파일의 경우 header("Content-Disposition: attachment; filename=" .$filename)를 사용하여 파일 이름을 쉽게 식별할 수 있는 파일 이름으로 설정할 수 있습니다.

    1. require('conn.php');//데이터베이스에 연결
    2. $id = (int)$ _GET[ 'id'];
    3. if(!isset($id) || $id==0) die('매개변수 오류!')
    4. $query = mysql_query("select * from 다운로드 위치 id='$id'");
    5. $row = mysql_fetch_array($query);
    6. if(!$row) 종료;
    7. $filename = iconv('UTF-8','GBK ', $row['filename']); //중국어 이름 변환 인코딩에 주의하세요
    8. $savename = $row['savename'] //서버의 실제 저장 이름
    9. $myfile = 'file/'. $savename;
    10. if(file_exists($myfile)){//파일이 존재하는 경우
    11. //다운로드 시간 업데이트
    12. mysql_query("update downloads set downloads=downloads 1 where id ='$id'") ;
    13. //파일 다운로드
    14. $file = @ fopen($myfile, "r");
    15. header("콘텐츠 유형: 애플리케이션/옥텟-스트림"); ​​
    16. header("Content -Disposition: attachment; filename=" .$filename );
    17. while (!feof($file)) {
    18. echo fread($file, 50000)
    19. }
    20. fclose($file) ;
    21. 종료
    22. }else{
    23. echo '파일이 없습니다! ';
    24. }
    코드 복사

    다섯, jQuery 부분 프론트엔드 페이지의 jQuery는 주로 두 가지 작업을 완료합니다. 하나는 Ajax를 통해 비동기적으로 파일 목록을 읽고 표시하는 것입니다. 다른 하나는 사용자의 클릭 이벤트에 응답하고 해당 파일을 1회 다운로드하는 것입니다.

    코드:

    1. $(function(){
    2. $.ajax({ //비동기 요청
    3. 유형: 'GET ',
    4. url: 'filelist.php',
    5. dataType: 'json',
    6. 캐시: false,
    7. beforeSend: function(){
    8. $(".filelist").html ("
    9. 로드 중...
    10. ")
    11. },
    12. 성공: function(json){
    13. if(json){
    14. var li = ''; $.each(json,function(index,array){
    15. li = li '
    16. ' 배열['file']
    17. '' 배열['downloads'] '
    18. 다운로드하려면 클릭하세요
    19. '
    20. })
    21. $(".filelist").html(li ); ;
    22. }
    23. }
    24. })
    25. $('ul.filelist a').live('click',function(){
    26. var count = $('.downcount ' ,this); count.text(parseInt(count.text()) 1); //다운로드 수 1
    27. })
    28. }); 🎜>코드 복사
    29. 먼저 페이지가 로드된 후 $.ajax()를 통해 백그라운드 filelist.php에 GET 형식의 Ajax 요청을 보냅니다. filelist.php가 성공적으로 응답하면, 반환된 json 데이터를 수신하고, $.each()를 통해 json 데이터 객체를 탐색하고, html 문자열을 구성합니다. 그리고 데모에서 파일 목록을 구성하려면 ul.filelist에 마지막 문자열을 추가하세요.
    그런 다음 파일을 클릭하여 다운로드하면 동적으로 추가된 목록 요소의 클릭 이벤트가 live()를 통해 응답되고 다운로드 횟수가 누적됩니다. 마지막으로 이 글을 읽고 나면 흔히 사용되는 Ajax 사례입니다. 물론, 다운로드를 구현하기 위해 PHP와 결합한 지식도 모두에게 도움이 되기를 바랍니다.

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    인기 기사

    R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 최고의 그래픽 설정
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    Laravel의 플래시 세션 데이터로 작업합니다 Laravel의 플래시 세션 데이터로 작업합니다 Mar 12, 2025 pm 05:08 PM

    Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

    PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 Mar 14, 2025 am 11:42 AM

    PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

    Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Mar 12, 2025 pm 05:09 PM

    Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> ​​'Hello World', 'github.com'=> ​​[ 'foo'=> 'bar'], 'forge.laravel.com'=>

    Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Mar 13, 2025 pm 12:08 PM

    고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

    PHP에서 늦은 정적 결합의 개념을 설명하십시오. PHP에서 늦은 정적 결합의 개념을 설명하십시오. Mar 21, 2025 pm 01:33 PM

    기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

    프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법. 프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법. Mar 28, 2025 pm 05:12 PM

    이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

    프레임 워크 보안 기능 : 취약점 보호. 프레임 워크 보안 기능 : 취약점 보호. Mar 28, 2025 pm 05:11 PM

    기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

    See all articles