显然,这段代码从它所在的位置(在404处理程序中)重定向到自定义404处理程序。
header('Location: index.php?option=com_content&view=article&id=4' );
除了在调用中添加额外的项之外,例如
header('Location: index.php?option=com_content&view=article&id=4¶m=foo' );
还有其他传输数据的方式吗?例如,是否有一种机制可以在传送位置的同时发送表单数据?
环境:Windows7, IIS7, PHP 5, Joomla!1.5
Session可以跨请求保存数据
可以。
如果你要重定向到同一域中的不同位置,而你真正需要的只是重定向数据,请考虑使用与web服务器配置的重定向。我已经用Apache做到了这一点。使用IIS7应该不会太难。
如果你需要做一些额外的事情(在传递数据之前捕获或操作数据),那么你可以考虑使用会话,将发布的数据保存到会话中,而不是将发布的数据重新发布到新的位置。
如果您需要将接收到的数据发布到一个新的位置(特别是如果域不在您的控制范围内)并呈现结果(不关心在浏览器中实际重定向),那么cURL可能很有用。
下面是一些示例代码:if(!empty($_GET['url'])) $url = $_GET['url'];
else $url = 'localhost/default.php';
$post = array
(
'example_post_var_1' => 'foo',
'example_post_var_2' => 'bar'
);
$options = array
(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 4,
CURLOPT_POSTFIELDS => http_build_query($post)
);
$ch = curl_init();
curl_setopt_array($ch, $options);
if(!$result = curl_exec($ch))
{
trigger_error(curl_error($ch));
}
echo $result;
curl_close($ch);
exit();