0

更新 1:

foreach私のコードには次のループもあります。

foreach ($_POST as $key => $value){ 
    $message .= $key . " = " .$value ."\n\n<br />"; 
}

これが最後のものです。

または、問題は次の行にある可能性があります。

curl_setopt($ch, CURLOPT_POSTFIELDS, $req);

生成された文字列の が気に入らない%5B0%5D、つまり

transaction%5B0%5D=USD+21.00

コードを使用しています$req = http_build_query($_POST);か?

元の質問:

次のエラー メッセージが表示されます。

[Sun Aug 04 10:00:00 2012] [error] [client 000.0.00.000] PHP Warning:  stripslashes() expects parameter 1 to be string, array given in /var/www/page.php on line 20
[Sun Aug 04 10:00:00 2012] [error] [client 000.0.00.000] PHP Stack trace:
[Sun Aug 04 10:00:00 20122] [error] [client 000.0.00.000] PHP   1. {main}() /var/www/page.php:0
[Sun Aug 04 10:00:00 2012] [error] [client 000.0.00.000] PHP   2. stripslashes() /var/www/page.php:20

問題のコードは次のとおりです。

Line 19: foreach ($_POST as $key => $value) {
Line 20:     $value = urlencode(stripslashes($value));
Line 21:     $req .= "&$key=$value";
Line 22: }

$_POSTのものが含まれます。

Array
(
    [transaction] => Array
        (
            [0] => USD 21.00
        )

    [payment_request_date] => Sat Aug 04 10:00:00 PDT 2012
    [return_url] => http://000.000.000.000/success.php
    [fees_payer] => EACHRECEIVER
    [ipn_notification_url] => http://000.000.000.000/ipn.php
    [sender_email] => buyer_0394820394_per@gmail.com
    [verify_sign] => slkdfj30r2489urj0947830ru0ty80ur0er037jfgoiru932e.as329e
    [test_ipn] => 1
    [cancel_url] => http://000.000.000.000/cancel.php
    [pay_key] => AP-SLKJ30F9J90J3RSD3
    [action_type] => PAY
    [transaction_type] => Adaptive Payment PAY
    [tracking_id] => E4902RJF2
    [status] => COMPLETED
    [log_default_shipping_address_in_transaction] => false
    [charset] => windows-1252
    [notify_version] => UNVERSIONED
    [reverse_all_parallel_payments_on_error] => false
)

stripslashes()配列内の配列が原因で問題が発生していますか? $_POSTはいの場合、foreeachループ内でどのように対処できますか? いいえの場合、問題は何でしょうか?

4

2 に答える 2

1

関数http_build_queryを使用するだけで、URL エンコードされたクエリ文字列が生成されます。

$query_str = http_build_query($_POST);
于 2012-08-05T08:13:05.137 に答える
0
function stripslashes_every_string($array){
  foreach($array as $key => $value){
    $array[$key] = is_array($value) ? stripslashes_every_string($value) : stripslashes($value);
  }
  return $array;
}
$postdata = stripslashes_every_string($_POST);
于 2012-08-05T08:14:47.680 に答える