Вопрос № 58108: Подскажите ссылочку на парсер для работы с XML на PHP, если можно с примером и хелпом по функциям, т.к. дело это для меня новое. Заранее спасибо...Вопрос № 58114: Доброго времени суток.
1 Написал код, и не могу понять в чем причина, в приложении код и что выводит, код уже сильно поправлен в сторону отладки, но совет приму.
Что происходит: лишнее присваивается переменной $topics, почему не могу понять. ...Вопрос № 58128: Уважаемые эксперты!
Вот такой вопрос как извлечь из Mysql-базы текст (longtext) не целиком, а например с какой либо позиции "а" по "б".
PS Для лучшего представления: делаю архив статей, и нужна разбивка по страницам (...Вопрос № 58129: Как проверить тип переданного на сервер файла? Я умею проверять тип только по расширению, а как проверить настоящий тип? (ведь можно картинку переименовать в *.txt и передать) ...Вопрос № 58131: Здравствуйте! Если информация, полученная пользователем, выводится на экран - это ведь дыра в безопасности? А как с этим бороться?
Ну там символы всякие изменять/заменять/удалятЬ? Расскажите об этом подробней!...
Вопрос № 58.108
Подскажите ссылочку на парсер для работы с XML на PHP, если можно с примером и хелпом по функциям, т.к. дело это для меня новое. Заранее спасибо
Отвечает: Н.В.
Здравствуйте, Бабин Виктор Васильевич!
Нашёл следующие статьи:
http://providerz.ru/articles/php/xml-sax-dom-intro.html
http://web-support.ru/articles/2/159_1.shtml
http://www.sdteam.com/?tid=631
И ещё несколько страниц со скриптами (может, пригодятся)
http://www.creater.ru/index.php?tid=83&gid=4&topic_id=4
http://www.vanta.ru/script/catalog.php?cat=48&clas=0
Удачи!
--------- http://TheDelphi.Ru
Ответ отправил: Н.В. (статус: 6-ой класс)
Ответ отправлен: 08.10.2006, 11:22
Вопрос № 58.114
Доброго времени суток.
1 Написал код, и не могу понять в чем причина, в приложении код и что выводит, код уже сильно поправлен в сторону отладки, но совет приму.
Что происходит: лишнее присваивается переменной $topics, почему не могу понять. Об'ясните почему (где ошибка) и как исправить.
2 Читал справочник по php (This file was generated: Thu May 25 0:51:15 2006 Go to http://www.php.net/docs.php to get the actual version.) который частично русский. Читая понял возможность создания двухмерных массивов.
Вопрос: Как создать и использовать.
Отвечает: Игорь Елизаров
Здравствуйте, Алексеенко С.Ю.!
То что вывели эхи
<!-- 0 !--><!-- 1 !--><!-- # !--><!-- 0 !--><!-- 1 !-->
----------
значение $topics
<hr><b>SOFT, Программы для Вашего компьютера</b><br>0<hr><b>SOFT, Программы для Вашего компьютера</b><br>0<hr><b>Hard, Все о компьютерном железе.</b><br>1
Из того, что получилось, видно, что данные в таблице Topics для поля 2 не уникальны, даже в индексах есть повторы 0 1 крокозябля 0 1 . Это говорит о том, что в исходной таблице есть записи с одинаковыми значениями поля Topics.так и задумано или это баг ?
Если хотите добиться уникальности надо изменить запрос, оставив там только те поля. которые нужны и сделав группировку по полю topics.
с уважением, Игорь
Ответ отправил: Игорь Елизаров (статус: 6-ой класс)
Ответ отправлен: 09.10.2006, 00:09 Оценка за ответ: 4 Комментарий оценки: Загляните пожалуйста в мини-форум. Спасибо.
Отвечает: HookEst
Здравствуйте, Алексеенко С.Ю.!
По второму вопросу привожу цитату из руководства по PHP (http://ru.php.net/download-docs.php)
Поскольку значение массива может быть чем угодно, им также может быть другой массив. Таким образом вы можете создавать рекурсивные и многомерные массивы.
Отвечает: Загиров Рустам
Здравствуйте, Golden Spider!
Для этого существует функция SUBSTRING в MySQL:
$nach=1;
$kon=100;
mysql_query("SELECT SUBSTRING(text,$nach,$kon) FROM articles")
Ответ отправил: Загиров Рустам (статус: Практикант)
Ответ отправлен: 08.10.2006, 15:02 Оценка за ответ: 5 Комментарий оценки: Thank you very much!
Отвечает: Samum
Здравствуйте, Golden Spider!
MySQL богата различными функциями для обработки строк на стороне сервера. Для ваших целей подойдет такой запрос:
где $page_num - номер страницы. Это, конечно, не истина в последней инстанции, но общее направление движения уже видно :)
Кстати, если маркер новой страницы оформить в качестве html комментария, то от использования функции replace можно будет отказаться.
--------- Если бы программистам за их ошибки отрывали части тела, то в конце концов им пришлось бы использовать голову!
Ответ отправил: Samum (статус: Специалист)
Ответ отправлен: 08.10.2006, 15:46 Оценка за ответ: 5 Комментарий оценки: Круто! Каждый день работаю с Mysql и каждый нахожу новые фичи! Спасибо!
Вопрос № 58.129
Как проверить тип переданного на сервер файла? Я умею проверять тип только по расширению, а как проверить настоящий тип? (ведь можно картинку переименовать в *.txt и передать)
Ответ отправил: Загиров Рустам (статус: Практикант)
Ответ отправлен: 08.10.2006, 15:16
Отвечает: Евгений Крюков
Здравствуйте, Бобровский Сергей Сергеевич!
Такой функции нет, мы можем проверять лишь некоторые типы файлов. Например, с картинками все просто - при устанновленном расширении GD есть функция getimagesize, которая возвращает массив, в котором 3 элементом идет тип графического файла. Вот функция:
} показывающая, как работает getimagesize
--------- Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Студент)
Ответ отправлен: 08.10.2006, 15:16 Оценка за ответ: 5 Комментарий оценки: спасибо, как раз то, что нужно
Отвечает: Cimus
Здравствуйте, Бобровский Сергей Сергеевич!
После загрузки файлов на сервер, данные можно получить из массива $HTTP_POST_FILES или $_FILES.
Этот массив является двумерным. Первый уровень определяет имена полей, в которых находятся параметры файла. Одна форма может отправлять несколько файлов, поэтому $HTTP_POST_FILES['поле'] - указывает на нужный файл. Для формы из примера это будет $HTTP_POST_FILES['file1'] и $HTTP_POST_FILES['file2'] соответственно.
Второй уровень определяет свойства загруженного файла. Здесь есть следующие элементы:
1)name - имя файла источника на машине клиента
2)type - тип файла
3)tmp_name - имя временного файла, куда был загружен файл пользователя
4)size - размер файла
5)error - номер ошибки
Если на сервер закачать файл в формате GIF то в поле type будет содержаться текст imagegif. До знака слэш находиться тип image, а после слэша стоит расширение файла. Для JPEG-файлов после слэша можно увидеть одно из расширений jpg, ipeg или pjpeg, а для PNG-файла будет png.
Если передать на сервер простой текстовый файл с расширением gif в переменной type будет text/plain. Хотя судя по расширению, этот файл должен быть графическим, программа «видит», что тип файла текстовый. Получается, что нельзя верить расширению, а вот типу фала можно.
Вот пример проверки файла.
<?
preg_match(“’([a-z]+)/[x-]*([a-z]+)’”, $_FILE[‘file1’][‘type’],$ext);
print ‘<p>’. $ext[1];
print ‘<p>’. $ext[2];
switch($ext[2])
{
Case “jpg”:
Case “jpeg”:
Case “pjpeg”:
Case “gif”:
Case “png”:
Break;
Default:
Die(‘<p>Это не картинка’);
}
?>
Но этого недостаточно. Нелишне проверить размер картинки. Даже если у Вас нет ограничения на размер файла, полезно вызвать функцию getimagesize().
Этой фукции передаётся путь до файла, а в результате мы получаем размеры картинки.
Функция getimagesize() возвражает массив из свойст графического файла. В этом массиве элементы нумеруются с нуля и содержат следующее:
0) ширина картинки
1) высота
2) тип, где 1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP, 7=TIFF (формат intel), 8=TIFF (формат motorola), 9=JPC, 10=JP2, 11=JPX
3) строка вида height=yyy width=xxx.
Таким образом файл можно признать правильным только в случае, когда значения нулевого и первого элемента больше нуля. Картинка не должна иметь ширину или высоту равной нулю, иначе она бессмысленна или содержит некорректные данные.
P.S.
Недавно была найдена ошибка в функциях определения размера в PHP. Да, функций несколько. Для каждого типа файла есть своя функция, но все они объединены в в одну getimagesize() . Если сценарию передать графический файл TIFF, в котором будет указан размер -8, то сценарий попадает в бесконечный цикл.
Приложение:
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 8-ой класс)
Ответ отправлен: 08.10.2006, 18:31 Оценка за ответ: 5 Комментарий оценки: preg_match("'([a-z]+)/[x-]*([a-z]+)'", $_FILES['file1']['type'],$ext); - а можно узнать, что это такое?
Вопрос № 58.131
Здравствуйте! Если информация, полученная пользователем, выводится на экран - это ведь дыра в безопасности? А как с этим бороться? Ну там символы всякие изменять/заменять/удалятЬ? Расскажите об этом подробней!
Ответ отправил: Загиров Рустам (статус: Практикант)
Ответ отправлен: 08.10.2006, 15:16
Отвечает: Евгений Крюков
Здравствуйте, Бобровский Сергей Сергеевич!
Вам помогут две функции: htmlspecialchars заменить знаки тегов в HTML сущности:
$new = htmlspecialchars("Test", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
, а strip_tags просто вырежет все HTML и PHP теги из строки.
--------- Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Студент)
Ответ отправлен: 08.10.2006, 15:21
Отправить вопрос экспертам этой рассылки
Приложение (если необходимо):
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.