Jump to content
  • 0

не принимается большой текст в post запросе


mitiya
 Share

Question

есть у меня форма, в нее нужно вносить большой текст (~700кб), но

когда приходит на сервер то $_POST['text'] оказывается пустой.

если оправлять текст поменьше, то все ок.

В фаербгре в запросе вроде как все ок.

phpinfo() выдает

post_max_size 200M

не пойму куда копать (

Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

У textarea установлен максимальный размер символов?

можно по подробней ?

по поводу var_dump($_POST) сейчас гляну, но phpinfo() в конце выдает содержимое и $_POST['text'] там вообще нет.

хотя другие передоверяемые ключи есть.

Link to comment
Share on other sites

  • 0

Немного почитал,и оказалось, что textarea не понимает атрибут maxlength.

Значит, либо превышено время выполнения скрипта (max_execution_time), либо ошибка в коде.

Edited by Radiocity
Link to comment
Share on other sites

  • 0

Немного почитал,и оказалось, что textarea не понимает атрибут maxlength.

Значит, либо превышено время выполнения скрипта (max_execution_time), либо ошибка в коде.

но скрипт не прерывается, он отрабатывает. но элемента $_POST['text'] просто нет, и скрипт записывает мне в базу пустоту.

но он не прерывается, и ошибок вроде не выдает.

к тому же, если взять относительно небольшой текст то все ок.

Link to comment
Share on other sites

  • 0

1) в самом php коде может стоит ограничение по символам?

2) в бд поставил варчар вместо тинитекст(или как там его...)?

2) если вы имеете в виду типа поля в таблице то он longtext.

1) я ничего такого не указывал, и честно говоря даже не знаю как указать.

Вообще тот же скрипт, но в секции где идет загрузка из файла, отрабатывает нормально с любым размером теста.

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

Но нужно через текст эрия.

Link to comment
Share on other sites

  • 0

давайте икодник что ли, сколько уже телепатить можно...

проблема в case 'text':


<?php
error_reporting(E_ALL);
$max_file_size = 5;
$db_table = 'books';
$db_table = $modx->db->config['table_prefix'] . $db_table;
$form_file_load = 'assets/snippets/bookUpload/includes/form_file_load.php';
$form_file_load_mini = 'assets/snippets/bookUpload/includes/form_file_load_mini.php';
$path = MODX_BASE_PATH . 'temp/';
if ($modx->getLoginUserID() == '') {
sleep(3);
if ($modx->getLoginUserID() == '') {
$url = $modx->makeURL(7);
$modx->sendRedirect($url, 0, 'REDIRECT_HEADER');
return;
}
}
switch ($_POST['upload']) {
case 'txtfile': {
if ($_FILES["filename"]["size"] > $max_file_size * 1024 * 1024) {
echo ("<script>$('#bookUploadFormCollaps').brNoty({'text' : 'Error: file too big !','delay' : 1000,'fadeSpeed' : 600});</script>");
include(MODX_BASE_PATH . $form_file_load);
exit;
}
if ($_FILES['filename']['type'] != 'text/plain') {
echo ("<script>$('#bookUploadFormCollaps').brNoty({'text' : 'Error: Not txt file !','delay' : 1000,'fadeSpeed' : 600});</script>");
include(MODX_BASE_PATH . $form_file_load);
return;
}
if (copy($_FILES["filename"]["tmp_name"], $path . $_FILES["filename"]["name"])) {
echo ("<script>$('#bookUploadFormCollaps').brNoty({'text' : '" . $_FILES["filename"]["name"] . "</b>" . " successfully loaded','delay' : 1000,'fadeSpeed' : 600});</script>");
include(MODX_BASE_PATH . $form_file_load);
} else {
echo ("<script>$('#bookUploadFormCollaps').brNoty({'text' : 'error','delay' : 1000,'fadeSpeed' : 600});</script>");
include(MODX_BASE_PATH . $form_file_load);
exit;
}
if (!setlocale(LC_ALL, 'ru_RU.utf8'))
setlocale(LC_ALL, 'en_US.utf8');
if (setlocale(LC_ALL, 0) == 'C')
die('Локали не поддерживаются сервером. Возможно некорректное отображение кириллицы.');
$file = fopen('php://memory', 'w+');
if (!mb_detect_encoding(file_get_contents($path . $_FILES["filename"]["name"]), 'UTF-8', true)) {
fwrite($file, iconv('CP1251', 'UTF-8', file_get_contents($path . $_FILES["filename"]["name"])));
} else {
fwrite($file, iconv('UTF-8', 'UTF-8', file_get_contents($path . $_FILES["filename"]["name"])));
}
rewind($file);
if ($_POST['title'] == '') {
$title = $_FILES["filename"]["name"];
} else {
$title = $_POST['title'];
}
$txt = str_replace('<', '<', stream_get_contents($file));
$hash = sha1($txt);
$fields = array(
'book_txt' => mysql_real_escape_string($txt),
'title' => mysql_real_escape_string($title),
'hash' => $hash,
'userID' => $modx->getLoginUserID(),
'position' => '0'
);
$query = $modx->db->insert($fields, $db_table);
if (!$query)
die(' sql Error');
fclose($file);
unlink($_FILES["filename"]["tmp_name"]);
unlink($path . $_FILES["filename"]["name"]);
return;
}
case 'url': {
$URL = $_POST['url'];
$txt = file_get_contents($URL);
if (!mb_detect_encoding($txt, 'UTF-8', true)) {
$txt = iconv('CP1251', 'UTF-8', $txt);
} else {
$txt = iconv('UTF-8', 'UTF-8', $txt);
}
if ($_POST['title'] == '') {
$title = 'title';
} else {
$title = $_POST['title'];
}
$txt = str_replace('<', '<', $txt);
$hash = sha1($txt);
$fields = array(
'book_txt' => mysql_real_escape_string($txt),
'title' => mysql_real_escape_string($title),
'hash' => $hash,
'userID' => $modx->getLoginUserID(),
'position' => '0'
);
$query = $modx->db->insert($fields, $db_table);
if (!$query)
die('sql Error');
echo ("<script>$('#bookUploadFormCollaps').brNoty({'text' : '" . mysql_real_escape_string($title) . "</b>" . " successfully loaded','delay' : 1000,'fadeSpeed' : 600});</script>");
include(MODX_BASE_PATH . $form_file_load);
return;
}
case 'text': {
$txt = $_POST['text'];
if (mysql_real_escape_string($txt) == '') {
echo ("<script>console.info('Error: text empty!');$('#bookUploadFormCollaps').brNoty({'text' : 'Error: text empty!','delay' : 1000,'fadeSpeed' : 600});</script>");
echo phpinfo();
include(MODX_BASE_PATH . $form_file_load);
return;
}
if (!mb_detect_encoding($txt, 'UTF-8', true)) {
$txt = iconv('CP1251', 'UTF-8', $txt);
} else {
$txt = iconv('UTF-8', 'UTF-8', $txt);
}
if ($_POST['title'] == '') {
$title = 'title';
} else {
$title = $_POST['title'];
}
$txt = str_replace('<', '<', $txt);
$hash = sha1($txt);
$fields = array(
'book_txt' => mysql_real_escape_string($txt),
'title' => mysql_real_escape_string($title),
'hash' => $hash,
'userID' => $modx->getLoginUserID(),
'position' => '0'
);
$query = $modx->db->insert($fields, $db_table);
if (!$query)
die('Error');
if (mysql_real_escape_string($txt) != '') {
echo ("<script>$('#bookUploadFormCollaps').brNoty({'text' : '" . mysql_real_escape_string($title) . "</b>" . " successfully loaded','delay' : 1000,'fadeSpeed' : 600});</script>");
} else {
echo ("<script>$('#bookUploadFormCollaps').brNoty({'text' : 'Error!','delay' : 1000,'fadeSpeed' : 600});</script>");
}
echo phpinfo();
include(MODX_BASE_PATH . $form_file_load);
return;
}
default: {
include(MODX_BASE_PATH . $form_file_load);
}
}
function user_min_browser($agent)
{
preg_match("/(Mini)(?:\/| )([0-9.]+)/", $agent, $browser_info);
list(, $browser, $version) = $browser_info;
return $browser;
}
?>

Edited by mitiya
Link to comment
Share on other sites

  • 0

ух, жестковатый код))

есть ли текст в $fields? можно проверить

var_dump($fields);

перед запросом этим

$query  = $modx->db->insert($fields, $db_table);

если в массив всё попадает, то проблема выходит в библиотеке, которая с БД работает. Она умеет об ошибках в данных/запросах сообщать?

Вообще перегружен код логикой. Не удивительно что что-то в нём теряется без следа))

Зачем эти проверки многократные:

 if (mysql_real_escape_string($txt) == '')

только засоряют код. Раз уж вы скинули пост в локальную переменную:

$txt = $_POST['text'];

с ней и работайте. ещё советую научиться использовать empty(), она так и проситься в каждое второе ваше условие проверок))

Link to comment
Share on other sites

  • 0

элемент text просто не приходит.

это если отправлять текст к примеру длинной 2700000 символов.

а если отправить текст 600000 символов то уже все ок.

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

var_dump($_POST);

1array(2) { ["upload"]=> string(4) "text" ["title"]=> string(4) "cccc" }

Link to comment
Share on other sites

  • 0

вот именно так и есть.

вот var_dump($_POST); если отправлять тест поменьше.


array(3) { ["upload"]=> string(4) "text" ["title"]=> string(10) "test title" ["text"]=> string(15) "I'm little text" }

мистика какая-то. но чудес же не бывает))

Link to comment
Share on other sites

  • 0

честно говоря я думаю дело наверно все таки на клиентской стороне.

у меня вот такой вопрос, если я разобью текст на куски и буду отправлять на сервер, можно как-то заставить php скрипт ждать эти куски ? ну то есть я хочу отправить несколько пост запросов с разными кусками, и чтоб скрипт их дождался и сшил.

Link to comment
Share on other sites

  • 0

честно говоря я думаю дело наверно все таки на клиентской стороне.

у меня вот такой вопрос, если я разобью текст на куски и буду отправлять на сервер, можно как-то заставить php скрипт ждать эти куски ? ну то есть я хочу отправить несколько пост запросов с разными кусками, и чтоб скрипт их дождался и сшил.

это уже ajax — асинхронное общение клиента с сервером. То есть перезагрузки страницы не происходит, но данные отсылаются и принимаются.

PS: настройки браузера?... ХЗ. Попробуйте чисто скрипт запустить: где только форма и var_dump($_POST) на экшене происходит. Ну и отправить тот же объём постом. Смотрите, файлы же тоже через пост передаются, а там счёт на многие мегабайты и выше идёт.

Link to comment
Share on other sites

  • 0

Посмотрите в настройках апача таймаут, может быть просто большой кусок данных не успевает пройти.

тогда бы по таймауту скрипт и падал.

Мне кажется просто логика замудрённая, посмотрите на скрипт-то. Какое-то из условий не выполняется и всего.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy