首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空的$_POST变量webservice响应

空的$_POST变量webservice响应
EN

Stack Overflow用户
提问于 2012-10-03 23:51:49
回答 3查看 862关注 0票数 0

我正在与web服务服务器通信,在完成支付后,服务器将响应作为$_POST变量发送给我。如果我尝试print_r($_POST),它看起来是空的,但是当我把变量写到一个文本文件中时,这个文件会给我显示值。我的目标是构建一个来执行将完成用户订单的链接。由于$_POST值仅在文本文件中可见,因此我正在从文本文件中读取链接并尝试执行重定向,但是当到达另一个页面时,$_GET变量为空。我以前曾尝试用file_get_contents("php://input")恢复原始的$_POST变量,但没有成功。下面是我的实际代码:

代码语言:javascript
复制
<?php   
ob_start();
// let's get the online response parameters...  
$_VTransactionID = $_POST["VTransactionID"];
$_VAccountId = $_POST["VAccountId"];
$_VTotalAmount = $_POST["VTotalAmount"];
$_VPaymentMethod = $_POST["VPaymentMethod"];
$_VPaymentDescription = $_POST["VPaymentDescription"];
$_VAuthorizationNum = $_POST["VAuthorizationNum"];
$_VConfirmationNum = $_POST["VConfirmationNum"];
$_VMerchantTransId = $_POST["VMerchantTransId"];

////////Write LInk to file////////////////////////////////////
$fp = fopen("debug/OnlineResponseLog.log","w");

$link = "testvar.php?order_id=".$_VAccountId."&code=000&error=false&TxnGUID=".$_VConfirmationNum."\n\r";

if($fp){
    fwrite($fp,$link);
    fclose($fp);
}else{
    printf("error while trying to write on online response Log");
}
////////////////////////////////////////////////////////////////////////////
/////REad LINK////////////////////////////////////////////////////
$fp = fopen("debug/OnlineResponseLog.log","r");
if($fp){
    $cad = fread($fp,filesize("debug/OnlineResponseLog.log"));
    fclose($fp);
}else{
    printf("error while trying to read online response Log");
}
////////////////////////////////////////////////////
$url = $cad;
//To check if values where stored. Last char is used because last characters are supposed to be digits and not an equal sign.
$lastchar = substr($url, -1);
if($lastchar == "=")  
         $url ="testvar.php?order_id=&code=999&error=true&TxnGUID="; 

header("Location: $url");
//////////////////  
?>

任何帮助都将不胜感激。如果在print_r($_POST);中可以看到$_POST值,则可以避免所有文件写入

EN

回答 3

Stack Overflow用户

发布于 2012-10-03 23:57:22

使用$_REQUEST全局变量。只有在数据是"posted“的情况下才会填充$_POST变量,只有在发送HTTP查询字符串时才会填充$_GET。这两种方法都可以填充$_REQUEST。然而,你应该更加警惕在FORM发布期间的插入攻击,所以在使用$_REQUEST时,对用户重要性的清理/验证仍然至关重要。

票数 0
EN

Stack Overflow用户

发布于 2012-10-04 00:02:38

我猜你的post变量不是空的。因为这个你什么也看不见

代码语言:javascript
复制
ob_start();

测试时删除函数

票数 0
EN

Stack Overflow用户

发布于 2012-10-04 22:44:50

我通过将任务分离到两个单独的php文件中解决了这个问题。一个文件将使用$_POST变量构造的链接写入一个文件,然后重定向到另一个文件,该文件从该文件读取链接并重定向到相应的页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12712190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档