[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ограничение на количество POST переменных
bazhin
Добрый день.

Проблема в следующем: попался вредный хостер - не позволяет отправить методом POST в одном запросе более 355 переменных (это не ограничение на объем передаваемых данных - post_max_size) - не могу найти что это за ограничение и вообще настройка ли это php или apache. Может кто сталкивался? Подскажите как обойти.


На серваке:
- PHP Version 5.2.14
- System Linux
- Apache 2.0


За ранее спасибо



Спустя 13 минут, 2 секунды (17.08.2010 - 21:39) sergeiss написал(а):
Предупреждение по поводу множественного создания одной темы!!!
Предупреждение первое и последнее.

Спустя 5 минут, 20 секунд (17.08.2010 - 21:44) FatCat написал(а):
Цитата (bazhin @ 17.08.2010 - 22:27)
и вообще настройка ли это php или apache

Если настройки апача, то избыточное число переменных должно, ИМХО, дать ответ, характерный для апача: пятисотые страницы.

Спустя 6 минут, 49 секунд (17.08.2010 - 21:51) bazhin написал(а):
Цитата
Если настройки апача, то избыточное число переменных должно, ИМХО, дать ответ, характерный для апача: пятисотые страницы.


Да ответ apache 403 smile.gif блин, точно как сразу об этом не подумал.

Может кто подскажет как это обойти?

Спустя 5 часов, 36 минут, 2 секунды (18.08.2010 - 03:27) FatCat написал(а):
Я плохо знаю апач.
Джаваскрипт знаю лучше.
Джаваскриптом собрать весь массив так, словно строку запроса по GET, и ее передать по POST как один элемент массива, а уже средствами php принять и рассплитовать как надо.

Вот, попробовал набросать пример кода:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>
Untitled</title>
</head>
<body>

<!--Форму заполняет посетитель-->
<form action="" name="collect">
Эту форму заполняет посетитель:<br>
Первое поле: <input type="text" name="f1" id="f1" value="11"><br>
Второе поле: <input type="text" name="f2" id="f2" value="22"><br>
Чекбокс: <input type="checkbox" name="c1" id="c1" value="33"><br>
</form>

<!--Закрыли форму, сабмита нет.-->
<script type="text/javascript">
function
make_str(){
to_send = '';
for(var i=0;i<document.collect.elements.length;i++)
{
var e = document.collect.elements[i];
var is_exist = true
if
(e.type=='checkbox')if(e.checked == false)is_exist = false; // Не собираем неотмеченные чекбоксы
if(e.type=='text')if(document.getElementById(e.name).value == '')is_exist = false; // Не собираем пустые текстовые поля
if(is_exist)to_send += '&'+e.name+'='+document.getElementById(e.name).value;
}
document.getElementById('send').value = to_send;
}
</script>
<form
action="POST" name="action_form" id="action_form">
<!--Этот инпут только для демонстрации сделан видимым-->
<input type="text" name="send" id="send">
<!--В него пишется собранная строка-->
<br><input type="submit" name="go" value="go" onMouseOver="make_str()" onFocus="make_str()">
</form>
</body>
</html>

Спустя 5 часов, 1 минута, 26 секунд (18.08.2010 - 08:29) bazhin написал(а):
FatCat

Да, идея отличная (намного лучше предложил sergeiss biggrin.gif ), гораздо проще чем если разбивать таблицу с данными на несколько страниц. Но придется лезть в CMS - потеряется возможность обновления

Несколько слов, о том где эта проблема:

Есть такой шоп prestashop, у него есть админка, на одной из страниц админки можно перевести практически весь фронт с одного языка на другой, соответственно количество переменных при этом порядка 2500.

По поводу пересылки части данных в GET
1. скорее всего у хостера на GET еще большее ограничение
2. передавать надо текстовые данные с длинной строки до 255 символов!!!
Так что полностью или частично заменить метод передачи данных, скорее всего не получится.

Кстати, FatCat , твоя идея может сработать, но только если данные переместить не в строку URL, а в одну или несколько переменных!!!!!!!!!!!! и передать их тем же POST-ом. Спасибо за отличную подсказку. smile.gif

Спустя 4 часа, 3 минуты, 50 секунд (18.08.2010 - 12:32) FatCat написал(а):
Цитата (bazhin @ 18.08.2010 - 09:29)
скорее всего у хостера на GET еще большее ограничение

Обрати внимание, в коде ДВЕ формы.
Отправка данных будет из второй формы, а там
Цитата (FatCat @ 18.08.2010 - 04:27)
<form action="POST"

Лишь для примера данные записаны так, словно будут отдаваться по GET, на самом деле это строка текста, и ее ограничения - это скорее всего 8 Мб, как на большинстве хостингов.

Спустя 5 минут, 11 секунд (18.08.2010 - 12:38) bazhin написал(а):
Все всем спасибо, проблема решилась - хостер отключил ModSecurity - кому интересно что это: http://www.modsecurity.org

Спустя 23 дня, 7 часов, 22 минуты, 26 секунд (11.09.2010 - 20:00) Гость_Владимир написал(а):
друзья!
подскажите новичку мой первый код
вставляю на действующею Веб страницу, написанную в HTML
код
<?php
$w=привет;
echo $"w";
?>
на веб-странице нечего не появилось в чем причина
зарание спасибо

Спустя 10 минут, 34 секунды (11.09.2010 - 20:11) Lenarfate написал(а):
echo $w;

Спустя 19 минут, 20 секунд (11.09.2010 - 20:30) Гость_Владимир написал(а):
всеравно нечего

Спустя 12 дней, 20 часов, 32 минуты, 59 секунд (24.09.2010 - 17:03) Guest написал(а):
<?
$w="привет";
echo $w;
?>

или
<?
$w="привет";
echo "$w";
?>

Спустя 33 минуты, 38 секунд (24.09.2010 - 17:36) inpost написал(а):
Гость_Владимир
Создай отдельную тему!


_____________
Невозможное - это то единственное чем имеет смысл заниматься
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.