2010-07-20 3 views
0

Мне нужно сгенерировать html-форму с различными скрытыми переменными. Однако «проблема» заключается в том, что существует множество переменных .e.g php, html генерировать форму из mutiple переменных

 
    $siteId = getValue("siteId", $localurl); 
    $itemid = getValue("itemid", $localurl); 
    $bidqty = getValue("bidqty", $localurl); 
    $maxbid = getValue("maxbid", $localurl); 
    $lagoonemorebid = getValue("lagoonemorebid", $localurl);

$tokenstring = getValue("tokenstring", $localurl); $usage = getValue("usage", $localurl); $robotimage = getValue("robotimage", $localurl); $ru = getValue("ru", $localurl); $usergoal = getValue("usergoal", $localurl); $reporting = getValue("reporting", $localurl); $buyerLogging = getValue("buyerLogging", $localurl); $runame = getValue("runame", $localurl); $ruparams = getValue("ruparams", $localurl); $PromoCode = getValue("PromoCode", $localurl);

... вышеупомянутые vars - всего лишь несколько из всего списка. В принципе, я могу сгенерировать форму вручную с помощью
 
    echo " 
form action=\"http://$domain/mailer/create.php\" name=\"create\" method=\"post\" /> 
input type=\"hidden\" name=\"random\" value=\"$random\" />

, но мне было интересно, есть ли «умная» техника для использования foreach или какой-либо функции для получения всех переменных и генерации формы вместо этого, чтобы вручную писать все скрытые входы ...

ответ

0

Предполагаю, что getValue - это настраиваемая функция. Моя рекомендация будет следующей:

<?php 
// arrays to facilitate foreach loop 
$hidden_fields = array('siteId', 'itemid', 'bidqty'); // store hidden field names 
$hidden_values = array(); // store the hidden field values 

foreach ($hidden_fields as $key => $value) { 
    // fill the values array using the values from fields array 
    $hidden_values[$value] = getValue($value, $localurl); 
} 


<?php 
echo " 
form action=\"http://$domain/mailer/create.php\" name=\"create\" method=\"post\" /> 
input type=\"hidden\" name=\"random\" value=\"$random\" />"; 

// output hidden fields 
foreach ($hidden_values as $key => $value) { 
    echo '<input type="hidden" name="', $key, '" value="', $value, '" />'; 
} 
?> 

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

+0

Это выставляет XSS уязвимость. – Gajus

1

Да, есть способ. Добавьте все свои значения в массив и используйте функцию PHP array_walk.

например:

$hiddenVars = array(
    'siteId' => getValue("siteId", $localurl), 
    'itemid' => getValue("itemid", $localurl), 
    ..... 
); 

function outputHiddenFields(&$val, $key) { 
    echo '<input type="hidden" name="', $key, '" value="', $val, '" />'; 
} 

array_walk($hiddenVars, 'outputHiddenFields'); 

Преимущество этого метода состоит в том, что ваш массив $ hiddenVars может динамически изменяться, и это будет по-прежнему работать.

0

Хорошо, есть более умный способ. Вы можете использовать только один скрытое поле и значение будет закодированы сериализованная строка всех вашего переменные:

$options = array(
'asd' => 1, 
'zxc' => 2, 
); 
$options = base64_encode(serialize($options)); 
echo '<input type="hidden" name="state" value="' . $options . '" />'; 

Тогда вы можете получить значение, как это:

$options = unserialize(base64_decode($_POST['state'])); 
Смежные вопросы