base64_encode / base64_decode în PHP

URL și HTTP PHP 4+

Transformă orice date (inclusiv binare) într-un text format doar din litere, cifre, +, / și =.

Sintaxă
base64_encode(string $string): string

Ce face base64_encode / base64_decode

Base64 este o codare care transformă date oarecare (imagini, fișiere, texte cu diacritice) într-un text sigur pentru email, JSON, URL-uri sau atribute HTML. Rezultatul este cu aproximativ o treime mai lung decât originalul.

base64_decode face operația inversă. Cu al doilea parametru true (modul strict), returnează false dacă textul conține caractere care nu fac parte din alfabetul Base64.

Base64 nu este criptare. Oricine poate decoda textul. Nu îl folosi pentru a ascunde parole sau date secrete.

Parametri

Parametru Descriere
$string Datele de codat.

Ce returnează

Textul codat Base64. base64_decode returnează datele originale sau false la eroare (în modul strict).

Exemple

Exemplul 1: Codare și decodare

<?php
$cod = base64_encode("Salut, Iași!");
echo $cod . "\n";
echo base64_decode($cod);

Rezultat

U2FsdXQsIElhyJlpIQ==
Salut, Iași!

Exemplul 2: Modul strict

<?php
var_dump(base64_decode("U2FsdXQ=", true));
var_dump(base64_decode("nu este base64!", true));

Rezultat

string(5) "Salut"
bool(false)

Exemplul 3: O imagine pusă direct în HTML

Imaginile mici pot fi incluse în pagină ca data: URI, fără un fișier separat.

<?php
imagepng(imagecreatetruecolor(1, 1), "punct.png");

$src = "data:image/png;base64," . base64_encode(file_get_contents("punct.png"));
echo '<img src="' . substr($src, 0, 40) . '...">';

Rezultat

<img src="data:image/png;base64,iVBORw0KGgoAAAANSU...">

Greșeli frecvente

  • Folosești Base64 pentru a „cripta” parole sau date personale. Este doar o codare, reversibilă de oricine.
  • Pui Base64 direct într-un URL. Semnele +, / și = au rol special acolo. Folosește rawurlencode sau varianta URL-safe: rtrim(strtr(base64_encode($date), "+/", "-_"), "=").

Comenzi înrudite

  • urlencode / urldecode: Codează un text ca să poată fi pus în siguranță într-un URL, ca valoare a unui parametru (după ?).
  • md5: Calculează amprenta MD5 a unui text: 32 de caractere hexazecimale. Bună pentru sume de control, nu pentru parole.
  • file_get_contents: Citește tot conținutul unui fișier (sau al unei adrese URL) într-un text.