Вопрос № 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