gpt4 book ai didi

php - 如何通过 cURL 发布数组字段数据?

转载 作者:行者123 更新时间:2023-12-04 18:07:56 26 4
gpt4 key购买 nike

我需要以以下形式提交 POST 数据:

first_name=Joe&last_name=Jones&fruit[]=Apple&fruit[]=Orange&fruit[]=Banana

但是,使用下面的代码,我将数据发布为:

first_name=Joe&last_name=Jones&fruit[]=Array

如何更改 cURL 脚本以提交上面第一个示例中所示的数据?

这是当前代码:

<?php
// Setup empty fields
$first_name = $last_name = $fruit = "";

// Session
session_start();
session_register('first_name');
session_register('last_name');
session_register('fruit');
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['fruit'] = $fruit;

// Redirect valid form to process
if($valid)
//set POST variables
{ $url = 'http://example.com/submit.php';
$fields = array( //your parameters here
'first_name' => $first_name,
'last_name' => $last_name,
'fruit[]' => $fruit
);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));

//execute post
$result = curl_exec($ch);

if(curl_errno($ch)) {
print 'CURL Error: '.curl_error($ch);
}

echo http_build_query($fields);

//close connection
curl_close($ch);

}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<div>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" name="submit_data" method="POST" id="submit_data">

<p><label for="first_name">First Name</label><input type="text" id="first_name" size="20" maxlength="120" name="first_name" /></p>
<p><label for="last_name">Surname</label><input type="text" id="last_name" size="20" maxlength="120" name="last_name" /></p>
<p><label for="fruit">Pick some fruit</label>
<select id="fruit" name="fruit" multiple="multiple">
<option value="Apple">Apple</option>
<option value="Orange">Orange</option>
<option value="Pear">Pear</option>
<option value="Banana">Banana</option>
</select></p>

<input type="submit" value="Submit" />
</form>
</div>
</body>
</html>

感谢您的帮助。

* 编辑以使用 HTTP_BUILD_QUERY *

这是新代码:

<?php
// Setup empty fields
$first_name = $last_name = $fruit = "";

// Session
session_start();
session_register('first_name');
session_register('last_name');
session_register('fruit');
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['fruit'] = $fruit;

// Redirect valid form to process
if($valid)
//set POST variables
{ $url = 'http://example.com/submit.php';
$fields = array( //your parameters here
'first_name' => $first_name,
'last_name' => $last_name,
'fruit[]' => $fruit
);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));

//execute post
$result = curl_exec($ch);

if(curl_errno($ch)) {
print 'CURL Error: '.curl_error($ch);
}

echo http_build_query($fields);

//close connection
curl_close($ch);

}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<div>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" name="submit_data" method="POST" id="submit_data">

<p><label for="first_name">First Name</label><input type="text" id="first_name" size="20" maxlength="120" name="first_name" /></p>
<p><label for="last_name">Surname</label><input type="text" id="last_name" size="20" maxlength="120" name="last_name" /></p>
<p><label for="fruit">Pick some fruit</label>
<select id="fruit" name="fruit" multiple="multiple">
<option value="Apple">Apple</option>
<option value="Orange">Orange</option>
<option value="Pear">Pear</option>
<option value="Banana">Banana</option>
</select></p>

<input type="submit" value="Submit" />
</form>
</div>
</body>
</html>

启用打印选项后,返回的字符串格式如下:

first_name=Joe&last_name=Jones&fruit%5B%5D=

所以 2 个问题:

1)水果数组未提交2) 方括号格式需要保留,但用%5B%5D代替

我需要的格式是:

    first_name=Joe&last_name=Jones&fruit[]=Apple&fruit[]=Orange

关于我做错了什么有什么想法吗?谢谢

最佳答案

使用http_build_query() :

$readyToPost = http_build_query($_SESSION);

curl_setopt($ch, CURLOPT_POSTFIELDS, $readyToPost);

关于php - 如何通过 cURL 发布数组字段数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22227510/

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