Ошибка в коде по php

123
P
На сайте с 10.09.2011
Offline
37
#11
Kurses:
Чем вызвана необходимость смены версии ПХП? Какая была, а какая стала?

Начал устанавливать CMS, на сервере изначально стояла такая версия, ничего не менял.

Когда вылезла эта ошибка и начал Гуглить, то выяснил, что на более новых конфигурациях сервера "preg_replace" воспринимается за ошибку по новым правилам php и его необходимо заменить на "preg_replace_callback". Поменял и начало выкидывать ошибку, что оглашена в первом посту. Как его записать этот код в работоспособном виде, не умею. Вот и обратился на форум.

P
На сайте с 10.09.2011
Offline
37
#12
nikonlay:
PARFUMER_, ну вы попробуйте сначала заметить ваш кусок кода:

function s1($A){
return str_replace("\\\"", "\"", $A);
}
function fixx($A,$H){
return preg_replace_callback("/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i", "s1('\\1').__fixx('\\3','{$H}').'\\4'/", $A);

}

на

function s1($A){
return str_replace("\\\"", "\"", $A);
}
function fixx($A,$H){
return preg_replace_callback(
'/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i',
function($matches){
return s1($matches[1]).__fixx($matches[3],$H).$matches[4].'/';
}, $A);
}

Как wanick пишет, должно работать

Скопировал и вставил. Данный кусок кода высвечивается серым цветом, как закоментированый код.

Прикрепляю в архиве сам этот файл, что в 36 строке вызывает ошибку.

zip node.html.zip
nikonlay
На сайте с 11.12.2006
Offline
191
#13

действительно, там кавычка пропущена была. я добавил, теперь нормально высвечивается, посмотрите

zip node.html.zip
Мощные фонари и телескоп: https://market.yandex.ru/business/79203856
mendel
На сайте с 06.03.2008
Offline
232
#14
PARFUMER_:
Когда вылезла эта ошибка и начал Гуглить, то выяснил, что на более новых конфигурациях сервера "preg_replace" воспринимается за ошибку по новым правилам php и его необходимо заменить на "preg_replace_callback".

ЧяВО?

Меня одного это удивляет?

Ребят, смысл лечить ЕГО код, если мы не видели исходную ошибку и о чем вообще речь идет?

Я не говорю о том что от кода попахивает в принципе. Это то ладно. Но это уже код измененный человеком который не знает языка. Зачем ЭТО копать? Чтобы плодить глюки?

ТС, дайте значальный код который заглючил. Дайте ошибку которую получали. Дайте ссылку на то место где вам такое посоветовали. Тогда это будет что-то разумное.

Шутку любишь над Фомой, так люби и над собой. (с) народ. Бесплатные списки читабельных(!) свободных доменов (http://burzhu.net/showthread.php?t=2976) (5L.com) Сайты, All inclusive. 5* (/ru/forum/962215)
P
На сайте с 10.09.2011
Offline
37
#15
mendel:
ЧяВО?
Меня одного это удивляет?

Ребят, смысл лечить ЕГО код, если мы не видели исходную ошибку и о чем вообще речь идет?
Я не говорю о том что от кода попахивает в принципе. Это то ладно. Но это уже код измененный человеком который не знает языка. Зачем ЭТО копать? Чтобы плодить глюки?

ТС, дайте значальный код который заглючил. Дайте ошибку которую получали. Дайте ссылку на то место где вам такое посоветовали. Тогда это будет что-то разумное.

nikonlay Просмотрел исходный код и подправил ошибку. Файл установил в CMS и заработало нормально, без ошибок.

U
На сайте с 09.04.2015
Offline
28
#16
mendel:
ЧяВО?
Меня одного это удивляет?

Просто preg_replace с модификатором /e устарел

P
На сайте с 10.09.2011
Offline
37
#17

nikonlay, Благодарю за помощь в решении вопроса. Подправленный файл исправно работает.

---------- Добавлено 22.08.2016 в 18:56 ----------

umercomp:
Просто preg_replace с модификатором /e устарел

Эти модификаторы и были изменены, а сам код приведен в соответствии с новыми правилами.

Теперь работает.

Благодарю всех заинтересованных в решении вопроса и оказавших реальную помощь!

mendel
На сайте с 06.03.2008
Offline
232
#18
umercomp:
Просто preg_replace с модификатором /e устарел

А там был евал? ыыы

Прелесть.

Но в любом случае депрекейтет можно и подавить. Мало ли где оно еще повылазит.

PARFUMER_:
nikonlay, Благодарю за помощь в решении вопроса. Подправленный файл исправно работает.

Сергей, а что за ЦМС такая? движок с таким кодом гарантированно уязвим.

P
На сайте с 10.09.2011
Offline
37
#19
mendel:
А там был евал? ыыы
Прелесть.
Но в любом случае депрекейтет можно и подавить. Мало ли где оно еще повылазит.


Сергей, а что за ЦМС такая? движок с таким кодом гарантированно уязвим.

ЦМС на файлах без БД. Или название интересно?

депрекейтет - что это слово обозначает?:)

mendel
На сайте с 06.03.2008
Offline
232
#20

Название конечно. Может на досуге обзаведусь десятком бесплатных проксей :)

Депрекейтет - в данном случае "предупреждение что в следующих версиях функцию уберут". У вас 5.5., в 5.5. предупреждение только появилось. Так что проще было запретить такие ошибки и всё. Чай не полечить безопасность такими исправлениями, а исправления могут и в других местах понадобится потом.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий