Вставка длинных (единицы Кб) текстов в TEXT

grand_sbor

Новичок
Вставка длинных (единицы Кб) текстов в TEXT

Всем добрый день!

Имеется следующая проблема.

Простейшая по сути форма с текстовым полем. Текст загружается в базу MySQL. Если текст короткий (меньше 1Кб) - всё нормально. Если нет - то начинается ерунда: с довольно высокой вероятностью (>50%) отправка данных подвисает, либо браузер предлагает загрузить файл php (!).
Интересно, что все это происходит только при редактировании из конкретного офиса (сетка, выделенка). Проблема не проявляется из дома и из того же офиса через модем. От хостинга, где лежит скрипт, не зависит.

Код сохранялки:
PHP:
function pages_applyEdit() {
	$id=$_POST['id'];
	$title=$_POST['title'];
	$text=mysql_escape_string(trim($_POST['tekst']));
	if($id) $q="update `pages` set `title`='$title',`text`='$text' where `page_id`='$id'";
	else $q="insert into `pages` set `title`='$title',`text`='$text'";
	if (mysql_query($q)) js_redirect($_SERVER['PHP_SELF']); else die("Error");
}
Структура таблицы:
PHP:
CREATE TABLE `pages` (
  `page_id` int(11) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL default '',
  `text` longtext NOT NULL,
   PRIMARY KEY (`page_id`)
) ENGINE=MyISAM;
Хранить тексты в файлах не предлагать, интересует именно решение проблемы.
Спасибо.
 

Фанат

oncle terrible
Команда форума
А я, все-таки, предложу.
Не хранить, но в файл записывать. Для контроля.
И дальше по цепочке. Отлаживать.

почему, кстати, mysql_escape_string для $id не делаешь?
 

FractalizeR

Новичок
При подвисании страницы запрос MySQL выполняется или до этого не доходит? Как выглядит тело js_redirect?

Кстати, page_id у вас почему-то не является PRIMARY KEY. Кроме того, зачем в where `page_id`='$id'" $id взят в одинарные кавычки?

Для $_POST['id'] я бы предложил простой способ очистки: settype($_POST['id'], 'integer');
 

Mols

Новичок
Помоему Вы не туда смотрите... исходя из Вашего описания - надо идти к админам сети. Данные похоже просто не доходят до сервера.
 

grand_sbor

Новичок
Автор оригинала: *****
А я, все-таки, предложу.
Не хранить, но в файл записывать. Для контроля.
И дальше по цепочке. Отлаживать.

почему, кстати, mysql_escape_string для $id не делаешь?
Ладно, спасибо.
С $id, наверное, легче даже
PHP:
$id=(int)$_POST['id']
.

-~{}~ 12.01.08 18:20:

Автор оригинала: FractalizeR
При подвисании страницы запрос MySQL выполняется или до этого не доходит? Как выглядит тело js_redirect?

Кстати, page_id у вас почему-то не является PRIMARY KEY. Кроме того, зачем в where `page_id`='$id'" $id взят в одинарные кавычки?

Для $_POST['id'] я бы предложил простой способ очистки: settype($_POST['id'], 'integer');
Запрос НЕ выполняется.

Из чего вы сделали вывод, что page_id не является PRIMARY KEY?

Я предпочитаю брать в кавычки все параметры. С другой стороны, приходилось читать, что для чисел это лишнее. Это действительно так?
 

Фанат

oncle terrible
Команда форума
приходилось читать, что для чисел это лишнее. Это действительно так?
Лучше задавать такие вопросы не незнакомым людям на форуме, а читать в официальной документации.

Для чисел - лишнее. Но вот только гарантии, что из браузера придет именно число, нет никакой.

-~{}~ 12.01.08 18:24:

Запрос НЕ выполняется.
Как ты это узнал? Он хотя бы начинает выполняться?
 

baev

‹°°¬•
Команда форума
Как выглядит тело js_redirect?
— присоединяюсь к вопросу.

Уж очень любопытно выглядит редирект на себя при успешном выполнении запроса к БД — так и до бесконечного цикла недалеко.
 

FractalizeR

Новичок
Из чего вы сделали вывод, что page_id не является PRIMARY KEY?
Прошу прощения, не посмотрел в конец CREATE TABLE


Кроме того, хотел бы еще заметить, что mysql_escape_string deprecated начиная с PHP 4.3.0. Эта функция не обращает внимание на кодировку, в которой идет работа с сервером. Лучше пользоваться mysql_real_escape_string
 

kruglov

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

Идите к админам MTU настраивать.
 

grand_sbor

Новичок
Всем спасибо, пойдем "к админам" :)

js_redirect выглядит так (функция не моя):
PHP:
function js_redirect($arg)
	{
	$s=<<<s
<script type='text/javascript'>
window.location.href='$arg';
</script>
Сейчас вы будете перенаправлены.
Если этого не произошло, пройдите по ссылке: <a href='$arg'>$arg</a>
s;
	die ($s);
	
	}
-~{}~ 15.01.08 12:25:

Кроме того, хотел бы еще заметить, что mysql_escape_string deprecated начиная с PHP 4.3.0. Эта функция не обращает внимание на кодировку, в которой идет работа с сервером. Лучше пользоваться mysql_real_escape_string
Спасибо, учтем.
 
Сверху