2013-04-08 61 views
1
其他页面

我有HTML表单,我必须提交相同的页面上的形式,其中的那种形式,添加POST变量,然后所有的变量传递到下一个页面。我尝试这样做:PHP着POST变量

 <form method="POST" action=""> 
     <input type="TEXT" name="names" /> 
     <input type="TEXT" name="email" /> 
     <input type="submit" name="send" /> 
    </form> 

,然后这个PHP代码:

if($_POST['send']){ 

    $_POST['digest'] = "someText here"; 
    header("HTTP/1.0 307 Temporary redirect"); 
    header("Location:https://nextpage.com/form"); 

} 

但是当我重定向到另一个网页,所有的POST数据,不同的是 “$ _ POST [ '消化']” 发..我该怎么办 ?

感谢,并为英语不好对不起。

+0

你不得不添加'digest'到URL(这当然会变成一个GET变量,有长度的限制等),我不认为有一种方法做你想要的东西。 (其实我很惊讶,浏览器重新发布POST数据到新的URL。这是记录/预期?) – 2013-04-08 18:49:30

+0

看http://stackoverflow.com/questions/653090/how-do-you-post-to- a-page-using-php-header-function – Heberfa 2013-04-08 18:51:48

+1

@Pekka웃:它可能因浏览器而异。看到这个帖子:http://stackoverflow.com/questions/46582/response-redirect-with-post-instead-of-get – Alekc 2013-04-08 18:52:00

回答

2

你需要通过变量要重定向到URL的查询字符串。

http://www.php.net/manual/en/function.http-build-query.php

+0

这不是我需要的。我必须重定向到下一页.. – 2013-04-08 18:51:59

+1

@哈里斯为什么它不是你所需要的?它可以帮助您为下一页构建一个URL – 2013-04-08 18:54:46

+1

@Haris无法将POST数据添加到来自PHP端的浏览器请求中。您必须先与Alekc的解决方法一起使用。 – 2013-04-08 18:58:00

2

如果你正在使用PHP的头功能时无法通过POST重新发送您的变数。

你有2个方案在这里:在$ _GET

  1. 转换$ _ POST(例如http_build_query)
  2. ,如果它是必不可少的,你有这样的数据作为POST传输,你可以创建一个空白页面包含输入类型=“隐藏”的表单,然后用javascript提交。有点丑,但应该工作。
2

你需要使用卷曲这一点。

$fields_string = "name=".$_POST['name']."&email=.$_POST['email']; 
    $url = "the website you want to post to"; 
    $cx = curl_init(); 
     curl_setopt($cx, CURLOPT_URL,$url); 
     curl_setopt($cx, CURLOPT_POST, true); 
     curl_setopt($cx, CURLOPT_POSTFIELDS,$fields_string); 
     curl_setopt($cx, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($cx, CURLOPT_SSL_VERIFYHOST, FALSE); 
     curl_setopt($cx, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($cx, CURLOPT_FOLLOWLOCATION, FALSE); 
    $init_response = curl_exec($cx); 
    curl_close($cx); 

http://php.net/manual/en/book.curl.php

+0

这将从根本上改变OP正在做的事情。将不再有任何浏览器的上下文(开放会话,饼干,客户端IP,用户代理...) – 2013-04-08 18:51:59

+0

@Pekka웃为什么不会有?下一页的内容存储在一个变量中,您可以按需要显示它。什么阻止你把'session_start();'放在那个页面的顶部?我真的不明白你的反对意见。 – 2013-04-08 19:00:11

+0

with curl,*您的服务器*发出请求,而不是客户端的浏览器。 Curl作为一个独立的客户端,与用户的浏览器无关。无论是否存在'session_start()',用户的会话ID都无法卷曲。 – 2013-04-08 19:01:12