我正在使用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数组的原生方式?
谢谢!
答案 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"];
我就是这样做的。