在php中使用cURL和foreach发送多维数组
我也读到了另一个问题: 我搜索了丢失的钥匙,但没有 我的目标是创建一个包含数组中信息的csv文件。 当我在同一台服务器上处理它时,我能够做到这一点,但是由于环境升级和csv文件的划分,我必须使用第二台服务器,因此需要CURL请求 问题在于,我能够调用在php中使用cURL和foreach发送多维数组,php,curl,post,Php,Curl,Post,我也读到了另一个问题: 我搜索了丢失的钥匙,但没有 我的目标是创建一个包含数组中信息的csv文件。 当我在同一台服务器上处理它时,我能够做到这一点,但是由于环境升级和csv文件的划分,我必须使用第二台服务器,因此需要CURL请求 问题在于,我能够调用receiver.php,而这实际上创建了文件.csv,但该文件是空的(0字节)。 我唯一的日志是下面的 请在php运行后查找以下结果: 数组 ( [0]=>阵列 ( [0]=>名称 [1] =>弗兰克 ) [1] =>阵列 ( [0]=>地址 [
receiver.php
,而这实际上创建了文件.csv,但该文件是空的(0字节)。
我唯一的日志是下面的
请在php运行后查找以下结果:
数组
(
[0]=>阵列
(
[0]=>名称
[1] =>弗兰克
)
[1] =>阵列
(
[0]=>地址
[1] =>无
)
[2] =>阵列
(
[0]=>电子邮件
[1] => some@email
)
[3] =>阵列
(
[0]=>作业
[1] =>无
)
[4] =>阵列
(
[0] =>
)
[5] =>阵列
(
[0]=>选项
[1] =>状态
[2] =>链接
[3] =>时间
[4] =>注
[5] =>检查
)
[6] =>阵列
(
[选项]=>无
[状态]=>激活
[链接]=>http://something
[时间]=>2018-01-11 10:00
[注]=>无
[检查]=>正常
)
)
0的数组键不存在
1的数组键存在
2的数组键存在
3的数组键存在
4的数组键存在
5的数组键存在
数组键存在于6
由于我理解我必须只使用$POST
发送方:
<?php
function post_to_url($url, $data) {
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($post, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($post);
curl_close($post);
}
if (isset($_POST['submit'])){
$name = addslashes(strip_tags($_POST["name"]));
$address = addslashes(strip_tags($_POST["address"]));
$email = addslashes(strip_tags($_POST["email"]));
$job = addslashes(strip_tags($_POST["job"]));
$list = array (
array('name', "$name"),
array('address', "$address"),
array('email', "$email"),
array('job', "$job"),
array(''),
array('options', 'status', 'link','time', 'note','check' )
);
// Merge the 2 arrays together
$final_array = array_merge($list, $_POST['prefs']);
// Send through CURL
post_to_url("http://192.168.10.10/receiver.php", $final_array);
header("Location:index.php");
exit;
}
?>
<?php
$csv = fopen( "/home/user/file.csv", 'w+' );
foreach ($_POST as $fields) {
fputcsv($csv, $fields, ";");
}
fclose($csv);
?>
接收器:
<?php
function post_to_url($url, $data) {
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($post, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($post);
curl_close($post);
}
if (isset($_POST['submit'])){
$name = addslashes(strip_tags($_POST["name"]));
$address = addslashes(strip_tags($_POST["address"]));
$email = addslashes(strip_tags($_POST["email"]));
$job = addslashes(strip_tags($_POST["job"]));
$list = array (
array('name', "$name"),
array('address', "$address"),
array('email', "$email"),
array('job', "$job"),
array(''),
array('options', 'status', 'link','time', 'note','check' )
);
// Merge the 2 arrays together
$final_array = array_merge($list, $_POST['prefs']);
// Send through CURL
post_to_url("http://192.168.10.10/receiver.php", $final_array);
header("Location:index.php");
exit;
}
?>
<?php
$csv = fopen( "/home/user/file.csv", 'w+' );
foreach ($_POST as $fields) {
fputcsv($csv, $fields, ";");
}
fclose($csv);
?>
现在它工作了。多亏了我的理解,我只能使用$POST
发送方:
<?php
function post_to_url($url, $data) {
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($post, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($post);
curl_close($post);
}
if (isset($_POST['submit'])){
$name = addslashes(strip_tags($_POST["name"]));
$address = addslashes(strip_tags($_POST["address"]));
$email = addslashes(strip_tags($_POST["email"]));
$job = addslashes(strip_tags($_POST["job"]));
$list = array (
array('name', "$name"),
array('address', "$address"),
array('email', "$email"),
array('job', "$job"),
array(''),
array('options', 'status', 'link','time', 'note','check' )
);
// Merge the 2 arrays together
$final_array = array_merge($list, $_POST['prefs']);
// Send through CURL
post_to_url("http://192.168.10.10/receiver.php", $final_array);
header("Location:index.php");
exit;
}
?>
<?php
$csv = fopen( "/home/user/file.csv", 'w+' );
foreach ($_POST as $fields) {
fputcsv($csv, $fields, ";");
}
fclose($csv);
?>
接收器:
<?php
function post_to_url($url, $data) {
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($post, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($post);
curl_close($post);
}
if (isset($_POST['submit'])){
$name = addslashes(strip_tags($_POST["name"]));
$address = addslashes(strip_tags($_POST["address"]));
$email = addslashes(strip_tags($_POST["email"]));
$job = addslashes(strip_tags($_POST["job"]));
$list = array (
array('name', "$name"),
array('address', "$address"),
array('email', "$email"),
array('job', "$job"),
array(''),
array('options', 'status', 'link','time', 'note','check' )
);
// Merge the 2 arrays together
$final_array = array_merge($list, $_POST['prefs']);
// Send through CURL
post_to_url("http://192.168.10.10/receiver.php", $final_array);
header("Location:index.php");
exit;
}
?>
<?php
$csv = fopen( "/home/user/file.csv", 'w+' );
foreach ($_POST as $fields) {
fputcsv($csv, $fields, ";");
}
fclose($csv);
?>
现在它可以工作了。fields\u string是字符串类型,您不能在foreach中使用它。它的数组功能为什么不使用
http\u build\u query($final\u array)
?还没试过,我明天会在办公室检查!thanksI使用link:并更新了代码:$array\u final=http\u build\u query\u same\u name($final\u array);curl_setopt($ch,CURLOPT_POSTFIELDS,$array_final)代码>但我没有解决。相同的日志错误。请问您是否有时间提供解决方案?这里我有点困惑curl\u setopt($ch,CURLOPT\u POSTFIELDS,http\u build\u query($final\u array))代码>也以这种方式尝试。。我想知道问题是否出现在接收器中…字段\u string是string类型您不能在foreach中使用它。它的数组功能为什么不使用http\u build\u query($final\u array)
?还没试过,我明天会在办公室检查!thanksI使用link:并更新了代码:$array\u final=http\u build\u query\u same\u name($final\u array);curl_setopt($ch,CURLOPT_POSTFIELDS,$array_final)代码>但我没有解决。相同的日志错误。请问您是否有时间提供解决方案?这里我有点困惑curl\u setopt($ch,CURLOPT\u POSTFIELDS,http\u build\u query($final\u array))代码>也以这种方式尝试。。我想知道问题是否出现在接收器中……如果我也想发送一个$\u GET,那么:函数post\u to\u url($url,$data,$foo)
-curl\u setopt($post,CURLOPT\u url,$url.'?bar='$foo)代码>-发布到url(“http://192.168.10.10/receiver.php“,$final_数组,$foobar)
-和receiver.php:$foo=$\u GET['bar'代码>。Easy我不明白为什么如果这个解决方案完全符合我的需要,就有人否决了这个方案。如果我也想发送一个$GET,那么:函数post\u to\u url($url,$data,$foo)
-curl\u setopt($post,CURLOPT\u url,$url')?bar='$foo)代码>-发布到url(“http://192.168.10.10/receiver.php“,$final_数组,$foobar)
-和receiver.php:$foo=$\u GET['bar'代码>。我不明白,如果这个解决方案完全符合我的需要,为什么会有人否决这个方案。