因为安全因素,不能向客户端显示表单参数, 而是要客户点击提交后, 通过服务端程序处理并生成动态表单, 并以post方式提交到另外一个站点, 并且重定向至该站点.. 请问有实现方法吗?举个例子:
电子商务网站的paypal付款接口, 客户点击checkout时, 我希望表单的地址是本地地址, 比如progress.php, 然后在progress.php中处理所有paypal所需的post数据, 并且post到paypal, 同时页面转向了paypal的页面, 而对用户来说是透明的, 他只是点击了checkout按钮, 下一步就到了paypal页面并继续完成付款.
电子商务网站的paypal付款接口, 客户点击checkout时, 我希望表单的地址是本地地址, 比如progress.php, 然后在progress.php中处理所有paypal所需的post数据, 并且post到paypal, 同时页面转向了paypal的页面, 而对用户来说是透明的, 他只是点击了checkout按钮, 下一步就到了paypal页面并继续完成付款.
解决方案 »
- PHP有没有可能写出转发邮件的代码???
- 正则表达式如何写?{ordinary|normal|regular|standard}
- curl问题,在线
- 关于 unset 的作用 以及 memory_get_usage 代码执行时间相关 欢迎大牛进来讨论
- smarty缓存问题 请高手帮忙帮忙~~
- 大家写过或者用过这样的算法吗?
- linux下无法抓取外部网页
- 倒序输出问题,在线等,急!!!
- 在网上找了一个购物车的类,我调用了其中的一种方法,可还是有点问题.请帮帮看一下,谢谢!!!
- 如何使添加的内容放到文本数据库的前面?
- 正则去除一些DIV内的内容。
- 我的phpmyadmin工作正常,但是为何我用 mysql_connent()却提示出错?
<head>
<script type="text/javascript">
function loadXMLDoc()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","ajax_info.txt",false);
xmlhttp.send();
}
</script>
</head>
<body>
最重要的是做好数据加密
还是赞同3楼,做好数据加密
有一个要确认付款页面,上面有一个表单form。这个form提交后用户会跳转到paypal上面去付款。但这个form里面是不包括input, textarea这些要提交的表单值的(也就是我说的不输出表单,表单的值对客户端是不可见的),里面只有一个input type=submit的按扭。这个form的action是指向页面本身,而不是paypal站点。表单的值在客户端不输出,当用户点击提交后再由服务端程序生成表单元素的值并把它们post到paypal上面。而且页面也要一起转向到paypal上面。curl方式是可以在服务端post数据,但页面还是保持在原来的地方,不能转向到指定的站点上
加密表单这些方法是可以用,但现在只想知道有什么方法可以如上述不用输出表单直接可以在服务器端post数据,不要说curl,socket这些方法了
我这有2个提议,你参考下!
1:你可以用input type=hidden;
2:你在之前填值的页面把相应的值保存到session什么的中,在这个提交页面只做个跳转的按钮,你让那些session什么的,点确认就传过去,直接退出或者关闭就销毁session就是了。
这个地方我们都是直接action到paypal的,这个表单里不包含对用户需要保密的数据
不登录paypay就能完成付款操作吗?
/*$tracTime = array();
$tracTime[__LINE__] = getmicrotime();*/ $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$result = curl_exec($ch);
curl_close($ch); if (is_string($result) && strlen($result)) {
$return = 'info';
} else {
$return = 'error';
}
// 监控日志
/*$tracTime[__LINE__] = getmicrotime();
TracingLog($tracTime, __METHOD__, array($return,$url), SERVICE_API);*/
if($return=='error') {
//monErrorLog(__METHOD__, $url.'?'.implode('&', $data));
return false;
}
return true;
}
protected function requestUrlByPost($url,$data,&$result,$timeout=3) {
/*$tracTime = array();
$tracTime[__LINE__] = getmicrotime();*/ $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$result = curl_exec($ch);
curl_close($ch); if (is_string($result) && strlen($result)) {
$return = 'info';
} else {
$return = 'error';
}
// 监控日志
/*$tracTime[__LINE__] = getmicrotime();
TracingLog($tracTime, __METHOD__, array($return,$url), SERVICE_API);*/
if($return=='error') {
//monErrorLog(__METHOD__, $url.'?'.implode('&', $data));
return false;
}
return true;
}
CURLY方法是可以执行这些操作,但是用这种方法页面不用跳转到paypal上去。用户点击确认付款后还要跳转去paypal上面登陆付款的。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript" ></script>
<script>
$(function(){
$('<form />',{
action : "http://www.qq.com",
method : "POST",
html : "<input name='qq' value='123456' />"
}).appendTo($('body')).submit();
});
</script>
不知道你说的问题在哪!
改改头像吧,难看;
分以下几步:
1,自选你说不要input这些,但你要处理业务必须传数据,不用表单,这些数据要不存数据库,要不存文件,提交页面就只用<input type="hidden" name="id" value="1">这总没人知道你是什么东西了吧。数据再在提交后的页面提取出来.
2,不同域的post,如果对两个域都是你自己的好办,两边规则你自己写,API实现方法有很多,最常见的就是curl了。
3,处理完后要跳转,你可以在A域post数据后,一直做数据等待,等到数据成功返回后,做个带页面跳转到B域就可以了。
头像有空再换过来。
你所说的好像就是我想要的。可以说具体一点吗?
我要把数据post到paypal,两边是不同的域,不过paypal可能会有相应的api。
你所说的用curl处理,具体是怎么处理吗?我知道网站有很多关于curl模拟post操作的实例,但能套用到这里吗?
你的第三点说使用curl post数据,有数据返回后,应该怎么跳转到B域呢?难道是用PHP的header()转向或者js的location来转?希望可以一一解释我的疑惑,把你的那几点说得详细点,谢谢!
人家都能直接拿出来用,你作为接入方,还怕什么
打印隐藏的form然后js提交是最省力的解决方式。
当然,有人非要说不行,你就用curl模拟提交了。至于你所说的什么跨站post安全问题,胡思乱想,人家接口提供给你post提交方式,难道还会有问题??你思维可真混乱用户向你的脚本a.php提交数据,你处理完数据后将需要post的数据通过模拟的方式提交到对方接口地址就ok了。
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 我使用这个还是不能实现自动跳转,只给我回传个1不知何意?