我正在处理一个处理信用卡的脚本,处理付款的公司会检查邮件请求的用户IP,国家等。
假设我有以下表格:
<form method="post" action="http://payment-processing-company.com/process_payment.php">
<input type="text" name="card_holder" value="John Doe">
<input type="text" name="creditcard_number" value="65415461171">
<input type="text" name="vcc" value="123">
<input type="text" name="exp_date" value="15/02/2017">
<input type="submit" value="Send">
</form>
在上面的示例中,用户直接向http://payment-processing-company.com/process_payment.php发出POST操作请求以处理付款,而pay-processing-company.com将获取他的IP,国家/地区等。
我想要的是在php文件中模拟POST请求 action =&#34; http://payment-processing-company.com/process_payment.php" ,当用户按下时提交按钮用他真正的IP,国家模拟。
请不要推荐任何javascript / ajax提交。我想要的是从源代码中隐藏动作POST动作URL并在用户按下PHP文件中的提交按钮时处理它,所有这些都是他的真实IP,国家等等。模拟全部用PHP
答案 0 :(得分:5)
快速方法是使用curl
命令
curl --data "card_holder=value1&creditcard_number=value2" http://payment-processing-company.com/process_payment.php
另一种方法是使用Chrome扩展程序,例如Postman - REST Client
答案 1 :(得分:1)
您可以使用cURL从PHP发送POST请求:
$ch = curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$params = array(
"card_holder"=>"a",
"creditcard_number"=>"b",
"vcc"=>"c",
"exp_date"=>"d",
);
curl_setopt($ch,CURLOPT_URL,"http://paymentprocessingcompany.com/process_payment.php");
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($params));
$result = curl_exec($ch);
//result will contain the response
答案 2 :(得分:1)
要建立与远程(付款)服务器的连接,您需要完成three-way TCP handshake。当服务器响应远程服务器返回的序列号时,握手完成。即使你设法spoof the original users IP address,这个序列号也会被发送回那个的IP地址而不是你的服务器。
虽然过去已经证明guessing the remote servers sequence numbers可能会欺骗IP地址,但由于此错误已于多年前修复,因此今天不太可行。
所以不,你不能欺骗服务器上运行的任何东西的用户IP地址。如果您需要使用用户IP地址,则必须在用户计算机上执行表单操作,例如。使用Javascript。
或,您可以与付款服务联系,了解您是否可以将IP地址,国家/地区等作为服务器POST
请求中的附加参数传递。