Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка текста на web совместимость
 
 автор: Eugene77   (10.05.2007 в 17:04)   письмо автору
 
 

Как проверить, является ли вводимая в форму строка, web совместимым именем файла? Кратким именем файла?
Как преобразовать её, если нет совместимости? Есть подход, гарантирующий уникальность преобразования? То есть такое преобразование, которое из различных сток всегда даст различные строки?

   
 
 автор: Temnovit   (10.05.2007 в 17:18)   письмо автору
 
   для: Eugene77   (10.05.2007 в 17:04)
 

Что вы подразумеваете под web совместимым именем файла?

   
 
 автор: Eugene77   (12.05.2007 в 14:47)   письмо автору
 
   для: Temnovit   (10.05.2007 в 17:18)
 

В форму вводится ник.
Дальше из этого ника я делаю файл.
Мне надо, чтобы этот файл можно было передавать по WEB и открывать браузерами.
Расширение я, разумеется, добавлю.
Но вот преобразование ника в имя файла оказалось для меня трудноватой задачей. Надо предусмотреть все варианты несовместимости ников с именами файлов и выходы из всех этих ситуаций. Может как-то упростить задачу? Но я толком и не знаю даже что сейчас совместимо с WEB, а что нет. Можно конечно дойти до крайности - потребовать совместимости с досом, но хотелось бы занять максимально толерантную позицию...
Словом, посоветуйте, кто что может!
Кто какие проверки на совместимость делал? Может быть из ниточек - рубашку сошью!

   
 
 автор: CrazyAngel   (11.05.2007 в 08:20)   письмо автору
 
   для: Eugene77   (10.05.2007 в 17:04)
 

насчет уникального имени можно делать так ...

<?php
$name 
md5(microtime())."чего-то там";
?>

   
 
 автор: Eugene77   (12.05.2007 в 14:49)   письмо автору
 
   для: CrazyAngel   (11.05.2007 в 08:20)
 

Спасибо, но я боюсь имя, начинающееся с цифры не все браузеры "проглотят".
Кто знает наверняка? Отзовитесь!

   
 
 автор: coloboc66   (12.05.2007 в 17:11)   письмо автору
 
   для: Eugene77   (12.05.2007 в 14:49)
 

Ни фига не понимаю: а почему нельзя при вводе ника задать условие типа "имя должно быть написано только латинскими буквами и иметь не более 5-ти (к примеру) символов"?! А потом делайте себе файл...

   
 
 автор: Eugene77   (15.05.2007 в 20:29)   письмо автору
 
   для: coloboc66   (12.05.2007 в 17:11)
 

Да я понимаю, что програмистам этого не понять, я и сам поднаторел в латинице, разбираясь в разных текстах на английском языке написанных. Пожалуй не одну сотню страниц прочёл, на тысячи, может быть, пора уже считать, но где-то в глубине памяти у меня осталось воспоминание, о том времени, когда я знал только русский алфавит. Тогда задача сочинить значимое по звучанию слово и записать его латинскими буквами была просто неразрешима. А просто тарабарский ник там по контексту не подходит. Так что задача реальная - я её из пальца не высасывал!

   
 
 автор: CrazyAngel   (16.05.2007 в 06:24)   письмо автору
 
   для: Eugene77   (12.05.2007 в 14:49)
 

эм...

<?php
$name 
"files_".md5(microtime())."чего-то там";
?> 

   
 
 автор: Trianon   (16.05.2007 в 10:18)   письмо автору
 
   для: CrazyAngel   (16.05.2007 в 06:24)
 

md5 то зачем? Майкротайма вполне хватило бы.

   
 
 автор: Eugene77   (17.05.2007 в 08:16)   письмо автору
 
   для: Trianon   (16.05.2007 в 10:18)
 

Это всё не то!
Уникальность имени - конечно здорово, но мне не то нужно...
Извините, если не сумел объяснить!
Подумаю, иначе как-то спрошу. Разобью проблему на детали.
Спасибо, за поддержку!
:(

   
 
 автор: Drago   (17.05.2007 в 11:55)   письмо автору
 
   для: Eugene77   (17.05.2007 в 08:16)
 

При регистрации пользователя, укажите что допустимы только символы латиницы, кирилицы и, скажем, "_", "-", " " (подчеркивание, тире, пробел). Либо, разрешите все символы, кроме этих: "\", "/", ":", "*", "?", """, "<", ">", "|", которые являются недопустимыми в имени файла. Причем не в WEB, а в операционной системе.

Чтобы файлы, имя которых состоит из символов кирилицы, корректно обрабатывались операционной системой, вы можете применить к ним транслитерацию. То есть, записать латинскими буквами. И при работе с ними постоянно декодировать.

Но все же, давать названия файлам в зависимости от ника - не самый лучший способ.
Если вы присваиваете пользователям уникальные id номер, то и в имени файла лучше использовать id.
Если же нет, то записывайте имя файла, предворительно обработав его функцией md5().

   
 
 автор: Faraon   (17.05.2007 в 12:08)   письмо автору
 
   для: Drago   (17.05.2007 в 11:55)
 

Я так понимаю что человеку нужно конкретное совпадение ника и имени файла для проверки в регистрации. Вводимый ник при регистрации сверяется с именем файла, и если такой файл существует, то выдает что такой ник уже есть

   
 
 автор: Drago   (17.05.2007 в 12:29)   письмо автору
 
   для: Faraon   (17.05.2007 в 12:08)
 

Так правильно, а что мешает при проверке, текст из формы закодировать транслитом, либо функцией md5() и искать файл с таким именем?

   
 
 автор: Eugene77   (17.05.2007 в 20:16)   письмо автору
 
   для: Drago   (17.05.2007 в 11:55)
 

давать названия файлам в зависимости от ника - не самый лучший способ
Стоит-ли спешить так обобщать на все случаи жизни?
Я запланировал сделать альтернативную регистрацию. Для двух различающихся групп. Одна - прямиком в базу будет ссыпаться, а для каждого из другой группы будет делаться ник - директория. Так получается проще, естетвенней в моей ситуации. Кроме того, большая часть сайта будет работать, даже если с базой какие-то временные трудности случатся.
Но мне потом надо читать список этих директорий и выводить его на экран всем желающим. Неудобно, если он закодирован будет.
Транслитерация кажется хорошей идеей, как она делается? Надо наверно узнать правила. Или есть готовая функция?
Кстати, мне как-то говорили, что эти функции кодирования ещё не на всех хостах работают. Их не спешат подключать. Слухи?

   
 
 автор: Trianon   (17.05.2007 в 20:35)   письмо автору
 
   для: Eugene77   (17.05.2007 в 20:16)
 

Почему неудобно , если логин будет закодирован?
помнится, Д.Котеров (dklab.ru) создавал что-то подобное, но его цель была - сделать ЧПУ по названиям тем. И хотя в отличие от его целей, Ваша смыслом не наделена, поглядите в его форум, возможно, Вам понравится.

   
 
 автор: Drago   (18.05.2007 в 01:37)   письмо автору
 
   для: Eugene77   (17.05.2007 в 20:16)
 

>давать названия файлам в зависимости от ника - не самый лучший способ
>Стоит-ли спешить так обобщать на все случаи жизни?


На все случаи может и не стоит, но в вашей ситуации, я бы так не делал. Особенно, учитывая то, что сам через это прошел.

А если, к примеру, пользователь захочет сменить ник? Тогда придется менять и название директории/файла. В принципе, ничего сложного. Но вы должны предвидить эту ситуацию, и сделать так, чтобы она не принесла никакого вреда.

>Я запланировал сделать альтернативную регистрацию. Для двух различающихся групп. Одна - прямиком в базу будет ссыпаться, а для каждого из другой группы будет делаться ник - директория. Так получается проще, естетвенней в моей ситуации. Кроме того, большая часть сайта будет работать, даже если с базой какие-то временные трудности случатся.
>Но мне потом надо читать список этих директорий и выводить его на экран всем желающим. Неудобно, если он закодирован будет.


А что будет храниться в этих "ник - директориях" ?
Подумайте, может будет лучше задавать имя директории используя ID юзера, вместо его ника? А в самой директории хранить конфигурационный файл, в котором будет указан ник и другие настройки этого юзера. Плюс, создать отдельный файл, в который будут записываться соответствия ID и ника всех пользователей.

>Транслитерация кажется хорошей идеей, как она делается? Надо наверно узнать правила. Или есть готовая функция?
>Кстати, мне как-то говорили, что эти функции кодирования ещё не на всех хостах работают. Их не спешат подключать. Слухи?


В свое время, я пользовался одной функцией с этого форума, к сожалению, у меня не сохранилась. Там кодирование происходило по средствам str_replace(). Поищите по форуму, может найдете более усовершенствованую.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования