如何与重定向一起传输数据?

时间:2011-11-07 03:45:44

标签: php windows-7 iis-7 joomla1.5

显然,此代码从(在404处理程序中)的位置重定向到自定义404处理程序。

header('Location: index.php?option=com_content&view=article&id=4' );

除了在调用中添加额外的项目,例如

header('Location: index.php?option=com_content&view=article&id=4&param=foo' );

有没有其他方式传输数据?例如,是否有一种机制用于发送表单数据以及位置传输?

上下文:Windows7,IIS7,PHP 5,Joomla! 1.5

2 个答案:

答案 0 :(得分:2)

Session可以跨请求保留数据。

答案 1 :(得分:0)

如果要重定向到同一域中的其他位置,而您真正需要的是重定向数据,请考虑使用配置了Web服务器的重定向。我用Apache做过。使用IIS7 it shouldn't be too difficult

如果您需要做一些额外的事情(在传递之前捕获或操纵数据),那么您可以考虑使用sessions,将发布的数据保存到会话中,而不是将发布数据重新发布到新位置

如果您需要将收到的数据发布到新位置(特别是如果域名不在您的控制范围内)并呈现结果(不关心在浏览器中实际重定向),那么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();