Download Counter Language Table of Contents
 Japanese [日本語]  
 English [英語]  
 Korean [韓国語]  
 Simplified Chinese [简体中文]  
 Traditional Chinese [繁體中文]  
 Español [スペイン語]  
 Français [フランス語]  
 Português [ポルトガル語]  
  Arabic العربية [アラビア語]  
 Deutsch [ドイツ語]  
 Italiano [イタリア語]  
 Russian [ロシア語]  
 Turkish [トルコ語]  
 Hindi [ヒンディー語]  
 Vietnamese [ベトナム語]  
 Thai [タイ語]  
 Dutch [オランダ語]  
 Indonesian [インドネシア語]  
 Malay [マレー語]  
 Filipino [フィリピン語]  
 Swedish [スウェーデン語]  
 Norwegian [ノルウェー語]  
 Danish [デンマーク語]  
 Finnish [フィンランド語]  
 Polish [ポーランド語]  
 Czech [チェコ語]  
 Hungarian [ハンガリー語]  
 Greek [ギリシャ語]  
 Romanian [ルーマニア語]  

Stahovací počítadlo
Program pro prohlížení historie stahování
= Stáhněte a nainstalujte PHP kód =
Vzorové stahovací počítadlo

Úvod:

Toto je úvod k programu, který vám umožní zjistit počet stažení, když uživatel webové stránky stáhne a použije program. Na stránce lze nastavit stahovací počítadlo a správci webu mohou také snadno zkontrolovat historii stahování v prohlížeči.

[Vzorek instalovaný na stránce]
Celková stažení: 1865[Dnes: 23 Včera: 76
[Vzorek otevřený v prohlížeči]
Poznámka: Pokud stránka s odkazem ke stažení zobrazuje zprávu s vyzváněním k uložení souboru a je uzavřena bez spuštění stahování, bude to stále počítáno jako stažení. To je proto, že počítá počet kliknutí na odkaz.
Instrukce ke stažení:

Z této stránky si stáhněte komprimovaný soubor "zip" programu a nainstalujte ho na svůj vlastní web. Soubor se jmenuje "count.php", ale můžete ho změnit.

Kód můžete volně používat a upravovat, včetně změny designu stránky.

Upravte prosím kód tak, aby bylo možné přidávat nové funkce nebo měnit design a vytvářet stránku, která je snadno pochopitelná a použitelná.

 Stáhněte si PHP program:

Instrukce k instalaci:

Rozbalte stažený soubor "count.php.zip" a vytvoří se soubor s názvem "count.php". Vytvořte prosím složku jako například "download_history" a uložte ji tam.

"Soubor zip" obsahuje pouze jeden soubor "count.php" a "přihlašovací obrazovka" pro administrátora se automaticky generuje.

Nastavení:

To je hlavní způsob nastavení. Tyto hlavní části jsou také uvedeny v PHP souboru.

  1. Nastavení hesla:
    1. Pro stránku správce je nutné nastavit heslo.
    2. Výchozí heslo je "admin", ale změňte ho na libovolný řetězec.
    3. Pro zvýšení bezpečnosti nastavte silné heslo.
  2. Nastavení souborů ke stažení:
    1. Dokončete nastavení pro "$targetFiles = array()".
    2. Jedná se o část jako "'1' => 'Vaše URL/název souboru.zip',".
  3. Adresář pro ukládání protokolů:
    1. Na vzdáleném serveru je vyžadován adresář s názvem "log" pro ukládání protokolů, které zaznamenávají historii.
    2. Tento program automaticky vytvoří adresář s názvem "log" při prvním nahrání. Pokud však obdržíte zprávu jako "Žádný adresář", vytvořte a nahrajte ho samostatně.
  4. Zobrazení historie prvního nahrání:
    1. Při prvním nahrání může být zobrazeno "datum" a číslo "0" v historii.
    2. To je proto, že se automaticky generují protokolové soubory jako "count_1.log", které obsahují datum nahrání, ve vytvořeném adresáři "log".
    3. Pokud vás to obtěžuje, stáhněte si soubor jako "count_1.log" z vzdáleného serveru, smažte data a nahrajte ho.
    4. Nicméně stav "datum" a "0" může také být historií, kdy byl počítadlo spuštěno. Pokud je tento den stahování, bude to započítáno.
  5. Zobrazení stránky prohlížeče správce:
    1. Když správci prohlížejí stránku, můžete si vybrat, zda zobrazit URL nebo pouze název souboru.
    2. Pokud jsou na jedné stránce umístěny více tabulek historie, můžete si vybrat, zda je udržovat ve stejném pořadí, jak je nastaveno v "$targetFiles = array()" nebo je řadit podle data, kdy došlo k novým záznamům.
  6. Návrh stránky, CSS atd .:
    1. Přizpůsobte prosím návrh stránky, CSS atd., Aby byla stránka snadno čitelná.
    2. Dříve byl CSS napsán jako externí soubor, nyní je však napsán na stejné stránce, abyste se mohli odkazovat na značky při změně CSS.
  7. Nastavení odkazu ke stažení na stránce:
    1.  Obvykle je značka <a> pro stahování napsána následovně:
      <a href="/download_history/sample.zip" download="Název souboru při stahování.zip">[Libovolný řetězec]</a>
    2. V tomto programu napište značku <a> pro stahování následovně:
    3. [Příklad]Kopírovat
      <a href="/download_history/count.php?download=1" download="Název souboru při stahování.zip" target="_blank">[Libovolný řetězec]</a>
    4. Zápasní číslo v "download=1" s číslem nastaveným v "$targetFiles = array()". Toto nastavení se odkazuje na soubory ke stažení.
    5. Prosím, zkontrolujte cestu ke své stránce.
    6. Nahrávejte prosím stránku s odkazem ke stažení po nahrání souboru s "$targetFiles = array()" (v tomto případě "count.php").
  8. Kód pro zobrazení historie na jednom řádku:
    1. Vytvořte následující JavaScript a umístěte jej na stránku, na které chcete zobrazit:
    2. [Příklad]Kopírovat
      <script type="text/javascript" src="/download_history/count.php?dsp_count=1&day_dsp=on"></script>
    3. Zápasní číslo v "dsp_count=1" s číslem nastaveným v "$targetFiles = array()".
    4. Pokud smažete "&day_dsp=on," bude zobrazen pouze "celkový počet" bez zobrazení "dnes/včera".
    5. Celková stažení: 1865[Dnes: 23 Včera: 76
      Celková stažení: 1865
    6. Prosím, zkontrolujte cestu ke své stránce.
O nastavení rozšíření

Při zobrazení více tabulek je výchozím nastavením programu řadit podle času poslední aktualizace. Pokud chcete řadit podle celkového počtu stažení, vytvořte nový soubor jako "total_downloads.php" a nahraďte následující část.

  1. Změna v komentářích
    Nahraďte komentáře v následující sekci:
    // Zvolte, zda nahradit původní pole novým polem seřazeným podle nových záznamů při zobrazení více tabulek na stránce
  2. Kopírovat nahrazený komentář
    // Pokud se na stránce zobrazují více tabulek, zvolte, zda nahradit původní pole a řadit podle celkového počtu stažení.
  3. Změny kódu a komentářů
    Nahraďte kód a komentáře v následující sekci. Prosím, uvažujte o tom jako o jednom bloku.
    // Získejte cesty k souborům a jejich poslední aktualizační data (seřazeno sestupně podle data)
    $filePathsAndDates = array();
    foreach ($filePath as $key => $path) {
        if (file_exists($path)) {
            $filePathsAndDates[$key] = filemtime($path);
        } else {
           // Výstup této chyby do logu a rozhodnutí, zda pokračovat nebo zastavit zpracování
            echo "Chyba: Soubor neexistuje - $path<br>";
        }
    }
    
    // Seřazení sestupně podle posledního aktualizačního data (nejnovější datum přijde první)
    arsort($filePathsAndDates);
    
    // Přestavba pole seřazených cest k souborům
    $sortedFilePaths = array();
    foreach ($filePathsAndDates as $key => $date) {
        $sortedFilePaths[$key] = $filePath[$key];
    }
  4. Kopírovat nahrazený kód a komentáře
    // Pole, které uchovává celkový počet stažení
    $totalDownloads = array();
    
    // Získejte cestu k souboru a jeho celkový počet stažení
    foreach ($filePath as $key => $path) {
        if (file_exists($path)) {
            $line = file($path);
            $total = 0;
    
            // Sečtěte počet stažení pro každý řádek
            foreach ($line as $val) {
                $valArray = explode(',', $val);
                $total += trim($valArray[1]);
            }
    
           // Uložte celkový počet stažení do pole
            $totalDownloads[$key] = $total;
        } else {
           // Vypište tuto chybu do protokolu a rozhodněte, zda pokračovat nebo přerušit proces
            echo "Chyba: Soubor neexistuje - $path";
        }
    }
    
    // Seřaďte sestupně podle celkového počtu stažení
    arsort($totalDownloads);
    
    /// Přestavte seřazené pole cest k souborům
    $sortedFilePaths = array();
    foreach ($totalDownloads as $key => $total) {
        $sortedFilePaths[$key] = $filePath[$key];
    }
  5. Vytváření souboru a nastavení
    1. Při vytváření více stránek, aby se předešlo chybám při nastavování prvků při jednotném přidávání obsahu, vytvořte následující část kódu jako externí soubor a nahraďte ji do aktuálně implementované části jiným kódem. Vytvořte externí soubor s názvem jako "config.php".
    // Konfigurace souborů ke stažení. Pokud existují různé soubory, přidejte je jako '2', '3', '4', atd. Také '0' je platný.
    // Pro protokol použijte "http:" nebo "https:".
    $targetFiles = array(
    '1' => 'VašeURL/NázevSouboru.zip',
    '2' => 'VašeURL/NázevSouboru.pdf',
    '3' => 'VašeURL/NázevSouboru.pdf',
    '4' => 'VašeURL/NázevSouboru.pdf',
    );
  6. Kopírovat vzorek části k pojmenování "config.php"
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>DownloadHistory</title>
    <meta name="robots" content="NOINDEX,NOFOLLOW">
    </head>
    <body>
    <?php
    // Udělejte pouze tuto část externím souborem a načtěte ji na stránku, kterou používáte s "include __DIR__ . '/config.php';"
    // Konfigurace souborů ke stažení. Pokud existují různé soubory, přidejte je jako '2', '3', '4', atd. Také '0' je platný.
    // Pro protokol použijte "http:" nebo "https:".
    $targetFiles = array(
    '1' => 'VašeURL/NázevSouboru.zip',
    '2' => 'VašeURL/NázevSouboru.pdf',
    '3' => 'VašeURL/NázevSouboru.pdf',
    '4' => 'VašeURL/NázevSouboru.pdf',
    ); ?> </body> </html>
  7. Kód pro načítání externích souborů a kam jej umístit
    1. Zahrněte soubor vytvořený s názvem jako "config.php" na následujícím místě s kódem "include __DIR__ . '/config.php';".
    2. Zakomentujte nebo od straňte následující část a nahraďte ji kódem "include __DIR__ . '/config.php';".
    //$targetFiles = array(
    // '1' => 'VašeURL/NázevSouboru.zip',
    // '2' => 'VašeURL/NázevSouboru.pdf',
    // '3' => 'VašeURL/NázevSouboru.pdf',
    // '4' => 'VašeURL/NázevSouboru.pdf',
    //);
  8. Kopírovat kód pro nahrazení
    include __DIR__ . '/config.php';
* "font-family" v programu by měl být nastaven podle potřeby tak, aby odpovídal vašemu webu.
《 PHP kód pro vytvoření stahovacího počítadla 》
Uložte soubor s příponou ".php".

<?php
//***************************************************************************************************
// Stahování počítadla a prohlížeče historie stahování PHP Programu
// [Každodenní znalost Malý užitečný zápisník]
//        Minna no Chishiki Chotto Benricho
//        みんなの知識 ちょっと便利帳
// https://www.benricho.org/Tips/download_history/
// Vydáno: 7. února 2024
//
// Přehled:
// Tento program je systém pro sledování historie stahování souborů, vybavený funkcionalitou ověření uživatele.
// Obsahuje funkce jako je sanitizace vstupních dat, vytváření záznamů o událostech a zobrazení statistik stahování.
// Jste volni ho použít, včetně úpravy kódu a změny designu stránky.
//
// Poznámka:
// Před nahráním stránky obsahující odkazy ke stažení se ujistěte, že jste nakonfigurovali sekci "$targetFiles = array()" v tomto souboru,
// a nahrál tuto stránku před stránkou s odkazy ke stažení.
// Nedodržení tohoto postupu může způsobit, že uživatelé nebudou moci soubory stáhnout při pokusu, protože tato stránka nastavuje a odkazuje se na soubory ke stažení.
//
// Konfigurace a poznámky:
// ① Heslo je nastaveno na "admin", ale změňte jej na libovolný řetězec dle potřeby.
// ② Adresář "log" pro ukládání záznamových souborů se automaticky vytváří při prvním nahrání.
// Pokud však narazíte na zprávy jako "adresář nenalezen", nahrajte jej samostatně.
// ③ Při prvním nahrání zobrazení historie ukazuje "datum" a číslo "0".
// To je proto, že záznamové soubory jako "count_1.log" s datem nahrání jsou současně generovány v automaticky vytvořeném adresáři "log".
// Pokud to není žádoucí, přistupte na vzdálený server, stáhněte soubory jako "count_1.log", smažte data a pak je znovu nahrajte.
// ④ Při zobrazování více tabulek na stránce v historii zobrazení můžete vybrat, zda si ponecháte pole nastavené v [$targetFiles = array] nebo je zobrazíte chronologicky.
// ⑤ V historii zobrazení si můžete vybrat, zda zahrnout doménu v 1) zobrazení souboru nebo 2) zobrazení pouze názvu souboru.
//
// [Formát odkazu na stránce s odkazy ke stažení]
// [Příklad] <a href="/download_history/count.php?download=Registered Number" download="DownloadedFileName.zip" target="_blank">[Any String]</a>
// ① Upravte číslo v "download=1" na číslo nastavené v "$targetFiles = array()".
// ② Upravte cestu tak, aby odpovídala vaší stránce.
//
// [Kód (JavaScript) pro zobrazení historie v jedné řádce na stránce, kde je umístěn odkaz ke stažení]
// [Příklad] <script type="text/javascript" src="/download_history/count.php?dsp_count=1&day_dsp=on"></script>
// ① Upravte číslo v "dsp_count=1" na číslo nastavené v "$targetFiles = array()".
// ② Pokud odstraníte "&day_dsp=on," zobrazí se pouze "celkově" bez "dnes" a "včera".
// ③ Upravte cestu tak, aby odpovídala vaší stránce.
//***************************************************************************************************

// Konfigurace souborů ke stažení. Pokud existují různé soubory, přidejte je jako '2', '3', '4', atd. Také '0' je platný.
// Pro protokol použijte "http:" nebo "https:".
$targetFiles = array(
    '1' => 'VašeURL/NázevSouboru.zip',
    '2' => 'VašeURL/NázevSouboru.pdf',
    '3' => 'VašeURL/NázevSouboru.pdf',
    '4' => 'VašeURL/NázevSouboru.pdf',
);

// Nastavení kódování znaků pro výstup HTML
header("Content-Type: text/html; charset=utf-8");

// Kódování znaků na stránce zobrazující historii stahování
$encodingType = 'UTF-8';

// Definice informací pro ověření uživatele a další nastavení
$userid = 'admin';   // ID uživatele (nahraďte 'admin' libovolným řetězcem)
$password = 'admin'; // Heslo (nahraďte 'admin' libovolným řetězcem)
$hashedPassword = password_hash($password, PASSWORD_DEFAULT); // Použijte password_hash() k vytvoření hash hodnoty
$dataLogDir = 'log/'; // Adresář 'log' je automaticky vytvořen tímto programem. Pokud neexistuje, nahrajte adresář pojmenovaný 'log' zvlášť

// Zvolte, zda zahrnout doménu při zobrazení názvu souboru
$includeDomain = 1;  // 1: Zobrazit včetně názvu domény, 0: Zobrazit pouze název souboru

// Zvolte, zda nahradit původní pole novým polem seřazeným podle nových záznamů při zobrazení více tabulek na stránce
$sortTables = 1;  // 1: Seřadit, 0: Nesetřídit

$dir = 'log'; // Adresář pro ukládání log souborů a historie stahování

// Získejte doménu vašeho webu
$domain = $_SERVER['HTTP_HOST'];

// Správa relací: Zabraňte únosu relace a použijte session_set_cookie_params()
session_set_cookie_params(0, '/', $domain, true, true); // Nastavte vlajky HttpOnly a Secure
session_start();
if (!isset($_SESSION['auth'])) {
    $_SESSION['auth'] = FALSE;
}

// Hashování hesla: Použijte password_needs_rehash()
if (password_needs_rehash($hashedPassword, PASSWORD_DEFAULT)) {
    $newHashedPassword = password_hash($password, PASSWORD_DEFAULT);
    // Uložte novou hash hodnotu do databáze atd.
}

// Vytvořte adresář, pokud neexistuje
if (!is_dir($dir)) {
    if (mkdir($dir, 0755, true)) {
    } else {
        // Zobrazit, pokud se nepodaří vytvoření adresáře
        echo 'Vytvořte prosím adresář "' . $dataLogDir . '" a nahrajte ho zvlášť.';
    }
}

// Zkontrolujte, zda je adresář log zapisovatelný
if (!is_writable($dataLogDir)) {
    die('Adresář "' . $dataLogDir . '" buď neexistuje, nebo nemá oprávnění k zápisu. Vytvořte prosím adresář a správně nastavte oprávnění (např. 755).');
}

// Získejte základní datum a datum včerejška
$baseDay = date("Y/m/d");
$yesterday = date("Y/m/d", strtotime("-1 day"));

// Funkce pro získání dne v týdnu z data
function getDayOfWeek($date)
{
    $dayOfWeek = date('w', strtotime($date));
    $weekDays = array('Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So');
    return $weekDays[$dayOfWeek];
}

// Nastavte cestu k souboru pro každý cílový soubor a vytvořte log soubor, pokud neexistuje
foreach ($targetFiles as $key => $val) {
    $filePath[$key] = $dataLogDir . "count_" . $key . ".log";

    // Vytvořte log soubor, pokud neexistuje
    if (!file_exists($filePath[$key])) {
       

 createLogFile($filePath[$key]);
    }
}

// Získejte cesty k souborům a jejich poslední aktualizační data (seřazeno sestupně podle data)
$filePathsAndDates = array();
foreach ($filePath as $key => $path) {
    if (file_exists($path)) {
        $filePathsAndDates[$key] = filemtime($path);
    } else {
        // Výstup této chyby do logu a rozhodnutí, zda pokračovat nebo zastavit zpracování
        echo "Chyba: Soubor neexistuje - $path<br>";
    }
}

// Seřazení sestupně podle posledního aktualizačního data (nejnovější datum přijde první)
arsort($filePathsAndDates);

// Přestavba pole seřazených cest k souborům
$sortedFilePaths = array();
foreach ($filePathsAndDates as $key => $date) {
    $sortedFilePaths[$key] = $filePath[$key];
}

// Podmíněně zvolte, zda použít seřazené cesty k souborům pro třídění
$filePath = ($sortTables) ? $sortedFilePaths : $filePath;

// Vrátit JavaScriptový kód klientovi (dynamicky zobrazovat počty stažení)
if (isset($_GET['dsp_count'])) {
    header("Content-type: application/x-javascript");

    // Nastavit hlavičku jako JavaScriptový soubor
    if (!preg_match("/^[0-9]+$/", $_GET['dsp_count'])) {
        echo "document.write(\"Parametr musí být polovodičové číslo\")";
        exit();
    }

    $dspCountNo = $_GET['dsp_count'];
    if (!file_exists($filePath[$dspCountNo])) {
        createLogFile($filePath[$dspCountNo]);
    }

    $line = file($filePath[$dspCountNo]);
    $total = 0;
    $todayCount = 0;
    $yesterdayCount = 0;

    foreach ($line as $val) {
        $valArray = explode(',', $val);
        $total += trim($valArray[1]);
        if (strpos($valArray[0], $baseDay) !== false) {
            $todayCount = trim($valArray[1]);
        }
        if (strpos($valArray[0], $yesterday) !== false) {
            $yesterdayCount = trim($valArray[1]);
        }
    }

    // Pokud je možnost zobrazení data ZAPNUTÁ, zobrazí se včetně data
    if (isset($_GET['day_dsp']) && $_GET['day_dsp'] == 'on') {
        $countDsp = <<<EOF
document.write('<div class="counter_inpage">Celkem stažení: <strong>{$total}</strong>[<span class="count_today">Dnes : <strong>{$todayCount}</strong></span>  <span class="count_yesterday">Včera : <strong>{$yesterdayCount}</strong></span>]</div>')
EOF;
    } else {
        // Pokud je možnost zobrazení data VYPNUTÁ, zobrazí se pouze celkový počet stažení
        $countDsp = <<<EOF
document.write('<p class="counter_inpage">Celkem stažení: {$total}</p>')
EOF;
    }

    // Pokud není kódování UTF-8, převést
    if ($encodingType != 'UTF-8') $countDsp = mb_convert_encoding($countDsp, "$encodingType", 'UTF-8');
    echo $countDsp;

    exit();
}

// Zpracování požadavku na stažení souboru
if (isset($_GET['download'])) {
    $fileId = $_GET['download'];

    // Ukončit, pokud ID souboru není číslo nebo ID souboru neexistuje
    if (!preg_match("/^[0-9]+$/", $fileId) || !isset($filePath[$fileId])) {
        exit('Nesprávný číselný parametr');
    }

    // Otevřít soubor a uzamknout ho
    $fp = fopen($filePath[$fileId], "rb+");
    if (!$fp) {
        exit('Nepodařilo se otevřít soubor');
    }

    flock($fp, LOCK_EX);

    // Přečíst log soubor a uložit jej do pole
    $line = array();
    while (($data = fgets($fp)) !== false) {
        $line[] = $data;
    }

    // Zkrátit soubor a přidat nový řádek s datem na začátek
    ftruncate($fp, 0);
    rewind($fp);

    // Přidat nový řádek s datem na začátek, pokud neexistuje
    if (strpos($line[0], $baseDay) === false) {
        $writeLine = $baseDay . ',1' . "\n";
        fwrite($fp, $writeLine);
    }

    // Zpracovat každý řádek v souboru
    foreach ($line as $val) {
        // Zvýšit počet stažení pro aktuální datum
        if (strpos($val, $baseDay) !== false) {
            $valArray = explode(',', $val);
            $valArray[1] = rtrim($valArray[1], "\n") + 1;
            $val = $valArray[0] . ',' . $valArray[1] . "\n";
        }
        fwrite($fp, $val);
    }

    // Vyprázdnit buffer a uvolnit zámek
    fflush($fp);
    flock($fp, LOCK_UN);

    // Zavřít soubor
    fclose($fp);

    // Vyčistit výstupní buffer
    ob_end_clean();

    // Provést stažení souboru
    header("Location: {$targetFiles[$fileId]}");
    exit();
} else {
    // Zahájit relaci, zničit relaci, pokud je požadováno odhlášení
    session_start();
    if (isset($_GET['logout'])) {
        $_SESSION = array();
        session_destroy();
    }

    $loginError = '';

    if (!isset($_SESSION['auth'])) {
        $_SESSION['auth'] = FALSE;
    }

    // Použijte funkci hashování hesla k vytvoření hash hodnoty
    // Zpracování přihlášení
    if (isset($_POST['userid']) && isset($_POST['password'])) {
        // Porovnat hash hodnot pro ověření
        if ($_POST['userid'] === $userid && password_verify($_POST['password'], $hashedPassword)) {
            $oldSid = session_id();
            session_regenerate_id(TRUE);

            if (version_compare(PHP_VERSION, '5.1.0', '<')) {
                $path = session_save_path() != '' ? session_save_path() : '/tmp';
                $oldSessionFile = $path . '/sess_' . $oldSid;

                if (file_exists($oldSessionFile)) {
                    unlink($oldSessionFile);
                }
            }

            $_SESSION['auth'] = TRUE;
        } else {
            // Zpracování neúspěchu autentizace
            $_SESSION['auth'] = FALSE;
            $loginError = '<div style="text-align: center; color: crimson;">Nesprávné uživatelské jméno nebo heslo.</div>';
        }
    }

    // Pokud autentizace nebyla úspěšná, zobrazí se obrazovka přihlášení
    if ($_SESSION['auth'] !== TRUE) {
        ?>
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="utf-8">
            <meta name="robots" content="NOINDEX,NOFOLLOW">
            <title>Přihlašovací obrazovka historie stažení</title>
            <!-- Styly přihlašovací obrazovky (upravitelné podle potřeby) -->
            <style>
                body {
                    font-family: Arial, sans-serif;
                    background-color: #f4f4f4;
                    margin: 0px;
                    padding: 0px;
                    display: flex;
                    align-items: center;


                    justify-content: center;
                    height: 100vh;
                }
                form {
                    background-color: #fff;
                    padding: 20px;
                    border-radius: 8px;
                    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
                }
                label {
                    display: block;
                    margin-bottom: 8px;
                }
                input {
                    font-size: 18px; 
                    width: 100%;
                    padding: 8px;
                    margin-bottom: 16px;
                    box-sizing: border-box;
                }
                button {
                    font-size: 16px;
                    background-color: #4caf50;
                    color: #fff;
                    padding: 10px;
                    border: none;
                    border-radius: 4px;
                    cursor: pointer;
                }
                .logintitle {
                    text-align: center;
                    font-size: 18px;
                    font-weight: bold;
                }
                .logininfo {
                    text-align: center;
                }
                .passwordshow {
                    font-size: 14px;
                    font-weight: bold;
                    color: darkgray;
                    text-align: center;
                }
                .center-container {
                    display: inline-block;
                    margin: 0 5px 0 0;
                }
            </style>
        </head>
        <body>
            <div id="login_form">
                <form action="<?php echo $fileName; ?>?mode=download" method="post">
                    <p class="logintitle">【Zobrazit historii stažení】</p>
                    <?php if (isset($loginError)): ?>
                        <!-- Zobrazení chybové zprávy, pokud je proměnná $loginError nastavena -->
                        <p style="color: crimson;"><?php echo $loginError; ?></p>
                    <?php endif; ?>
                    <label for="userid">Uživatelské jméno:</label>
                    <input type="text" id="userid" name="userid" required>
                    <label for="password">Heslo:</label>
                    <input type="password" id="password" name="password" required>
                    <?php
                        // Předpokládá se, že $showPassword je PHP proměnná určující, zda se má původně zobrazit heslo
                        echo '<label class="passwordshow" for="showPassword">[Zobrazit heslo]<div class="center-container"><input type="checkbox" id="showPassword" onchange="togglePasswordVisibility()" ' . ($showPassword ? 'checked' : '') . '></div></label>';
                    ?>
                    <button type="submit" name="login_submit">Přihlásit se</button>
                </form>   
            </div>

<!-- Kontrola viditelnosti hesla -->
<script>
  function togglePasswordVisibility() {
    var passwordInput = document.getElementById('password');
    var showPasswordCheckbox = document.getElementById('showPassword');

    if (showPasswordCheckbox.checked) {
      // Pokud je zaškrtnuto, heslo se zobrazí
      passwordInput.type = 'text';
    } else {
      // Zrušte zaškrtnutí, aby bylo heslo skryto
      passwordInput.type = 'password';
    }
  }
</script>
</body>
</html><?php
exit();
} else {
  // Pokud je přihlášeno, zobrazí se stránka historie stažení
  ?>
  <!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="robots" content="NOINDEX,NOFOLLOW">
    <title>Historie stažení</title>
    <!-- Styl pro zobrazení historie stažení (upravitelné podle potřeby) -->
    <style>
                 body {
                     font-family: 'Hiragino Kaku Gothic ProN', 'Hiragino Kaku Gothic ProN W3', Meiryo, Osaka, 'MS PGothic', arial, helvetica, sans-serif;
                 }
                 .log_title {
                     font-size: 16px;
                     font-weight: bold;
                     color: brown;
                     margin: 0px 0px 15px 10px;
                 }
                 .get_url {
                     font-size: 13px;
                     font-weight: bold;
                     padding: 8px 0;
                     color: brown;
                     background-color: lightgoldenrodyellow;
                 }
                 .log_table{
                     float:left;
                     width: 300px;
                     border: #CCC 1px solid;
                     border-radius: 5px;
                     margin: 0px 0px 5px 10px;
                     padding: 0px 5px 5px 5px;
                     word-break: break-all;
                 }
                 table {
                     width: 100%;
                     border-collapse: collapse;
                 }
                 td,
                 th {
                     padding: 5px 10px;
                     border: 1px solid #999;
                     text-align: right;
                     font-size: 90%;
                 }
                 th {
                     background: lavenderblush;
                     text-align: center;
                     font-weight: normal;
                 }
                 .tableheader {


                     background: lavender;
                     text-align: center;
                     font-weight: bold;
                     white-space: nowrap;
                 }
                 .total{
                     float:left;
                     margin: -25px 0px 0px 10px;
                 }
                 .counter_inpage{
                     margin: 15px 0px 8px 0px;
                 }
                 .bold{
                     font-weight: bold;
                 }
             </style>
  </head>
  <body>
    <div class="log_title">【Historie stažení】 【<a href="?logout=true">Odhlásit se</a>】</div> 
    <?php foreach($filePath as $key => $val){ ?>                      
      <div class="log_table">         
        <div class="get_url"><?php echo $includeDomain ? $targetFiles[$key] : basename($targetFiles[$key]); ?></div>
        <table align="center">
          <tr>
            <th class="tableheader">Datum</th>
            <th class="tableheader">Stažení</th>
          </tr>
          <?php	  
            $totalDownload = 0;

            // Přečíst pouze pokud soubor existuje
            if (file_exists($val)) {
              $line = file($val);
              foreach ($line as $lineVal) {
                $lineArray = explode(',', $lineVal);

                // Ověřte, zda $lineArray[1] je numerická hodnota
                $numericValue = filter_var($lineArray[1], FILTER_VALIDATE_FLOAT);
                if ($numericValue !== false) {
                  $totalDownload += $numericValue;
                  ?>
                  <tr>
                    <th nowrap><?php echo $lineArray[0] . ' (' . getDayOfWeek($lineArray[0]) . ')'; ?></th>
                    <td class="bold" nowrap><?php echo $lineArray[1]; ?></td>
                  </tr>
                  <?php
                }
              }
            }
          ?>
          <tr>
            <th colspan="2" class="bold">Celkové stažení: <?php echo $totalDownload;?></th>
          </tr>
        </table>
      </div>              
    <?php
                }
              }
            }
          ?>
</body>
</html><?php
// Funkce pro vyčištění všech prvků v poli
function sanitize($arr)
{
  // Pokud je to pole, aplikuje se vyčištění rekurzivně
  if (is_array($arr)) {
    return array_map('sanitize', $arr);
  }
  // Odebrat nulové znaky z řetězců
  return str_replace("\0", "", $arr);
}

// Vytvořit nový log soubor, pokud neexistuje
function createLogFile($filePath)
{
  $baseDay = date("Y/m/d");
  $fp = fopen($filePath, "a+b");

  if ($fp) {
    flock($fp, LOCK_EX);
    ftruncate($fp, 0);
    rewind($fp);
    fwrite($fp, "$baseDay,0");
    fflush($fp);
    flock($fp, LOCK_UN);
    fclose($fp);

    // Nastavit oprávnění k souboru
    chmod($filePath, 0666);
  } else {
  }
}
To uzavírá úvod PHP kódu pro "Stahovací počítadlo/Program pro prohlížení historie stahování." Doufáme, že vám to bude užitečné.

Může dojít k chybám ve formulaci, protože jde o překlad z japonské verze. Omlouváme se za případné potíže, ale pokud je chyba ve formulaci v kódu, prosím, opravte nebo upravte ji sami.

Vaše zpětná vazba při použití tohoto kódu je vítána. Upozorňujeme, že nemohu odpovědět na dotazy.

おすすめサイト・関連サイト…

Last updated : 2024/02/05