Loading:

PHP 7 News & Updates v7.0 - 7.4 - book

is_uploaded_file
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.



Napisz Artykuł

Listing


//Przykład #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.

//Przykład #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]'.";
}
?>
 


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=3&t=4593

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors