0

我想在提交后将人发送到感谢页面的页面上有一个表单,但我想将表单中的数据发送到远程服务器上的另一个 .php 文件。我已经使用该操作将信息作为帖子直接发送到远程服务器,它工作得很好,但为了安全起见,我不希望在任何代码中看到远程位置。我正在处理的解决方案是在提交之后,表单操作会将您发送到 .php,该 .php 将通过 cURL 将发布信息发送到远程。这是它下山的地方。我不打算使用 cURL,只是我读到的唯一一个听起来可以工作的东西。因此,回顾一下这是否令人困惑;人点击提交,他们会转到一个 .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 的新手,所以这对于我正在尝试做的事情来说可能非常糟糕。我的主要工作是隐藏遥控器的位置。

我在正确的轨道上吗?这可能吗?

4

4 回答 4

0

我认为还有另一种选择:-

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

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

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

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

感谢和问候普什卡

于 2012-09-05T06:29:02.700 回答
0

检查 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);

?>
于 2012-09-05T06:24:17.040 回答
0

首先通过curl。请参阅此链接以发布数据。正如您所说“我的主要工作是隐藏遥控器的位置”,您可以在这种情况下使用数据库。将您的远程位置保存在一张表中,并随时检索它。

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

<?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);
?>
于 2012-09-05T06:31:24.863 回答
0

我想你需要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”的文件名来明确指定。此参数可以作为 urlencoded 字符串(如 'para1=val1¶2=val2&...')或作为字段名称作为键和字段数据作为值的数组传递。如果 value 是一个数组,则 Content-Type 标头将设置为 multipart/form-data。从 PHP 5.2.0 开始,如果文件以 @ 前缀传递给此选项,则 value 必须是数组。

于 2012-09-05T06:34:36.587 回答