对于我的一个项目,我正在创建一个可供其他人使用的注册表。为了简化这一点,我使用CURL发送数据。基本上设置是这样的:
访问者访问registration.php,填写表单并提交。在registration.php中,用户被发送到另一个web服务器上的handler.php。此文件与RegistrationClass和其他类(MySQL以及用于注册注册的几个模型)进行通信。 RegistrationClass根据获得的$ _POST数据验证注册。此数据将返回到handler.php并将其返回registration.php。
唯一的问题是,每当我提交表单时,都会进行验证/注册,但表单会在registration.php页面上呈现两次。第一种形式(最低)是提交前表格的原始表述。第二个是与验证/注册结果相同的表单。我猜这是我必须设置的CURL_OPT,但我似乎无法弄清楚哪一个......
我用这个代码将用户发送到处理程序页面:
if(isset($_POST["ProcessRegistration"]))
{
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_POST => 1,
CURLOPT_URL => "http://bfransen.devdev.nl/Global/Willem.php",
CURLOPT_POSTFIELDS => http_build_query($_POST)
)
);
curl_exec($ch);
curl_close($ch);
}
在RegistrationClass中,这是返回值:
private function PostBack()
{
$ch = curl_init();
$this->_POST["Error"] = $this->ErrorCode;
$this->_POST["ErrorMessage"] = $this->GetError($this->ErrorCode);
$this->_POST["Ack"] = true;
unset($this->_POST["ProcessRegistration"]);
curl_setopt_array($ch, array(
CURLOPT_POST => 1,
CURLOPT_URL => $this->_SuccessURL,
CURLOPT_POSTFIELDS => http_build_query($this->_POST)
)
);
if(!curl_exec($ch))
{
trigger_error(curl_error($ch));
}
curl_close($ch);
}
如果您尝试访问:http://www.fransenmedia.nl/registratie.php并尝试使用该表单,无论您填写什么内容,此时都会返回错误。但是会出现双重形式。
P.S。请注意,我是荷兰语,所描述的文件名称不同(registration.php - > registratie.php和handler.php - > Willem.php)