0

支払いが完了した後、サーバーが応答を$_POST変数として送信する Web サービス サーバーと通信しています。試してみると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

$_REQUESTグローバル変数を使用します。変数は、$_POSTデータが「投稿」された場合に$_GETのみ入力され、HTTP クエリ文字列が送信された場合にのみ入力されます。 $_REQUEST両方の方法で入力されます。ただし、投稿中の挿入攻撃にはもっと注意する必要があるFORMため、使用する場合は重要なユーザーのサニテーション/検証が引き続き重要$_REQUESTです。

于 2012-10-03T15:57:21.807 に答える
0

タスクを 2 つの個別の php ファイルに分けることで問題を解決しました。$_POST 変数を使用して構築されたリンクをファイルに書き込み、ファイルからリンクを読み取り、対応するページにリダイレクトする 2 番目のファイルにリダイレクトする 1 つのファイル。

于 2012-10-04T14:44:50.043 に答える