Вопрос № 57091: Здравствуйте.
Вопрос такой: Вношу сведения в Базу данных на русском языке, при выводе вместо русских букв отображается какая-то куралесица. А также скорее всего связанный с первым вопрос: У меня на сайте есть файлы с русским названием, при попыт...Вопрос № 57149: Ув.эксперты, подскажите как с помощь PHP закачать файл на сервер.
...Вопрос № 57175: подскажите где можно скачать хорошие книги для обучения PHP...
Вопрос № 57.091
Здравствуйте.
Вопрос такой: Вношу сведения в Базу данных на русском языке, при выводе вместо русских букв отображается какая-то куралесица. А также скорее всего связанный с первым вопрос: У меня на сайте есть файлы с русским названием, при попытке скачать их пишет что файла http://site/%5%6%7.mid не существует, как избавиться от этого.
У меня установлен сервер Apache 2.0.55 и PhP 4.4.2.
Спасибо.
Отправлен: 29.09.2006, 00:30
Вопрос задал: KeeperX (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Punk_UnDead
Здравствуйте, KeeperX!
везде укажите правильно кодировку
это раз
при после каждого коннекта перед чтением/добавлением сделайте
mysql_query("SET NAMES cp1251;");
и вот ещё ссылка
Приложение:
--------- всё испытано на себе
Ответ отправил: Punk_UnDead (статус: 1-ый класс)
Ответ отправлен: 29.09.2006, 00:47
Отвечает: Cimus
Здравствуйте, KeeperX!
Во время создания таблиц указвайте кодировку CHARSET=cp1251.
CREATE TABLE `название` (
структура таблицы
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
После подслючения к базе данных выполните следующее
mysql_query("SET NAMES cp1251;", $bdlink);
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 8-ой класс)
Ответ отправлен: 29.09.2006, 01:37
Отвечает: Бородин Александр Олегович
Здравствуйте, KeeperX!
Здравствуйте, KeeperX!
1) Данные на русском языке не отображаются, потому что у Вас какие-то траблы с кодировкой. Поставьте кодировку cp1251.
2) Файлы с "кириллическими" именами никогда в жизни на сервере работать не будут. Видите ли, на оси UNIX(а я подозреваю, что на сервере установлена именно она) "кириллические" имена не воспринимаются. Переименуйте файлы "латинически".
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Отвечает: Cimus
Здравствуйте, Гузенко Руслан Николаевич!
Для начала посмотрим саму форму:
в свойствах формы, помимо параметра action и метода отправки, необходимо указать свойство enctype. Это свойство определяет в какой кодировке должны быть отправленны данныые. Для файлов, особенно бинарных, кодировки недолжно быть вообще, поэтому указываем enctype="multipart/form-data".
После загрузки файлов на сервер, данные можно получить из массива $HTTP_POST_FILES. Этот массив являеться двумерным. Первый уровень определяет имена полей, в которых находяться параметры файла. Одна форма может отправлять несколько файлов, поэтому $HTTP_POST_FILES['поле'] - указывает на нужный файл. Для вормы из примера это будет $HTTP_POST_FILES['file1'] и $HTTP_POST_FILES['file2'] соответственно.
Второй уровень определяет свойства загруженного файла. Здесь есть следующие элементы:
1)name - имя файла источника на машине клиента
2)type - тип файла
3)tmp_name - имя временного файла, куда был загруженфайл пользователя
4)size - размер файла
5)error - номер ошибки
На unix-серверах временный файл создаёться (чаще всего) в каталоге /temp, который являеться общедоступным. Будет намного эффективнее если в сценарии загружаемый файл будет скопирован в специально отведённый для этого каталог.
В данном примере файл копируеться в каталог со скриптом
if(copy($HTTP_POST_FILES['file1']['tmp_name'],'./'.$HTTP_POST_FILES['file1']['name']))
print 'копирование завершено';
else
print 'ошибка копирования';
В само форме можно указать максимальный размер загружаемого файла
<input type=hidden name="max_file_size" value=300> - максимум 300 байт
Приложение:
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 8-ой класс)
Ответ отправлен: 29.09.2006, 17:41
Отвечает: Загиров Рустам
Здравствуйте, Гузенко Руслан Николаевич!
Добавления к предыдущему ответу:
1)Вместо массива $HTTP_POST_FILES можно использовать $_FILES
2) обычно пользуються специальной функцией move_uploaded_file() для перемещения, вместо копирования.
Если превышен размер можно дать сообщение:
$data=$_FILES['file1'];
if ($data['error']==2 || $data['error']==1) print "Превышен размер";
Ответ отправил: Загиров Рустам (статус: Практикант)
Ответ отправлен: 29.09.2006, 23:19
Отвечает: Бородин Александр Олегович
Здравствуйте, Гузенко Руслан Николаевич!
Для этого существует функция copy. Советую ознакомиться с ее синтаксисом, больше Вам ничего не понадобится.
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
http://www.realcoding.net/downloads/view/1604
http://c-books.info/books/load.php?ty=php -тут несколько кинг по PHP
http://wmate.ru/ebooks/cat2/
http://sweb.ws/books/1.html
Отвечает: Бородин Александр Олегович
Здравствуйте, Taliya!
В любом приличном книжном магазине можно купить. Особенно, если Вы живете в более-менее крупном городе, типа Москвы. Рекомендую следующие книжки:
- "Разработка WEB-приложений с помощью PHP и MySQL", Люк Веллинг и др.
- "Самоучитель PHP", М. Кузнецов, И. Симдянов.
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.