У меня есть URL, который становится строкой запроса с функцией http_build_query.

Но у меня есть параметр timestamp, который я не могу редактировать. И &times становится знаком умножения x.

Есть ли обходной путь для этого?

Это мой массив, который передается в функцию http_build_query.

$parameters =   array(
            "transaction_id"=>uniqid("FF-"),
            "timestamp"=> time(),
            "order_total"=>$_SESSION['total_price'],
            "order_total_with_vat"=>$_SESSION['total_price'] * 1.21,
            "order_vat"=>"21",
            "payment_method"=>"ideal",
            "payment_status"=>"1",
            "customer_name"=>$_SESSION['customer_data']['naam'],
            "customer_address"=>$_SESSION['customer_data']['address'],
            "customer_city"=>$_SESSION['customer_data']['city'],
            "customer_zipcode"=>$_SESSION['customer_data']['zipcode'],
            "customer_country"=>$_SESSION['customer_data']['country'],
            "customer_email"=>$_SESSION['customer_data']['email'],
            "customer_telephone"=>$_SESSION['customer_data']['telephone'],
        );

Вывод URL:

http://somedomain/subdir/someapi/order?transaction_id=FF-58e2451c5aea9×tamp=1491223836&order_total=156695&order_total_with_vat=189600.95&order_vat=21&payment_method=ideal&payment_status=1&customer_name=t&customer_address=t&customer_city=t&customer_zipcode=t&customer_country=t&customer_email=t%40t&customer_telephone=t&product%5B0%5D=5&product%5B1%5D=5&product%5B2%5D=5&product%5B3%5D=5&product%5B4%5D=5&product%5B5%5D=5&product%5B6%5D=5

Предпочитаемый вывод:

http://somedomain/subdir/someapi/order?transaction_id=FF-58e2451c5aea9&timestamp=1491223836&order_total=156695&order_total_with_vat=189600.95&order_vat=21&payment_method=ideal&payment_status=1&customer_name=t&customer_address=t&customer_city=t&customer_zipcode=t&customer_country=t&customer_email=t%40t&customer_telephone=t&product%5B0%5D=5&product%5B1%5D=5&product%5B2%5D=5&product%5B3%5D=5&product%5B4%5D=5&product%5B5%5D=5&product%5B6%5D=5

http_build_query функция:

case 'POST':
    curl_setopt( $curlHandler, CURLOPT_POST, true );
    $url    .= '?' . http_build_query( $parameters );
    break;
2
Frank Groot 3 Апр 2017 в 17:25

2 ответа

Лучший ответ

@Novice был прав, он прокомментировал мой вопрос:

Это просто проблема отображения в браузере, но ваши данные скручивания будут идти точно так же, как вы показали в выбранном вами выводе, не нужно добавлять ничего лишнего, просто нажмите и начинайте! - Новичок

Когда я проверил apache access.log, я увидел опубликованную строку предпочтительного запроса.

1
Frank Groot 4 Апр 2017 в 07:27

В настоящее время он работает правильно. Проблема заключается в том, что когда вы повторяете свой URL, последовательность &times заставит ваш браузер заменить его на символ умножения x. Чтобы повторить это и показать правильный путь в браузере, попробуйте это:

echo htmlspecialchars($url); 

Это отобразит нужный URL.

4
AbraCadaver 3 Апр 2017 в 14:52