Autor | Zpráva | ||
---|---|---|---|
staco Profil |
#1 · Zasláno: 9. 2. 2014, 18:01:01
Ahojte ,neviete mi prosim poradit s tymto problemom:
Ukladam subory na disk a do databazy,ak je nazov suboru bez diakritiky tak je to Ok,ale akonahle je pisany s diakritikou ,tak ho nespravne ulozi na disk t.j. dlzne ,makcene a pod ,a samozrejme potom ho neviem nasledne otvorit,nakolko nesedi nazov suboru Dakujem za rady! databaza je utf 8 slovak_ci tu je kod pre formular <label> Vyberte súbor</label> <input name="uploaded_file" type="file" value="<?php echo htmlspecialchars($uploaded_file); ?>" class="input-xlarge"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> </td> </tr> <tr> <td> <label> Popis k súboru</label> <textarea style="color: blue; background-color: lightyellow height:50px;" name="desc" cols="" rows="" value="<?php echo htmlspecialchars($desc); ?>"class="input-xlarge"></textarea> a tu ukladanie na disk a dB if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) { //Check if the file is JPEG image and it's size is less than 350Kb $filename = basename($_FILES['uploaded_file']['name']); $ext = substr($filename, strrpos($filename, '.') + 1); if (($ext != "exe") && ($_FILES["uploaded_file"]["type"] != "application/x-msdownload")) { $newname="uploads/".$rd2."_". ( htmlspecialchars($filename)); if (!file_exists($newname)) { if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],( htmlspecialchars($newname))))) $qry2 = 'INSERT INTO cms_articles (customer_id, submit_date, title, article_text,fdesc,floc,fdatein) VALUES ( ' . $_SESSION['customer_id'] . ', "' . date('Y-m-d H:i:s') . '", "' . mysql_real_escape_string($title, $db) . '", "' . mysql_real_escape_string (html_entity_decode(($_POST['article_text']))) . '", "' . mysql_real_escape_string ($filedesc, $db) . '", "' . mysql_real_escape_string ($newname, $db). '", NOW())'; //$result = @mysql_query($qry); $result2 = $connector->query($qry2); { |
||
lionel messi Profil |
#2 · Zasláno: 9. 2. 2014, 18:02:06
staco:
Myslím si, že je vhodnejšie (a dokonca je to tak nejak zvykom) diakritiku v názvoch súborov nepoužívať. |
||
Joker Profil |
#3 · Zasláno: 9. 2. 2014, 20:32:42
staco:
Názvy souborů s diakritikou jsou problém, s tím jsem taky kdysi laboroval. Tuším jsem se dostal i do stavu, kdy readdir nebo scandir vrátily nějaký název souboru a funkce fopen tvrdila, že ten soubor neexistuje. Takže už jen otevřít soubor pojmenovaný s diakritikou není tak jednoduché.
A zásadní problém je, že není zřejmé původní kódování názvu souboru, neboli z jakého kódování převádět. Různé souborové systémy používají různá kódování a třeba EXT v Linuxu ani nemá žádné konkrétní kódování definované (co si tam aplikace uloží, to tam má). FAT32 a HFS (z MacOS) mají svá proprietární kódování. Výsledek je, že nejlepší je diakritiku v názvech souborů nepoužívat. Další poznámky: - Ošetřování názvů souborů přes htmlspecialchars postrádá smysl. - Smysl řádku 7 v druhém kódu je taky sporný. Na $files[…]["type"] se nedá spolehnout a i kdyby, pochybuji, že vůbec existuje nějaký typ souboru standardně odesílaný s MIME typem "application/x-msdownload". Dále je dost chabá ochrana vyloučit příponu "exe", ale nechat projít cokoliv jiného (včetně jiných spustitelných souborů a včetně "EXE").
|
||
staco Profil |
#4 · Zasláno: 10. 2. 2014, 22:11:55
Joker:
Dakujem pekne za odpovede,este by som sa snad opytal na moznost , ze by som ten nazov suboru pred odoslanim na disk pomocou nejakej funkcie zbavil diakritiky (nieco ako set names V sqL) A TYM by mi to na disk ulozilo uz bez diakritiky Existuje nieco take v php |
||
Davex Profil |
#5 · Zasláno: 10. 2. 2014, 22:55:42
Zkus toto: Vytvoření přátelského URL
|
||
Časová prodleva: 10 let
|
0