在php中使用cURL和foreach发送多维数组

在php中使用cURL和foreach发送多维数组,php,curl,post,Php,Curl,Post,我也读到了另一个问题: 我搜索了丢失的钥匙,但没有 我的目标是创建一个包含数组中信息的csv文件。 当我在同一台服务器上处理它时,我能够做到这一点,但是由于环境升级和csv文件的划分,我必须使用第二台服务器,因此需要CURL请求 问题在于,我能够调用receiver.php,而这实际上创建了文件.csv,但该文件是空的(0字节)。 我唯一的日志是下面的 请在php运行后查找以下结果: 数组 ( [0]=>阵列 ( [0]=>名称 [1] =>弗兰克 ) [1] =>阵列 ( [0]=>地址 [

我也读到了另一个问题:

我搜索了丢失的钥匙,但没有

我的目标是创建一个包含数组中信息的csv文件。 当我在同一台服务器上处理它时,我能够做到这一点,但是由于环境升级和csv文件的划分,我必须使用第二台服务器,因此需要CURL请求

问题在于,我能够调用
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'。我不明白,如果这个解决方案完全符合我的需要,为什么会有人否决这个方案。