Ce face basename
basename păstrează ultima parte a căii, după ultimul /. Dacă dai și al doilea parametru, acel sufix este tăiat de la final, de exemplu extensia.
Este o protecție simplă când primești un nume de fișier de la utilizator: elimină orice ../ sau director din fața numelui.
Parametri
| Parametru | Descriere |
|---|---|
$path |
Calea. |
$suffix |
Opțional. Textul eliminat de la final, dacă numele se termină cu el. |
Ce returnează
Numele fișierului.
Exemple
Exemplul 1: Numele fișierului și fără extensie
<?php
$cale = "/var/www/uploads/factura-1024.pdf";
echo basename($cale) . "\n";
echo basename($cale, ".pdf");
Rezultat
factura-1024.pdf
factura-1024
Exemplul 2: Protecție la un nume primit din formular
Indiferent ce trimite vizitatorul, rămâne doar numele fișierului, în directorul pe care îl alegi tu.
<?php
$_GET["fisier"] = "../../config.php";
$nume = basename($_GET["fisier"]);
echo "documente/" . $nume;
Rezultat
documente/config.php
Greșeli frecvente
- Crezi că
basenametaie extensia automat. Fără al doilea parametru, extensia rămâne. Pentru numele fără extensie, oricare ar fi ea, foloseștepathinfo($cale, PATHINFO_FILENAME).