Помощник
|
запрет загрузки файла на русском языке |
Электроник
|
Сообщение
#1
|
||
|
|
||
|
|||
Licoric |
8.7.2010, 5:43;
Ответить: Licoric
Сообщение
#2
|
|
Переименовывай файл во что-то другое. Оригинал имени - в базу (или еще куда нибудь). При скачивании просто подставляй. Ну это как один из вариантов.
ps $maxfilesize = 100000000; // Максимально допустимый размер файла удобней писать как $maxfilesize = 1024*1024*95; Где 95 - количество допустимых мегабайт. |
|
|
ZhukV |
8.7.2010, 10:31;
Ответить: ZhukV
Сообщение
#3
|
|
Я к примеру использую вот такую функцию:
[PHP] /*--------------------------------------------------------- Функция перекодирования строки из кирилицы в латиницу и наоборот ---------------------------------------------------------*/ function strToCyrilic($text = "", $convert = "cyr"){ $STR_ARRAY = array(" " => "_","а"=>"a","б"=>"b","в"=>"v","г"=>"h","д"=>"d","е"=>"e","є"=>"ye","ж"=>"zh","и"=>"u","і"=>"i","з"=>"z","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"y","ф"=>"ph","х"=>"h","ц"=>"tc","ч"=>"ch","ш"=>"sh","щ"=>"sh","ь"=>"","ю"=>"yu","я"=>"ya","э"=>"e","ы"=>"u","ъ"=>""); $convert = strtoupper($convert); $K["RUS"] = array_keys($STR_ARRAY); $K["CYR"] = array_values($STR_ARRAY); if($convert == "CYR"){ return str_replace($K["RUS"],$K["CYR"],$text); } else if($convert == "RUS"){ return str_replace($K["CYR"],$K["RUS"],$text); } } [/PHP] Надеюсь, что ее сутность понятна. |
|
|
Arks |
8.7.2010, 10:48;
Ответить: Arks
Сообщение
#4
|
|
[PHP]
function encodestring($text) { $searchurl = array("а", "б","в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б","В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", " "); $replaceurl = array("a", "b","v", "g", "d", "e", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "w", "tz", "y", "mz", "je", "ju", "ja", "A", "B","V", "G", "D", "E", "JO", "ZH", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "C", "CH", "SH", "W", "TZ", "Y", "MZ", "JE", "JU", "_"); $text = str_replace($searchurl, $replaceurl, $text); return $text; } [/PHP] ZhukV, не надо делать два лишних массива |
|
|
Mulder_hb |
9.7.2010, 21:24;
Ответить: Mulder_hb
Сообщение
#5
|
|
Если задача стоит лишь в запрете кирилических имен, то можно прогонять эти имена через регулярку, вроде этой:
/[а-я]+/is Если есть результат, то в имени есть кирилические буквы. |
|
|
Электроник
|
Сообщение
#6
|
|
что это с форумом происходит? как будто бд тормозит, хостинг паршивый?
обычно с ответами не густо, а тут столько, у меня наверно день рождения :) Licoric спасибо за вариант, на счёт удобнее писать, тут с тобой согласен (я методом тыка просчитывал сколько нужно нулей написать для 7.5 мегабайт:) ZhukV точно не помню, но кажется это вы эту форму загрузки, где-то на форуме выкладывали, если это так то спасибо за неё ещё раз. сутность понятна от части :) Arks воспользовался вашим вариантом, спасибо за него (его мне проще понять, чем остальные) здравствуйте Mulder, вопрос конечно стоял о запрете, и тут вы правы, но я тогда не подумал о варианте переименования названий, а теперь думаю, он подходит больше чем просто запрет. и честно говоря не знаю что такое регулярка, я только учусь, информации много, и не всё понятно, осваиваю постепенно, спасибо за помощь сделал вот так: [php]<?php $uploaddir = 'img_r/'; // Папка куда закачивать файлы $extentions = array(".gif",".jpg",".zip",".rar"); // Массив разрешенных форматов файлов $userfilesize = $_FILES['userfile']['size']; // Вычисление размера загружаемого файла $maxfilesize = 100000000; // Максимально допустимый размер файла function encodestring($text) { $searchurl = array("а", "б","в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б","В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", " "); $replaceurl = array("a", "b","v", "g", "d", "e", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "w", "tz", "y", "mz", "je", "ju", "ja", "A", "B","V", "G", "D", "E", "JO", "ZH", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "C", "CH", "SH", "W", "TZ", "Y", "MZ", "JE", "JU", "_"); $text = str_replace($searchurl, $replaceurl, $text); return $text; } $do = basename($_FILES['userfile']['name']); $posle = encodestring($do); $uploadfile = $uploaddir . $posle; if((in_array(strrchr($_FILES['userfile']['name'], "."),$extentions)) && ($maxfilesize >= $userfilesize)) // { // Если копирование произведено удачно, выводим сообщения if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) // { $fname = ($_FILES['userfile']['name']); // Вычисление имени файла и присвоение переменной $fname1 = encodestring($fname); $fname01 = encodestring($fname); echo "Ваш файл: <a href='http://localhost/podpiska/img_r/$fname1'>$fname01</a>"; } else { echo ("<script language=\"javascript\">alert(\"Ошибка при передаче файла на сервер!\");</script>"); echo ("<script language=\"javascript\">history.back();</script>"); } } // Если превышен максимальный размер файла elseif ($maxfilesize < $userfilesize) { echo ("<script language=\"javascript\">alert(\"Превышен максимальный размер файла!\");</script>"); echo ("<script language=\"javascript\">history.back();</script>"); } else { // Если расширение файла имеет недопустимое расширение echo ("<script language=\"javascript\">alert('Файл имеет недопустимое расширение!');</script>"); echo ("<script language=\"javascript\">history.back();</script>"); exit(); } ?> [/php]на локальном сервере всё работает отлично, а не на локальном как должно, не работает закидываю это:
на сервере это:
как думаете почему так? я неправильно сделал? |
|
|
Apay |
15.7.2010, 1:02;
Ответить: Apay
Сообщение
#7
|
|
кодировка страницы какая? если все в utf-8, то str_replace может не пройти, как и strrchr
|
|
|
Электроник
|
Сообщение
#8
|
|
кодировка страницы какая? если все в utf-8, то str_replace может не пройти, как и strrchr я не знаю как определить кодировку страницы в сообщении выше, там где написано: сделал вот так: PHP код: в приведённом коде и есть всё содержимое страницы кодировка там не указанна, но ведь она должна же быть, тогда как её узнать? пыс: можно ли в Notepad++ проверить кодировку, если да то как |
|
|
Apay |
15.7.2010, 8:43;
Ответить: Apay
Сообщение
#9
|
|
все зависит от странички где форма, поставте там (если нет) доктайп и мета-контент-тайп
немного переделал, так работает в утф8 [PHP]<!DOCTYPE html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <?php define( 'MAXFILESIZE', 100000000 ); define( 'UPLOADDIR', 'img_r/' ); define( 'EXTENTIONS', '#\\.(gif|jpe?g|zip|rar)#ui' ); function encodestring_utf8( $text){ static $s = array( '#а#u', '#б#u','#в#u', '#г#u', '#д#u', '#е#u', '#ё#u', '#ж#u', '#з#u', '#и#u', '#й#u', '#к#u', '#л#u', '#м#u', '#н#u', '#о#u', '#п#u', '#р#u', '#с#u', '#т#u', '#у#u', '#ф#u', '#х#u', '#ц#u', '#ч#u', '#ш#u', '#щ#u', '#ъ#u', '#ы#u', '#ь#u', '#э#u', '#ю#u', '#я#u', '#А#u', '#Б#u','#В#u', '#Г#u', '#Д#u', '#Е#u', 'Ё', '#Ж#u', '#З#u', '#И#u', '#Й#u', '#К#u', '#Л#u', '#М#u', '#Н#u', '#О#u', '#П#u', '#Р#u', '#С#u', '#Т#u', '#У#u', '#Ф#u', '#Х#u', '#Ц#u', '#Ч#u', '#Ш#u', '#Щ#u', '#Ъ#u', '#Ы#u', '#Ь#u', '#Э#u', '#Ю#u', '# #u' ), $r = array( 'a', 'b','v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'w', 'tz', 'y', 'mz', 'je', 'ju', 'ja', 'A', 'B','V', 'G', 'D', 'E', 'JO', 'ZH', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'CH', 'SH', 'W', 'TZ', 'Y', 'MZ', 'JE', 'JU', '_'); return preg_replace( $s, $r, $text ); } $err = ''; if( ! preg_match( EXTENTIONS, $_FILES['userfile']['name'] ) ) $err = 'Файл имеет недопустимое расширение!'; elseif( MAXFILESIZE < $_FILES['userfile']['size'] ) $err = 'Превышен максимальный размер файла!'; else{ $filename = encodestring_utf8( $_FILES['userfile']['name'] ); if( ! move_uploaded_file( $_FILES['userfile']['tmp_name'], UPLOADDIR.$filename ) ) $err = 'Ошибка при передаче файла на сервер!'; } echo $err ? '<script type="text/javascript">alert("'.$err.'");history.back();</script>'; : 'Ваш файл: <a href="http://localhost/podpiska/img_r/"'.$filename.'">'.$filename.'</a>'; ?> </body> </html> [/PHP] |
|
|
Электроник
|
Сообщение
#10
|
|
взвесил всё и наверно оставлю как есть (мозги кипят)
надеюсь у меня там всё правельно, и хоть как-то но работать будет спасибо Apay и хорошего вам дня! |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Нужны тексты на английском языке драгоценные камни |
4 | GlazAlmaz | 2395 | 20.8.2023, 4:29 автор: projectadmin |
|
Пишу статьи на русском – Опыт 10+ лет, от 100₽ за 1000 знаков | 9 | duoseo | 1744 | 28.6.2023, 10:08 автор: duoseo |
|
Копирайтинг и рерайтинг на английском языке seo копирайтинг, написание статей на английском языке |
42 | D007 | 19956 | 30.5.2023, 12:07 автор: D007 |
|
Текст для сайта на английском языке | 33 | D007user | 18110 | 26.1.2022, 17:16 автор: D007 |
|
нужен копирайтер на русском (крипта, сра) написание кейсов |
0 | caa | 1523 | 16.2.2021, 14:09 автор: caa |
Текстовая версия | Сейчас: 20.4.2024, 16:33 |