is_readable
is_writable
Funkcje Systemu plików
PHP Manual

# is_uploaded_file

(PHP 4 >= 4.0.3, PHP 5)

is_uploaded_file — Mówi czy plik został przysłany przez HTTP POST.

### Opis

bool is_uploaded_file ( string `$nazwa_pliku` )

Zwraca `TRUE` jeśli plik o nazwie `nazwa_pliku` został przysłany (upload) przez HTTP POST. To pomaga upewnić się, czy złośliwy użytkownik nie próbuje oszukać skryptu pracującego na plikach, tak aby działał on na plikach na których nie powinien -- na przykład /etc/passwd.

Ten rodzaj testów jest szczególnie ważny jeśli istnieje szansa, że cokolwiek robimy z przysłanymi plikami może zdradzić ich treść użytkownikowi lub nawet innym użytkownikom tego samego systemu.

Do prawidłowego działania, funkcja is_uploaded_file() wymaga argumentu jak $_FILES['userfile']['tmp_name'], - nazwa przysyłanego pliku na maszynie klienta $_FILES['userfile']['name'] nie zadziała.

Example #1 is_uploaded_file() przykład

`<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo "File ". $_FILES['userfile']['name'] ." upload prawidłowy.\n";
echo "Wyświetlam treść\n";
readfile($_FILES['userfile']['tmp_name']);
} else {
echo "Możliwy atak przez uploadowanie pliku: ";
echo "Plik '". $_FILES['userfile']['tmp_name'] . "'.";
}
?>`

is_uploaded_file() jest dostępna tylko w wersjach PHP 3 późniejszych od PHP 3.0.16, i wersjach PHP 4 późniejszych od 4.0.2. Jeśli utknołeś przy używaniu wcześniejszej wersji, możesz użyć poniższej funkcji w celu pomocy w zabezpieczeniu siebie:

> Informacja: Poniższy przykład nie zadziała w wersjach PHP 4 późniejszych od 4.0.2. To jest spowodowane zmianą wewnętrznej funkcjonalności PHP po tej wersji.

Example #2 is_uploaded_file() przykład dla PHP 4 < 4.0.3

`<?php
/* Test po stronie użytkownika na uploadowany plik */
function is_uploaded_file_4_0_2($filename)
{
if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
$tmp_file = dirname(tempnam('', ''));
}
$tmp_file .= '/' . basename($filename);
/* Użytkownik może mieć zamykający ukośnik w php.ini... */
return (ereg_replace('/+', '/', $tmp_file) == $filename);
}
/* Jak użyć tej funkcji, w starych wersjach nie masz także
* move_uploaded_file(): */
if (is_uploaded_file_4_0_2($HTTP_POST_FILES['userfile'])) {
copy($HTTP_POST_FILES['userfile'], "/place/to/put/uploaded/file");
} else {
echo "Prawdopodobny atak przez uploadowanie pliku: '$HTTP_POST_FILES[userfile]'.";
}
?>`

Patrz także: move_uploaded_file() i rozdział Obsługa uploadowanych plików w celu uzyskania prostych przykładów użycia tej funkcji.

is_readable
is_writable
Funkcje Systemu plików
PHP Manual