Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что может быть со слешами? 
:(
    Опции темы
VotVam
Дата 16.8.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



Ситуация такова. Есть стандартный скрипт SMF по открытию топиков в форуме. Добавил в него одно поле "descr" и полностью продублировал его свойства и поведение с поля "subject", т.к. назначения сходны (как здесь - тема и описание темы). На локали проверяю - все работает как часы. Ставлю на сервер - начинают сыпать ошибки. Если в общих чертах, то кавычки в поле "descr" приводят к появлению двойных обратных слешей, что ведет к ошибке записи в базу. Убираю двойные слеши stripslashes(), после этого addslashes() как бы "не видит" кавычки и опять ошибка. Кодировка на сервере выствавлена принудительно Windows 1251.
  Вопрос: откуда берется двойной слеш возле двойной кавычки именно на сервере и как с этим бороться? Повторюсь: на локали все летает.
PM MAIL   Вверх
Ипатьев
Дата 16.8.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Двойной слеш берется от волшебных кавычек. 
При этом ошибки быть не должно, ни в том, ни в другом случае. Следовательно, виновата неправильная обработка входящих данных. 
Подробнее сказать нельзя, поскольку кое-кто не сообразил сообщить, какая именно ошибка возникает, и в каком виде данные попадают в запрос.
PM MAIL   Вверх
VotVam
Дата 16.8.2009, 15:22 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



magic - все три off, да я еще и в хтакцесс их придушил. Скрипт вылетает с ошибкой hack... и т.д., но это искать лениво - что именно срабатывает . А запись в базу пытается производить типа descr='Я вам \\"пишу\\" - чего же боле?'. Если я убиваю слеши stripslashes(), то после этого addslashes() уже не срабатывает и в базу лезет descr='Я вам "пишу" - чего же боле?'. Я вроде все внятно описал.
PM MAIL   Вверх
Ипатьев
Дата 16.8.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(VotVam @  16.8.2009,  15:22 Найти цитируемый пост)
но это искать лениво - что именно срабатывает

Бесподобно.

Как же, все-таки, неожиданно мало на этом форуме программистов...
PM MAIL   Вверх
VotVam
Дата 16.8.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



А чему удивляться? Сборка SMF ~ 5мб кода. На кой хрен его лопатить, если видно: в чем проблема?
PM MAIL   Вверх
Ипатьев
Дата 16.8.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



И то правда. Тем более - можно себе представить - какого кода. 
PM MAIL   Вверх
VotVam
Дата 16.8.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



Да код-то как раз нормальный. Проблема не в нем - 100%. Скорее всего что-то криво на этом сервере (так же как и сессии), а что - вот бы хотелось что понять? Почему не срабатывает addslashes()? Почему не срабатывает mysql_real_escape_string()? Тут или кодировка не того, или вообще уже не пойму где. А код я проверил - там даже есть защита от "\\", только она тоже не срабатывает. Следовательно язык, с которым сервер общается с мускулом - арабо-китайский - твоя моя не понимай.
PM MAIL   Вверх
nerezus
Дата 16.8.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Вопрос: откуда берется двойной слеш возле двойной кавычки именно на сервере и как с этим бороться? Повторюсь: на локали все летает.
 Ошибка в движке.
Если сервер настроен криво и добавляет \, то перед ней при обработке тоже бы добавлялась \ и ошибок бы не было.


Цитата

 Если я убиваю слеши stripslashes(), то после этого addslashes() уже не срабатывает и в базу лезет descr='Я вам "пишу" - чего же боле?'. Я вроде все внятно описал.
 Забудь эти функции применительно к SQL.

Цитата

но это искать лениво - что именно срабатывает
 Есть вариант возмездной доработки скрипта.

Цитата

Да код-то как раз нормальный. Проблема не в нем - 100%. 
 Не факт.

Цитата

Почему не срабатывает addslashes()?
 А нахрен он тут нужен?

Выложи phpinfo.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
VotVam
Дата 16.8.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



Если бы мне нужна была чья-то доработка - я бы взял готовый скрипт типа  IPB и не лез бы никуда. Я специально связался с SMF, потому что там все на функциях и все понятно как божий день. Поэтому когда пишешь addslashes() (кстати от балды первое, что пришло в голову - то и сунул), то на локали тут же срабатывает. Причем на локали вообще без всяких костылей все работает, как-будто кавычек и нет вовсе. Проблемы начинаются на сервере. Во-первых, появляется этот двойной слеш, хотя обработка "ошибочной" переменной идет наравне с другими переменными. А потом, при попытке убить этот слеш, или совсем убираются слеши или остается также. Что это за поведение PHP? Я до сих пор грешу на сессии, которые все еще не могу добиться, чтобы писались как надо (папка на сервере для просмотра недоступна и идентификатор периодически вываливается в строку запроса). Сначала поправлю сессии, а потом буду методично перебирать все, что уже наизменял в SMF. Я просто думал, что кто-то сталкивался с такой ерундой, поэтому и написал тут. 

Это сообщение отредактировал(а) VotVam - 16.8.2009, 19:01
PM MAIL   Вверх
Ипатьев
Дата 16.8.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(nerezus @  16.8.2009,  18:40 Найти цитируемый пост)
Если сервер настроен криво и добавляет \, то перед ней при обработке тоже бы добавлялась \ и ошибок бы не было.

Тут смешнее. Сначала я тоже думал, что речь идет об ошибке SQL. Но оказалось-то, что ошибка, о которой идет речь - это результат титанических усилий команды разработчиков:
Цитата(VotVam @  16.8.2009,  15:22 Найти цитируемый пост)
Скрипт вылетает с ошибкой hack...





PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.