Следование переменных в $_POST

rembo

Новичок
Следование переменных в $_POST

Это может звучать абсурдно, но есть скриптец для которого порядок следования значений в переменной $_POST имеет значение.

Вопрос: Можно ли быть уверенным что переменные последуют в том же порядке, что и тэги input и textarea в форме?

Я сам очень хорошо понимаю что цепляться за порядок следования значений очень не разумно и даже глупо.
Однако обстоятельства таковы что это очень силно влияет на размер скрипта и скорость обработки данного запроса.
 

.des.

Поставил пиво кому надо ;-)
вот мне в голову не приходит задача которой важна последовательность значений пост запроса ....
просвети а?
а ответ на твой вопрос... скорее да - можно быть уверенным...
но 100% гарантию может дать лишь формирование запроса ручками и отсылка через fsockopen :)))
 

rembo

Новичок
Есть настроечный текстовик со списком переменных в формате примерно таком:
<имя_переменной> : <значение> ; (dynamic)?
Так вот последнее ключевое слово "dynamiс" оно может а может и не быть. Это все вываливается в форму там переменные удаляются добавляются и меняются в том числе меняется аттрибут "dynamic".
Имеем пары инпут и чекбокс
<input type="text" name="<имя переменной>" value="<значение>">
<input type="checkboх" name="<имя переменной>+dynamic" value="<значение>">
Так вот по субмиту должен создаваться файлик вышеуказанного формата. В том случае если чекбокс следует сразу за значением переменной то добавляем в строчку с переменной это ключевое слово не переворашивая весь массив по новой.
Вот такие пирожки. :)
А массив довольно таки большой и вообще если знать наверняка что порядок будет именно таким в скрипте можно обойтись 5-ю строчками кода в единственном цикле.
В противном случае надо создавать отдельный массив переворошить в лучшем случае один раз да потом еще отдельно выливать его в файл. Вобщем геморой один.

В конце концов так и сделаю наверное.
 

.des.

Поставил пиво кому надо ;-)
Простите.... а вы к своим переменным в скрипте как обращаетесь?
мне кажется должны по имени.. ну или имени+индекс... то есть
$_POST["имя_переменной_1"]
не так ли?
ну и что же сложного в том что бы это же имя дать чекбоксу (допустим с символом подчеркивания)?
и проверять установлен ли он или нет.. вообще тогда без разницы... по порядку они или не порядку.. пофиг.
другое дело если имена у тебя совсем совсем рэндом... но тогда хоть имена чекбоксов должны быть похожи на имена переменных иначе я не знаю как ты принадлежишь принадлежность одного другому.. (ну разве да так как ты хотел по порядку)
мое предположение основывается на том что name инпутов с chekboксами отличается от имен инпутов переменных на _checkbox
то есть
<input type="text" name="rnd_var" value="rnd_value">
<input type=checkbox name="rnd_var_checkbox">+ dynamic rnd_value

<frm.htm>
PHP:
<form action="var.php" method="post">
<input type="text" name="rnd_var" value="rnd_value">
<input type=checkbox name="rnd_var_checkbox">+ dynamic rnd_value
<input type="text" name="LJUBAJA_PEREMENNAJA" value="ljuboe">
<input type=checkbox name="LJUBAJA_PEREMENNAJA_checkbox">+ dynamic 
<input type="text" name="new_var" value="new_value">
<input type=checkbox name="new_var_checkbox">+ dynamic 
<input type="submit">
</form>
<var.php>
PHP:
<?
// в этом файле ты последовательно получаешь все имена и значения переменных.
// И по этим именам ты получаешь нужное тебе свойство dynamic оно или нет!
$fstring="";
foreach($_POST as $post)
{
	$tkey=key($_POST);
	next ($_POST);
	if(strpos($tkey, "_checkbox")) continue; // Если это имя чекбокса, а не переменной то пропускаем.
	$fstring.=$tkey.":".$post.";";
	if (isset($_POST[$tkey."_checkbox"]))
		$fstring.="dynamic?";
	else
		$fstring.="non-dynamic?";
	$fstring.="\n";
}
$fp=fopen("myvarfile","w") or die("cannot open file");
fwrite($fp,$fstring);
fclose($fp);
?>
Вот когда делать мне не фиг :)
я даже не знаю о том ли я писал :)
 

rembo

Новичок
Вот спасибо то большое!!! Супер идея и такая же реализация. Абсолютно то что мне надо.
 

.des.

Поставил пиво кому надо ;-)
в результате работы скрипта получается вот такой файл
-------myvarfile-----------------
rnd_var:rnd_value;dynamic?
LJUBAJA_PEREMENNAJA:ljuboe;non-dynamic?
new_var:new_value;dynamic?
------------------------------------
от перестановки инпутов в любом порядке в этом файле изменится лишь порядок следования переменных
 

.des.

Поставил пиво кому надо ;-)
обрати внимание! поправил немножко скрипт... next инструкцию добавил .. без нее был БОЛЬШОЙ БАГ :)
 

rembo

Новичок
Еще надо будет и секунды ко времени постинга :)
По поводу темы: Бывает иногда у меня, как-то сразу придумаешь че-то дурацкое потом это как опухоль злокачественную "скальпелем" вырезать приходится. :)
 
Сверху