【问题标题】:How do I transfer data along with a redirect?如何与重定向一起传输数据?
【发布时间】:2011-12-23 08:50:45
【问题描述】:

显然,这段代码从它所在的位置(在 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

【问题讨论】:

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


    【解决方案1】:

    Session 可以跨请求保留数据。

    【讨论】:

      【解决方案2】:

      是的。

      如果您要重定向到同一域中的不同位置,而您真正需要的只是重定向数据,请考虑使用 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();
      

      【讨论】:

      • 那么让我直说吧。您似乎在说我可以使用 cURL 重定向到另一个页面,是吗?您要发布示例链接吗?
      • 想通了,哇哦,你这个开膛手!!
      猜你喜欢
      • 2016-05-18
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2020-08-20
      • 1970-01-01
      • 2011-07-04
      相关资源
      最近更新 更多