0

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

<?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");
//////////////////  
?>

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

4

3 回答 3

0

我猜你的帖子变量不是空的..因为这个你什么都看不到

ob_start();

在测试时删除该功能

于 2012-10-03T16:02:38.027 回答
0

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

于 2012-10-04T14:44:50.043 回答
0

使用$_REQUEST全局变量。该$_POST变量仅在数据已“发布”$_GET时才会填充,并且仅在发送 HTTP 查询字符串时才会填充。 $_REQUEST由两种方法填充。但是,您应该在FORM发布期间更加警惕插入攻击,因此在使用$_REQUEST.

于 2012-10-03T15:57:21.807 回答