重定向到一个页面并将帖子信息发送到另一个页面


Redirect to one page and send post info to another

我希望在提交后将人员发送到感谢页面的页面上有一个表单,但我希望将表单中的数据发送到远程服务器上的另一个.php文件。我已经使用了将信息作为帖子直接发送到远程服务器的操作,它运行得很好,但为了安全起见,我不希望在任何代码中看到远程服务器上的位置。我正在研究的解决方案是在提交后,表单操作会将您发送到一个.php,该php会通过cURL将帖子信息发送到远程。这就是它下山的地方。我不想使用cURL,这是我读到的唯一听起来可行的东西。因此,如果这让人感到困惑;人们点击提交,他们会转到一个php,上面写着"你是一个很棒的人",但它也会将帖子中的信息发送到远程服务器,同时只显示php中远程的位置,所以它在代码中不可见。

我的html上有表单:

<form action="landing.php" method="post">
Client:<input name="client" type="text" size="20" maxlength="30">
    <br />
Test1:<input name="test1" type="text" size="20" maxlength="30">
    <br />
Test2:<input name="test2" type="text" size="20" maxlength="30">
    <br />
<input type="submit" name="submit" value="Submit" />
</form> 

转到本页:

<?php
$ch = curl_init();
$data = array('client' => 'Foo', 'test1' => '123', 'test2' => '987');
curl_setopt($ch, CURLOPT_URL, 'http://MyServer/test.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
Thank You etc.

它不起作用。。。我是cURL的新手,所以我想做的事情可能会非常糟糕。我的主要任务是隐藏遥控器的位置。

我走对了吗?这可能吗?

检查Curl是否启用

张贴后,尝试从Curl 获取输出

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/path/to/form");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
$data = array(
    'foo' => 'foo foo foo',
    'bar' => 'bar bar bar',
    'baz' => 'baz baz baz'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
?>

我认为还有一个替代方案:-

  1. 使用可以在会话中存储数据
  2. 然后重定向到页面

希望这些信息能对你有所帮助。

或者还有一个解决方案,您可以使用以下代码重定向到新页面:

<?php
    header("Status: 301 Moved Permanently");
    header("Location:http://MyServer/test.php?". $_SERVER['QUERY_STRING']);
    exit;
?>

感谢和问候Pushkar

第一个遍历旋度。有关过帐数据,请参阅此链接。正如你所说的"我的主要任务是隐藏遥控器的位置",在这种情况下你可以使用数据库。将您的远程位置保存在其中一个表中,并随时检索。

试试这个来解决你当前的问题。

<?php
//set POST variables
$url = 'http://MyServer/test.php';
$data = array('client' => 'Foo', 'test1' => '123', 'test2' => '987');
//url-ify the data for the POST
foreach($data as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
?>

我想您需要将POSTFIELDS作为类似的字符串

$data = 'client=Foo&test1=123&test2=987'

要获得返回数据,请添加

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$returnText = curl_exec($ch);
$data= curl_getinfo($ch);

如果你想把它用作数组,请阅读这个

要在HTTP"post"操作中发布的完整数据。为了张贴文件,在文件名前面加上@并使用完整路径。文件类型可以是通过在文件名后面加上格式';type=mimetype'。此参数可以作为url编码的字符串,如"para1=val1&para2=val2&…'或作为一个数组字段名称作为关键字,字段数据作为值。如果值是数组,内容类型标头将被设置为多部分/表单数据。截至PHP5.2.0,如果文件以@前缀传递给此选项,则值必须是一个数组。

相关文章: