gpt4 book ai didi

php - cURL 后存储的数据没有空格

转载 作者:行者123 更新时间:2023-11-29 08:32:28 27 4
gpt4 key购买 nike

设置很简单。 Joomla 电子商务网站(MySQL 后端),在创建 Joomla 帐户后将数据(cURL post)发送到另一个数据库支持的应用程序(带有 MS SQL 的 ASP)。

问题是有时此数据存储在接收数据库中时没有任何空格。例如:在 Joomla 网站上收集的地址在数据库中存储为“123 example road”,但在接收数据库中它存储为“123exampleroad”。这种情况并不总是发生 - 所以我对可能的原因感到困惑。

有人遇到过这样的问题吗?如有任何帮助,我们将不胜感激。

cURL 代码如下所示:

//create array of data to be posted

foreach( $registrationfields as $field ) {

if( $field->name == 'email') $field->name = 'user_email';

if( $field->name == 'delimiter_sendregistration') continue;

if( $field->type == 'captcha') continue;

if( $field->type == 'delimiter') continue;



switch($field->name) {

case 'country':

require_once(CLASSPATH.'ps_country.php');

$country = new ps_country();

$dbc = $country->get_country_by_code($dbbt->f($field->name));

if( $dbc !== false ) $val = $dbc->f('country_name');

break;

default:

$val = $dbbt->f($field->name);

break;

}



$post_data[$field->name] = $val;



}

$post_data['order_id'] = $order_id;

$post_data['order_date'] = $order_date;

$post_data['order_status'] = $order_status;



$post_data['username'] = $username;



//traverse array and prepare data for posting (key1=value1)

foreach ( $post_data as $key => $value) {

$post_items[] = $key . '=' . $value;

}



//create the final string to be posted using implode()

$post_string = implode ('&', $post_items);



//create cURL connection

$curl_connection =

curl_init('http://--url-here');



//set options

curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);

curl_setopt($curl_connection, CURLOPT_USERAGENT,

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);



//set data to be posted

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);



//perform our request

$result = curl_exec($curl_connection);



//show information regarding the request

print_r(curl_getinfo($curl_connection));

echo curl_errno($curl_connection) . '-' .

curl_error($curl_connection);



//close the connection

curl_close($curl_connection);

最佳答案

尝试使用 base64 发送编码为一个参数的数据。不要使用 native php 函数,因为它们可能会输出斜杠等特殊字符。使用 this post 第一个答案中列出的函数.

我认为问题在于 curl 如何编码空格 (%20) 以及目标脚本如何读取它们。

示例(使用链接中的函数):

...
$post_string = implode ('&', $post_items);

$post_string = myBase64_encode($post_string);
...

关于php - cURL 后存储的数据没有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221143/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com