Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > слэш вместо кавычек


Автор: kminas 22.5.2013, 21:53
В php я начинающий. Скачал на сайт гостевую книгу на php , настроил. Работает нормально, да вот в коде глюк. Если вставляешь кавычки: одинарные или парные, после сохранения рядом пояаляется пара слэшей, после слдедующего еще пара. Ладно, могу без кавычек в коде обойтись, да и к посетителей поудалять. Но захотел поставить счетчики, а там этих кавычек! Прорыл всю  сеть. Наше код, который надо вставить в файл php.ini. Так нет такого во всей книге. Может кто знает, как еще можно код подправить? 

Автор: Arantir 22.5.2013, 22:04
Цитата(kminas @  22.5.2013,  20:53 Найти цитируемый пост)
В php я начинающий.

Это все объясняет =)

Объясните проблемы подробнее. PHP — это просто язык. А гостевая книга — это уже программа. И ее автор мог в ней начудить что угодно.

Цитата(kminas @  22.5.2013,  20:53 Найти цитируемый пост)
Если вставляешь кавычки: одинарные или парные, после сохранения рядом пояаляется пара слэшей, после слдедующего еще пара.

Где вставляете? Чем это сохраняется? Что вообще имелось ввиду?

Цитата(kminas @  22.5.2013,  20:53 Найти цитируемый пост)
Наше код, который надо вставить в файл php.ini. Так нет такого во всей книге.

php.ini — файл настроек самого PHP. Он не в книге, а на самом сервере, на котором у Вас сайт. Если у Вас просто хостинг, то Вы, скорее всего, не имеете доступа к этому файлу.

Автор: Gold Dragon 22.5.2013, 22:40
kminas, читай справку на "Magic Quotes". Какая версия PHP? Но начиная с PHP 5.3 это очень устаревшая настройка и уже не работает..

Автор: kminas 22.5.2013, 22:42
Цитата(Arantir @ 22.5.2013,  23:04)
Цитата(kminas @  22.5.2013,  20:53 Найти цитируемый пост)
В php я начинающий.

Это все объясняет =)

Объясните проблемы подробнее. PHP — это просто язык. А гостевая книга — это уже программа. И ее автор мог в ней начудить что угодно.

Цитата(kminas @  22.5.2013,  20:53 Найти цитируемый пост)
Если вставляешь кавычки: одинарные или парные, после сохранения рядом пояаляется пара слэшей, после слдедующего еще пара.

Где вставляете? Чем это сохраняется? Что вообще имелось ввиду?

Цитата(kminas @  22.5.2013,  20:53 Найти цитируемый пост)
Наше код, который надо вставить в файл php.ini. Так нет такого во всей книге.

php.ini — файл настроек самого PHP. Он не в книге, а на самом сервере, на котором у Вас сайт. Если у Вас просто хостинг, то Вы, скорее всего, не имеете доступа к этому файлу.

В целом не важно. Например, оформление страницы: меню, в т. ч., хотел вставить коды счетчиков, к примеру li, метрика. После этого надо сохранить, да и без этого. Посетитель вставил сообщение в кавычках, нажал отправить. Уже 2 слэша есть, я прокомментировал его сообщение и, если те слжши не убрал, пояаилась еще пара.

До этого я сам додумался, перерыл все папки хостинга. Есть только одна PHP, но она пустая. К слову о провайдере. Это Ру центр. Есть у меня там другой сайт. Чисмто на html, но есть одна простенькая почтовая форма. Решил проверить. Отправил сообщение с кавычками. Итог - пришло сообщение с теми же слэшами. Кстати и там и там информация о письме приходит с ромбиками вместо русского текста, к прмеру, имя перед адресом. Написал им. Может, что подскажут. И Вы, если можно, подскажите.

Добавлено через 2 минуты и 1 секунду
Цитата(Gold Dragon @ 22.5.2013,  23:40)
kminas, читай справку на "Magic Quotes". Какая версия PHP? Но начиная с PHP 5.3 это очень устаревшая настройка и уже не работает..

"Magic Quotes" читал, но там надо php.ini, а за версию PHP спасибо. Буду разбираться

Автор: Gold Dragon 22.5.2013, 22:55
ну если ты не можешь добраться до настроек сервера и версия PHP очень древняя, то просто пользуйся http://www.php.net/manual/ru/function.stripslashes.php и http://www.php.net/manual/ru/function.addslashes.php

Автор: ksnk 23.5.2013, 06:45
У меня, для борьбы с непроизвольными `magic_quotes` использовался такой кусочек кода

Код

class enine {

  function strips(&$el) {
      if (is_array($el))
        foreach($el as $k=>$v)
          $this->strips($el[$k]);
      else $el = stripslashes($el);
    }

...
function init(){
...
    if (get_magic_quotes_gpc()) {
          $this->strips($_GET);
          $this->strips($_POST);
          $this->strips($_COOKIE);
          $this->strips($_REQUEST);
          if (isset($_SERVER['PHP_AUTH_USER'])) $this->strips($_SERVER['PHP_AUTH_USER']);
          if (isset($_SERVER['PHP_AUTH_PW']))   $this->strips($_SERVER['PHP_AUTH_PW']);
        }
...
}
        


Код - пережиток 4-ки, как впрочем и сама проблема с этой магией.

Автор: kminas 23.5.2013, 09:08
Да, на хостинге стоит PHP 4.4 Можно включить 5.3 и все? А настраивать как? Там все ясно или надо где-то почитать, прежде чем включать? Иначе по умолчанию стояла бы 5.3  smile   

Автор: krundetz 23.5.2013, 10:00
Цитата(kminas @  23.5.2013,  09:08 Найти цитируемый пост)
Там все ясно или надо где-то почитать, прежде чем включать?

рекомендую учебник по риторике и логике, а то сквозь поток ваших мылей продратся можно только ободравшись
Цитата(kminas @  22.5.2013,  22:42 Найти цитируемый пост)
Кстати и там и там информация о письме приходит с ромбиками вместо русского текста, к прмеру, имя перед адресом.

копайте в сторону кодировок

Автор: kminas 23.5.2013, 11:36
Цитата(krundetz @ 23.5.2013,  11:00)
Цитата(kminas @  23.5.2013,  09:08 Найти цитируемый пост)
Там все ясно или надо где-то почитать, прежде чем включать?

рекомендую учебник по риторике и логике, а то сквозь поток ваших мылей продратся можно только ободравшись
Цитата(kminas @  22.5.2013,  22:42 Найти цитируемый пост)
Кстати и там и там информация о письме приходит с ромбиками вместо русского текста, к прмеру, имя перед адресом.

копайте в сторону кодировок

С риторикой согласен, никогда не изучал, а вот насчет логики, Вы кардинально ошибаетесь. Правда мне кажется, это не те замечания, которые характеризуют мои посты. Вопрос может стоять о незнании сути вопроса, как и, в целом, этого раздела. 
А Вы бы ответили на главный вопрос: "Включать ли версию 5.3?"
А за кодировку, спасибо. На одном сайте, нашел. Щас второй покопаю.

Автор: Evghenusi 23.5.2013, 13:20
Цитата(kminas @  23.5.2013,  09:08 Найти цитируемый пост)
Можно включить 5.3 и все?

Скорее всего ДА. Просто переключаете и радуетесь. (к тому же должен быть на хостинге faq или тех поддержка)

Где-то и я подобный бред встречал, когда есть поддержка 5.3, а по умолчанию стоит 4.

Автор: ksnk 23.5.2013, 13:33
Evghenusi, В 5.3 отключены многие фичи, которые считаются устаревшими. Если скрипт древний (или програмист-старовер  smile ) - можно провести время за заменой ereg'ов на преги или отладкой и выковыриванием забавных и не очень бажиков со ссылками. 

В любом случае - включить и посмотреть. Если пойдет - посмотреть и проверить все формы и фичи сайта. Если не пойдет или нашелся баг  - ставить на локальный хост и мрачно отлаживать. Другого пути, в общем-то, нет.

Автор: krundetz 23.5.2013, 15:27
Цитата(kminas @  23.5.2013,  11:36 Найти цитируемый пост)
А Вы бы ответили на главный вопрос: "Включать ли версию 5.3?"

если без нее работу скрипта не удается поправить то да, но как верно заметил ksnk, само по себе, включение может повлечь вылезание ещё большего количества ошибок

попробуйте в файле .htaccess из корня сайта добавить строку php_flag magic_quotes_gpc Off, если такого файла нет то создать его

Автор: Gold Dragon 24.5.2013, 05:54
Цитата(kminas @  23.5.2013,  10:08 Найти цитируемый пост)
Да, на хостинге стоит PHP 4.4 Можно включить 5.3 и все?
Ого, это из какого столетия сервер?  smile Ну это всё равно что пользоваться Windows 95: работать будет, но .... От сюда и ответ..

Автор: kminas 24.5.2013, 11:59
Извиняюсь, только что зашел. То был сатй аж 2007г., а сейчас зашел на тот, о котором речь. Там стоит 5.3, в настройках все есть. " Экранировать апострофы, кавычки и обратные слэши в данных, передаваемых методами GET и POST и в COOKIE " Стоит: magic_quotes_gpc ДА. Переключаю на НЕТ.

Автор: kminas 24.5.2013, 12:42
Все заработало! СПАСИБО всем! Теперь осталось найти, где кодировку поменять, да и другие настройки PHP 5.3 изучить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)