1

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

'first_name' => 'chris' '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 数组之前对其进行修改?

谢谢!!

4

3 回答 3

3

您可以像任何其他数组一样直接修改 $_POST 数组。

可以这样做:

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

然后运行您现有的代码。

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

于 2013-09-12T23:00:02.347 回答
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 . '&';
}
于 2013-09-12T22:58:45.743 回答
0

保持很简单:

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

这就是我将如何处理这个问题。

于 2013-09-12T22:58:49.027 回答