如何在不使用php中的curl或fsocket的情况下将帖子数据发送到任何网址(带重定向)

时间:2010-02-03 06:21:27

标签: php post curl redirect

我希望将我的页面重定向到新的网址,并将一些帖子数据发送给它。 我不想使用curl或fsocket,因为他们不会将用户重定向到新的URL。

标题是否有任何替代方法(“位置:blahblahblah”);发送帖子数据? 我尝试使用document.form.submit();并且它有效,但有些用户正面临着javascript的问题。

任何人都可以为此提供替代解决方案吗? 是否有任何PHP函数将用户重定向到新的URL以及一些发送到此URL的帖子数据。

提前致谢。

5 个答案:

答案 0 :(得分:1)

function do_post_request($url, $data, $optional_headers = null)
  {
     $params = array('http' => array(
                  'method' => 'POST',
                  'content' => $data
               ));
     if ($optional_headers !== null) {
        $params['http']['header'] = $optional_headers;
     }
     $ctx = stream_context_create($params);
     $fp = @fopen($url, 'rb', false, $ctx);
     if (!$fp) {
        throw new Exception("Problem with $url, $php_errormsg");
     }
     $response = @stream_get_contents($fp);
     if ($response === false) {
        throw new Exception("Problem reading data from $url, $php_errormsg");
     }
     return $response;
 }

请查看此链接http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

答案 1 :(得分:0)

使用header("Location: $new_url")有什么问题?这是执行重定向,并且是 AFTER POST数据的正确方法。

编辑:更新以澄清这不是数据的发布方式。

答案 2 :(得分:0)

使用javascript进行重定向的规范方法,对吧?你需要有一个简单的页面:

a)生成一个表单,其中操作网址是您要去的地方

b)编写隐藏字段以包含post_data

c)让javascript在加载时为您提交表单

答案 3 :(得分:0)

您无法使用PHP模仿表单的行为。您可以发送POST数据,但不能使用相同的请求重定向用户。你需要用表格来做。正如Igor所描述的那样,可以使用Javascript更改表单的预期行为,但我建议不要使用它。

答案 4 :(得分:0)

如果您只需要传输数据但POST不是必需的替代解决方案:

  • 重定向用户并通过查询字符串传输数据
  • 在会话中保存数据并重定向用户