2012-08-05 2 views
0

UPDATE 1 : 마지막 하나입니다배열에서 배열 다루기?

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

:

나는 또한 내 코드에서 다음 foreach 루프를 가지고있다.

또는 어쩌면 문제는 라인에 있습니다

이 가
curl_setopt($ch, CURLOPT_POSTFIELDS, $req); 

가 생성 된 문자열의 %5B0%5D을 좋아하지 않는 코드 $req = http_build_query($_POST);를 사용하여 즉

transaction%5B0%5D=USD+21.00 

? $_POST는 다음과 같은 포함하는 경우

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

을 :

원래의 질문 :

나는 다음과 같은 오류 메시지가 받고 있어요는 :

[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 

문제의 코드는 이것이다

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] => [email protected] 
    [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()이 (가) 문제를 일으 킵니까? 예인 경우 foreeach 루프의 $_POST을 어떻게 처리 할 수 ​​있습니까? 그렇다면 무엇이 문제입니까?

답변

1

그냥 http_build_query 함수를 사용하면 URL 인코딩 된 쿼리 문자열이 생성됩니다.

$query_str = http_build_query($_POST); 
+0

은 그래서 하나의 라인 전체 'foreach' 루프를 대체? – oshirowanen

+0

@oshirowanen 그래, 그게 다야. – xdazz

+0

니스, 지금해볼 게. – oshirowanen

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); 
+0

업데이트 된 질문에 표시된 것처럼 두 개의 'foreach'루프 모두에서이 작업이 가능합니까? – oshirowanen

+0

원래 질문에서'update 1'에 더 자세한 내용을 추가했습니다. – oshirowanen

+0

원래 foreach 대신,이 함수에 변수를 설정하여 인수에 $ _POST를 전달하면 모든 문자열의 스트라이프가 깜박입니다. 원하는 기능에 따라 사용자 정의해야 할 수도 있습니다. – jeremy

관련 문제