2013-07-26 7 views
5

1. Czy opcja biblioteki kodu wysyłkowego encrypt_name jest wyjątkowa?codeigniter załączyć enkrypcję nazwa unikatowości

Wiem, że ważna jest opcja overwrite. Jeśli overwrite jest TRUE, nadpisze, a jeśli będzie to FALSE, zmieni nazwę pliku, dodając numer na końcu nazwy.

Pytanie brzmi: Czy to zregenerować zaszyfrowaną nazwę aż znalezienie unikalnej nazwy nawet jeśli overwrite jest TRUE? Pytam o to, ponieważ oczywiste jest, że gdy chcemy zaszyfrować nazwę, oczywiście nie chcemy jej zastępować.

Problem z zmianą nazwy przez dodanie niektórych liczb polega na tym, że powoduje ona uszkodzenie nazw plików. Wiele plików będzie miało nazwy 32 znaków, a niektóre z nich mogą mieć 33 znaki, które psują koordynację.

2. Czy możliwe jest wygenerowanie kiedykolwiek zduplikowanego wyniku?

+0

Jeśli 'overwrite' ma wartość' true', wówczas zakodowana nazwa, jeśli zostanie dopasowana do istniejącego pliku, zastąpi wcześniejszy plik, w przeciwnym razie zmieni nazwę bieżącego przesłanego pliku. –

+0

Przepraszam, przepraszam, miałem na myśli nawet jeśli nadpisuję, jeśli 'FALSE'. Edytowano q. Dziękuję za notatkę. –

+0

Tak, nawet jeśli pasuje do pliku, który jest już przesłany, co jest prawie niemożliwe, zmieni nazwę pliku, który jest przesyłany. –

Odpowiedz

6

Ponieważ Codeigniter używa md5(uniqid(mt_rand())) do generowania zaszyfrowanych nazw plików, domyślam się, że znajdziesz odpowiedź w numerze PHP docs for uniquid.

Krótka odpowiedź (dla 2.) byłaby: być może, ale prawdopodobnie nie.

I aby odpowiedzieć na twoje pierwsze pytanie: nie, CI nie generuje nowej zaszyfrowanej nazwy pliku, jeśli już istnieje. Dodaje liczbę na końcu nazwy.

Krótkie spojrzenie na kod źródłowy /libraries/Upload.php, wiersz 415, pomaga.