Почему-то режутся HTML-тэги...

PHPDevil

Новичок
Почему-то режутся HTML-тэги...

Может кто знает, что за проблема:

Недавно сервер перевели на PHP 5. В админке есть форма, которая помимо всего прочего содержит TEXTAREA. В эту самую TEXTAREA забивается HTML-код страницы. Когда был PHP 4 все работало нормально, теперь же на следующую страницу приходит только голый текст. То есть например если я отправляю
PHP:
<table width="90%" border="0"><tr>
<td>Первый</td>
<td>Второй</td>
<td>Третий</td>
</tr></table>
то мне приходит

PHP:
Первый
Второй 
Третий

Никакие striptags не используются, htmlspecialchars, stripslashes, addslashes эффекта тоже не дают. Звонил хостеру, там сказали, что у них есть пара сайтов на том же сервере, где тоже хранятся HTML-страницы в базе. Там все работает нормально.

Что это может быть? :confused:
 

kruglov

Новичок
Это колдунство или вас сглазили.

Нужно копаться в админке. Или приведите минимальный пример (строчке из 10), где эффект проявляется.
 

PHPDevil

Новичок
Форма выглядит примерно так:

PHP:
<FORM METHOD='POST' enctype='text/plain' ACTION='/setpage.php'>
<div align=center>
<table><tr><td>
<p align=right>Название: 
</td><td>
<p align=left><input maxlength=100 class=former name='page_name' size='40' >
</td></tr>
<tr><td>
<p align=right>Ключевые слова: 
</td><td>
<p align=left><input maxlength=255 class=former name='page_keywords' size='40'>
</td></tr>
<tr><td>
<p align=right>Код: 
</td><td>
<p align=left><TEXTAREA class=former rows=25 cols=70 name='page_content'></TEXTAREA>
</td></tr></table>
</div>
<p align=center><input class=former type="submit" value="Сохранить" name="send"></form>


На странице setpage.php проблема проявляется сразу же:

PHP:
$page_content = $_POST[page_content];
echo htmlspecialchars($page_content);

Более подробный пример. Забиваем в textarea обычный прайс:

PHP:
<table class="content" width=90%>
	<tr>
		<th class="content" rowspan="2">АЭРОПОРТЫ</th>
		<th class="content" colspan="2">Химки</th>
		<th class="content" colspan="2">Строгино</th>
		<th class="content" colspan="2">Крылатское</th>
	</tr>
	<tr>
		<th class="content">Проводы</th>
		<th class="content">Встреча</th>
		<th class="content">Проводы</th>
		<th class="content">Встреча</th>
		<th class="content">Проводы</th>
		<th class="content">Встреча</th>
	</tr>
	<tr>
		<td class="content">
		БЫКОВО</td>
		<td class="content">
		850</td>
		<td class="content">
		1250</td>
		<td class="content">
		900</td>
		<td class="content">
		1125</td>
		<td class="content">
		900</td>
		<td class="content">
		1125</td>
	</tr>
	<tr>
		<td class="content">
		ВНУКОВО</td>
		<td class="content">
		650</td>
		<td class="content">
		800</td>
		<td class="content">
		700</td>
		<td class="content">
		875</td>
		<td class="content">
		750</td>
		<td class="content">
		940</td>
	</tr>
	<tr>
		<td class="content">
		ДОМОДЕДОВО</td>
		<td class="content">
		900</td>
		<td class="content">
		1125</td>
		<td class="content">
		900</td>
		<td class="content">
		1125</td>
		<td class="content">
		900</td>
		<td class="content">
		1125</td>
	</tr>
	<tr>
		<td class="content">
		ШЕРЕМЕТЬЕВО 1</td>
		<td class="content">
		450</td>
		<td class="content">
		600</td>
		<td class="content">
		550</td>
		<td class="content">
		690</td>
		<td class="content">
		675</td>
		<td class="content">
		845</td>
	</tr>
	<tr>
		<td class="content">
		<div align="center">ШЕРЕМЕТЬЕВО 2</div>
		</td>
		<td class="content">
		400</td>
		<td class="content">
		550</td>
		<td class="content">
		500</td>
		<td class="content">
		600</td>
		<td class="content">
		525</div></td>
		<td class="content">
		660</td>
	</tr>
</table>
После отправки формы видим:

PHP:
АЭРОПОРТЫ Химки Строгино Крылатское Проводы Встреча Проводы Встреча Проводы Встреча БЫКОВО 850 1250 900 1125 900 1125 ВНУКОВО 650 800 700 

875 750 940 ДОМОДЕДОВО 900 1125 900 1125 900 1125 ШЕРЕМЕТЬЕВО 1 450 600 550 690 675 845 ШЕРЕМЕТЬЕВО 2 400 550 500 600 525 660 АЭРОПОРТЫ 

Химки Строгино Крылатское Проводы Встреча Проводы Встреча Проводы Встреча БЫКОВО 850 1250 900 1125 900 1125 ВНУКОВО 650 800 700 875 750 

940 ДОМОДЕДОВО 900 1125 900 1125 900 1125 ШЕРЕМЕТЬЕВО 1 450 600 550 690 675 845 ШЕРЕМЕТЬЕВО 2 400 550 500 600 525 660 АЭРОПОРТЫ Химки 

Строгино Крылатское Проводы Встреча Проводы Встреча Проводы Встреча БЫКОВО 850 1250 900 1125 900 1125 ВНУКОВО 650 800 700 875 750 940 

ДОМОДЕДОВО 900 1125 900 1125 900 1125 ШЕРЕМЕТЬЕВО 1 450 600 550 690 675 845 ШЕРЕМЕТЬЕВО 2 400 550 500 600 525 660
Если заглянем в HTML-код получившейся страницы, получим:

PHP:
АЭРОПОРТЫ
		Химки
		Строгино
		Крылатское
	
	
		Проводы
		Встреча
		Проводы
		Встреча
		Проводы
		Встреча
	
	
		
		БЫКОВО
		
		850
		
		1250
		
		900
		
		1125
		
		900
		
		1125
	
	
		
		ВНУКОВО
		
		650
		
		800
		
		700
		
		875
		
		750
		
		940
	
	
		
		ДОМОДЕДОВО
		
		900
		
		1125
		
		900
		
		1125
		
		900
		
		1125
	
	
		
		ШЕРЕМЕТЬЕВО 1
		
		450
		
		600
		
		550
		
		690
		
		675
		
		845
	
	
		
		ШЕРЕМЕТЬЕВО 2
		
		
		400
		
		550
		
		500
		
		600
		
		525
		
		660


ВСЕ ТЭГИ ИСЧЕЗАЮТ! Может мне надо в php_info() что-нить посмотреть и наехать на хостера? А то мне такие волшЕбства не по душе...
 

Фанат

oncle terrible
Команда форума
- Алло, милиция?!
- Милиция
- у меня украли!!!
- что украли?
- Всё украли!!! Руль - украли, педали - спёрли, приборную доску унесли!
...
ой, простите... это я на заднее сиденье сел...
 

PHPDevil

Новичок
А я и не писал, что это умный вопрос. А если он кому-то кажется тупым, напишите лучше, как он решается.

P.S. Анекдот баян.
 

Фанат

oncle terrible
Команда форума
ты читаешь ответы на свой вопрос?
или только анекдоты?
 

PHPDevil

Новичок
Ответов не вижу. Покажи, где?
Если ты про "нужно копаться в админке", то я в упор не вижу где мне копаться - и так до максимума упрощенная форма, которая просто отправляет данные на другую страницу методом POST. На другую страницу данные приходят уже БЕЗ тэгов.
Если про "а что делает enctype='text/plain'?", то enctype=text/plain - это необязательный параметр в данном случае. Можно убрать и ничего от этого не изменится.
 

PHPDevil

Новичок
Повторяю, от этого ничего не меняется. Пример отредактировать не могу. В самом скрипте пробовал, убирал.
 

kruglov

Новичок
PHP:
<form method=post>
<textarea name=text>&lt;br&gt;</textarea>
<input type=submit>
</form>
<?
echo htmlspecialchars($_POST['text']);
?>
После нажатия на сабмит что выдает?
 

PHPDevil

Новичок
Ничего он не выдает... Пустота. После отправки получается точно такой же код, как ты написал. Такое впечатление, что сервер просто рубит все, что между "<" и ">" вместе с ними самыми.
Хостер, кстати, сказал, что он "х/з что это такое". А между тем я даже вручную из phpMyAdmin не могу добавить треугольные скобки в базу.

Пишу запрос ( cat - varchar(60) ):
PHP:
update catalog_table set cat = "<36>" where id = 7;
Мне пишут, что запрос успешно выполнен и даже показывают его еще раз но уже в таком виде:

PHP:
update catalog_table set cat = "" where id = 7;
Соответственно, в строку с id = 7 ложится значение "".

:( Я в ауте.
 

kruglov

Новичок
Тогда точно сглазили.

Если уж админ хостинга комментирует феномен таким образом.
 
Сверху