Jakie znaki są niedozwolone w zmiennej $_GET w urlu?

0

Witam.

Jakie znaki są niedozwolone w zmiennej $_GET w linku url. Czy są takie?

Już tłumaczę o co mi chodzi. Tworzę systemik do uploadu plików, zapisuję je na serwerze pod nazwą time().'_'.md5($nazwa_pliku).$ext; W bazię zapisuję nazwę pod jaką rzeczywiście znajduje się plik na serwerze oraz oryginalna nazwę pliku.

Kiedy user chce pobrać ten plik z serwera to tworze link do skryptu zajmującego sie downloadem np.

download.php?filename=tu_oryginalna_nazwa.ext&file=(tu hash md5).ext

(tu hash md5).ext - to jest rzeczywista nazwa pliku pod jaka znajduje sie na serwerze.

Pierwszy raz robię coś takiego. Czy mogę spotkać się z jakimiś kolizjami że nazwa pliku może mieć jakieś niedozwolone znaki dla $_GET w url?

0

kiedyś zrobiłem coś podobnego, ale nie przechowywałem nazwy pliku w GET'cie. skorzystałem z kodu znalezionego w manualu PHP (chyba, nie pamiętam tego na 100 % bo to dawno było):

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?> 

zamiast basename($file) wrzucałem nazwę pliku z bazy a zamiast 'monkey.gif' miałem nazwę zakodowaną.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.