Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Текст в $_POST автоматом обрезается до первого знака "<"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
rame0
Отправлено: 14 Июня, 2013 - 18:35:34
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Возникла следующая проблемка:
Есть форма редактирования конфига админки. Там идет обычный PHP'шный код - define'ы и т.п.
Переношу эту админку на сервер. В итоге, при сохранении конфига через эту форму весь файл затирается.
Оказалось, что хотя форма и заполнена, в $_POST данные этого поля не пропускаются.
Долго искал причину этого всего.
Нашел. Где то между тем как был отправлен POST запрос с сайта и данные были записаны в $_POST, значения переменных обрезаются до первого вхождения знака "<".

При этом, на ВДС с такой же конфигурацией работает стабильно другой сайт с такой же админкой.
Единственное отличие - первый сайт (там где не пашет) в кодировке UTF-8, а второй в windows-1251.

Кто то сталкивался с подобным приколом?

Для большей ясности приведу пример:
Данные формы (сразу напишу, что в качестве "enctype" пробовал все возможные варианты):

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form action="action.php" method="post" name="form1" enctype="multipart/form-data">
  3.         <input type="submit" value="Ok">
  4.         <input name="id" type="hidden" value="0">
  5.         <textarea name="content"><?php
  6. define('HOME',$_SERVER['DOCUMENT_ROOT'].'/');
  7. define('DEBUG', false);
  8. ....
  9. ....
  10. ....
  11. ?>
  12. </textarea>
  13.     </form>
  14.  


После сабмита формы, в $_POST имеем следующее:



Теперь добавим в самое начало текста конфига всякий мусор и получаем следующее:
PHP:
скопировать код в буфер обмена
  1.  
  2. asdf"asf asdfsdaf$sa&dfsdafa?> <?PHP
  3. define('HOME',$_SERVER['DOCUMENT_ROOT'].'/');
  4. define('DEBUG', false);
  5. ....
  6. ....
  7. ....
  8. ?>
  9.  


После сабмита формы, в $_POST получаем:
PHP:
скопировать код в буфер обмена
  1.  
  2. Array ( [id] => 0 [content] => asdf"asf asdfsdaf$sa&dfsdafa?> )
  3.  


PS:
Версия PHP 5.4.15
Магические ковычки в нем убрали, но в htaccess на вякий случай все равно прописано:
CODE (htaccess):
скопировать код в буфер обмена
  1. php_flag magic_quotes_gpc Off
  2. php_flag magic_quotes_runtime Off
  3. php_flag magic_quotes_sybase Off

(Отредактировано автором: 14 Июня, 2013 - 19:17:12)

 
 Top
caballero
Отправлено: 14 Июня, 2013 - 19:01:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Кто то сталкивался с подобным приколом?

почти все

Он знак < считает началом закрытия тэга textarea

нужно его заменять на &lt; или как то там


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
rame0
Отправлено: 14 Июня, 2013 - 19:10:59
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




caballero пишет:
Цитата:
Кто то сталкивался с подобным приколом?

почти все

Он знак < считает началом закрытия тэга textarea

нужно его заменять на &lt; или как то там


Естественно, это было первое что я проверил Улыбка
Перед выводом в textarea все это обрабатывается htmlspecialchars($text).

В итоге в коде вот такой текст:
&lt;?php

define('HOME',$_SERVER['DOCUMENT_ROOT'].'/');
define('DEBUG', false);
(Добавление)
Забыл написать:
Проверял Fiddler'ом что уходит на сервер.
Все данные формы уходят корректно.

Текст уходящего от браузера POST запроса:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. ------WebKitFormBoundaryRYwV0h3XUa4yf1mo
  3. Content-Disposition: form-data; name="id"
  4.  
  5. 0
  6. ------WebKitFormBoundaryRYwV0h3XUa4yf1mo
  7. Content-Disposition: form-data; name="content"
  8.  
  9. <?php
  10.  
  11. define('HOME',$_SERVER['DOCUMENT_ROOT'].'/');
  12. define('DEBUG', false);
  13.  
  14. ...
  15. ...
  16. ...
  17. ?>
  18.  
  19. ------WebKitFormBoundaryRYwV0h3XUa4yf1mo--
  20.  
  21.  
 
 Top
Мелкий Супермодератор
Отправлено: 14 Июня, 2013 - 19:27:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




rame0 пишет:
После сабмита формы, в $_POST имеем следующее:

Вы это смотрите в браузере или сырой ответ сервера?
<??> - с точки зрения браузера полноценный тег и выводу не подлежит. А пользуетесь вы print_r вместо var_dump, так что сразу не видно, есть ли что в элементе массива.


-----
PostgreSQL DBA
 
 Top
rame0
Отправлено: 14 Июня, 2013 - 19:38:04
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Мелкий пишет:
rame0 пишет:
После сабмита формы, в $_POST имеем следующее:

Вы это смотрите в браузере или сырой ответ сервера?
<??> - с точки зрения браузера полноценный тег и выводу не подлежит. А пользуетесь вы print_r вместо var_dump, так что сразу не видно, есть ли что в элементе массива.


Черт... Походу в отпуск пора Улыбка Я с этим print_r() и сам не увидел, что ошибку устранил... Теперь даже представить не могу как, чтобы на будущее запомнить Недовольство, огорчение

Спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB