hash_update_file în PHP

Securitate și hash PHP 5.1.2+

Adaugă la un calcul de amprentă incremental tot conținutul unui fișier.

Sintaxă
hash_update_file(HashContext $context, string $filename, $stream_context = null): bool

Ce face hash_update_file

hash_update_file deschide fișierul, îl citește pe bucăți și îl adaugă în context. Este utilă când vrei o singură amprentă pentru mai multe fișiere (de exemplu pentru a detecta dacă s-a schimbat ceva într-un director de resurse).

Parametri

Parametru Descriere
$context Contextul creat cu hash_init.
$filename Calea către fișier.
$stream_context Opțional. Un context de stream.

Ce returnează

true la succes, false dacă fișierul nu poate fi citit.

Exemple

Exemplul 1: O amprentă pentru mai multe fișiere CSS

Amprenta se poate pune în URL (stil.css?v=...), ca browserul să descarce din nou fișierele doar când se schimbă.

<?php
file_put_contents("baza.css", "body { margin: 0; }");
file_put_contents("tema.css", "body { color: #222; }");

$ctx = hash_init("xxh3");
foreach (["baza.css", "tema.css"] as $fisier) {
    hash_update_file($ctx, $fisier);
}

echo "stil.css?v=" . hash_final($ctx);

Rezultat

stil.css?v=3ea51a878cc472a8

Greșeli frecvente

  • Schimbi ordinea fișierelor între apeluri. Amprenta depinde de ordine; sortează lista înainte.

Comenzi înrudite

  • hash_update_stream: Adaugă la un calcul de amprentă incremental datele citite dintr-un stream deschis (fișier, rețea).
  • hash: Calculează amprenta unui text cu algoritmul ales: sha256, sha512, sha3-256, xxh3 și multe altele.
  • hash_init: Pornește un calcul de amprentă incremental: datele se adaugă pe bucăți, iar rezultatul se obține la final.