我知道还有其他答案,我看了看他们但仍然遇到麻烦。基本上有点击跟踪软件,并希望从表单提交中传递几个不同的ID。
这是我尝试过的:
if(isset($_POST['pid']))
$pid = $_POST['pid'];
$Curl_Session = curl_init('http://myurl/db/click.php?c=8&key=XXX');
curl_setopt ($Curl_Session, CURLOPT_POST, 1);
curl_setopt ($Curl_Session, CURLOPT_POSTFIELDS, "pid=$pid");
curl_setopt ($Curl_Session, CURLOPT_FOLLOWLOCATION, 1);
curl_exec ($Curl_Session);
curl_close ($Curl_Session);
header("Location:http://myurl/cgi-bin/thanks.php");
但没有最后一个标题行(我希望它重定向到curl网址)。在此网站找到它:http://www.askapache.com/php/sending-post-form-data-php-curl.html#Sending_POST_data_placing_response_variable
当我运行上述内容时,它会转到404页面吗?我尝试将c = 8& key =移动到curlopt_postfields,但这导致跟踪软件无法正常工作。
我做错了什么,这是我应该这样做的方式吗?
最终我想要做的是:
header("Location:http://myurl/db/click.php?c=8&key=XXX&pid=" . $_POST['pid']);
但是这个ofc不起作用。
谢谢!
答案 0 :(得分:0)
当您在CURLOPT_FOLLOWLOCATION
中使用CURL
时,如果重定向您将丢失Cookie,并且您在下一步中没有任何关于这些发布值的线索,只需添加一个新值CURLOPT_COOKIEJAR
'-'
这是stdOut,这有助于保持cookie甚至没有cookie文件,最后引导您进入cookie的下一步,以便下一步将您识别为以前的访问者。
curl_setopt ($Curl_Session, CURLOPT_COOKIEJAR, '-');
更新:
好吧,如果您将脚本重定向到该页面,则需要在重定向时随身携带cookie;您必须从CURL
捕获Cookie并在脚本中设置它们。
setcookie('COOKIE NAME FROM CURL RESULT', 'COOKIE VALUE FROM CURL RESULT', 60 * 60 *24 /* YOU CAN EXTRACT FROM CURL COOKIE RESULT */);
header("Location:http://myurl/cgi-bin/thanks.php");
答案 1 :(得分:0)
那么,USER正在对你的网站页面进行POST,你的回复是301 Moved Permanently http代码?
让我们阅读RFC 2616(关于HTTP ...)
10.3.2 301永久移动
[...]
如果收到301状态代码以响应除以外的请求 GET或HEAD,用户代理不得自动重定向 除非可以由用户确认,否则请求,因为这可能 改变发出请求的条件。
注意:收到后自动重定向POST请求 301状态代码,一些现有的HTTP / 1.0用户代理将错误地 将其更改为GET请求。
因此,用户第一次发送表单时,执行POST操作: [您的页面]在CURL部分之后,您将返回一个301代码,该代码将使浏览器重定向。 对地点进行GET:http://myurl.com/cgi-bin/thanks.php。 但只有当curl输出任何代码或错误时才会发生这种情况。
确保在第一个请求上,在帖子字段上设置了pid,否则您将在重定向之前获得PHP NOTICE / WARNING。这将使重定向无效。
评论您的CURL代码,看看您的重定向是否有效。如果工作,意味着重定向代码之前的某些内容正在HTML上输出内容。