修改$ _POST数组中的项目

时间:2013-09-12 22:51:27

标签: php arrays forms codeigniter

我正在使用CodeIgniter来验证表单数据,然后使用带有$ _POST键值对的php header()函数将其发布到第三方站点作为URL参数。例如:

'first_name'=> '克里斯' 'area_code'=> '555' 'phone_number => '555-5555'

...将成为'http://thirdpartysite.com?first_name=chris&area_code=555&phone_number=555-5555'。

我能想到的最“优雅”的方法就是像这样迭代$ _POST数组......

$formValues = $this->input->post(NULL, TRUE);
foreach($formValues as $key => $value) 
{
    $postURL .= $key . '=' . $value . '&';
}

问题是第三方网站需要将整个电话号码作为一个参数;它不能将“区号”和“电话号码”分成两部分,就像我在表格上一样。所以我需要做的是连接area_code和phone_number并将其存储在一个新的变量中,该变量被附加到URL字符串。

最好的方法是什么?我想到可能在foreach循环中添加一个if,else语句来检查密钥是否为“area_code”或“phone_number”并执行正确的操作,但是有更好的方法吗?在迭代它之前,php或CodeIgniter中是否存在修改$ _POST数组的原生方式?

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用与任何其他数组相同的方式直接修改$ _POST数组。

可以做:

$_POST['phone'] = $_POST['area_code'] . $_POST['phone_number'];
unset($_POST['area_code']);
unset($_POST['phone_number']);

然后运行现有代码。

但是,以这种方式处理用户输入并不是一个好理想 - 您应该只将您需要的字段传递给第三方URL,否则恶意的人可能会使用您的脚本来攻击第三方服务器。

答案 1 :(得分:1)

您只需将区号添加到formValues数组中电话号码的开头,然后删除区号代码:

$formValues = $this->input->post (NULL, TRUE);

$formValues['phone_number'] = $formValues['area_code'] . '-' . $formValues['phone_number'];
unset ($formValues['area_code'];

foreach ($formValues as $key => $value) 
{
    $postURL .= $key . '=' . $value . '&';
}

答案 2 :(得分:0)

保持简单:

$formValues = $this->input->post(NULL, TRUE);
$postUrl = $address . "?first_name=" . $formValues["first_name"] . "&phone=" . $formValues["area_code"] . "-" . $formValues["phone_number"];

我就是这样做的。