Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie poprawności nazwy pliku
Forum PHP.pl > Forum > PHP
black_jack
Siemka,

  1. else if(!preg_match('/[A-Za-z0-9._]/', $plik[name]));


Chciałbym sprawdzić czy user przesyła plik z poprawną nazwą pliku. Dozwolone znaki "a-z A-Z 0-9 . _". $plik[name]) zawiera np. alicja.jpg.

Mój kod oczywiście nie działa tak jak powinien ;p

HELP smile.gif
mortus
Sprawdzenie przez odwrotność, jeśli w ciągu znaków występują inne znaki (lub też ciąg znaków) niż te przewidziane to znaczy, że nazwa pliku jest nieprawidłowa:
  1. if(preg_match('#[^a-zA-Z0-9\._]*#', $plik['name']) == 0) {
  2. // nazwa pliku jest prawidłowa
  3. }
  4. // lub też
  5. if(preg_match('#[^a-zA-Z0-9\._]*#', $plik['name']) > 0) {
  6. // nazwa pliku jest nieprawidłowa
  7. }


preg_match() zwraca FALSE w przypadku błędu.

EDIT:
Zapomniałem o *.
wNogachSpisz
A można wiedzieć po co ograniczasz w ten sposób swoich użytkowników? Pomysł wydaje się cokolwiek kiepski - przynajmniej na pierwszy rzut oka.
black_jack
Jest to skrypt do budowania linków z przesyłanych obrazków na serwer.

User przesyła plik wasy.jpg.

Skrypt buduje mu link http://mojadomena.pl/folder/wasy.jpg

Wyobrażasz sobie takie linki: http://mojadomena.pl/folder/wąsy%*$#%Yń.jpg questionmark.gif
greycoffey
  1. md5(); // po linku i nie musisz się martwić niepotrzebnymi znakami i kwestiami bezpieczeństwa
black_jack
Oto mi chodziło:

  1. else if(preg_match('#[^a-zA-Z0-9._]#', $plik[name]))


Poprawność $plik[name] sprawdzam wcześniej. / oraz * nie są potrzebne bo $plik[name] zawiera tylko "kasia.jpg" lub "fajnie45.gif".

MD5 mnie nieurządza tutaj ponieważ dostałbym zakodowane "far4qr45qt4.jpg" smile.gif .

Problem solved. Dzięki
greycoffey
Cytat(black_jack @ 4.05.2012, 23:13:31 ) *
Oto mi chodziło:

  1. else if(preg_match('#[^a-zA-Z0-9._]#', $plik[name]))


Poprawność $plik[name] sprawdzam wcześniej. / oraz * nie są potrzebne bo $plik[name] zawiera tylko "kasia.jpg" lub "fajnie45.gif".

MD5 mnie nieurządza tutaj ponieważ dostałbym zakodowane "far4qr45qt4.jpg" smile.gif .

Problem solved. Dzięki

Btw. kropka w wyrażeniu regularnym powinna być zabackslashowana(?) "\.", w innym wypadku zastępuje wszelkie inne znaki.
wNogachSpisz
Wyobrażam sobie że przyjmuesz plik o dowolnej nazwie, a potem kombinujesz żeby zrobić dobry link.
Ty traktujez klienta pałką, zamiast troche pogłówkować - śmiech na sali.
black_jack
No dobrze, a jaka jest Twoja koncepcja rozwiązania tego problemu?

Po co mam teraz skrypt przebudować skoro działa tak jak chciałem?
wNogachSpisz
Cytat(black_jack @ 4.05.2012, 23:24:37 ) *
No dobrze, a jaka jest Twoja koncepcja rozwiązania tego problemu?

Już napisałem. Przyjąć każdy plik.

Cytat(black_jack @ 4.05.2012, 23:24:37 ) *
Po co mam teraz skrypt przebudować skoro działa tak jak chciałem?

Po to żeby klient nie pękł ze śmiechu kiedy jego upload zostanie odrzucony z powodu nieprawidłowej nazwy pliku biggrin.gif
Pęknięci klienci statystycznie rzadziej wracają na Twój sajt.
pedro84
Cytat(black_jack @ 4.05.2012, 23:24:37 ) *
No dobrze, a jaka jest Twoja koncepcja rozwiązania tego problemu?

Generuj sobie unikalny hash dla kazdego pliku.

Cytat(black_jack @ 4.05.2012, 23:24:37 ) *
Po co mam teraz skrypt przebudować skoro działa tak jak chciałem?

Bo Cie ludzie smiechem zabija. A powaznie, to jest to troszke bez sensu ograniczanie userow - chcialoby Ci sie zmieniac nazwy plikow przed uploadem?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.