PHP发送和接收数据curl或json

时间:2017-09-25 08:07:48

标签: php json curl

我正试图让两个文件互相交谈。 'output_file.php'将域'a'中的数据发送到域'b'上的input_file。 输出文件中的数据稍后将通过api发送到crm。

我被困住,因为我不知道我做错了什么,我应该在这些文件中做些什么改变?

这是output_file.php:

<?php
    //send cURL
    $curl = 'https://domain_name/input.php';
    $fields = array(
        'name' => urlencode($_POST['name']),
        'email' => urlencode($_POST['email']),
        'tel' => urlencode($_POST['tel']),
    );
    //var_dump($fields);
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string, '&');
    //var_dump($fields_string);
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $curl);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    $result = curl_exec($ch);
    //var_dump($result);
    curl_close($ch);*/
?>

这是input_file.php:

 // main data about the person. person_id is added later dynamically - PERSON DATA
$person = array(
 'name' => 'name from output_file.php',
 'email' => 'email from output_file.php',
 'phone' => 'tel from output_file.php'
);

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码段。它应该是工作。 PS。请从输出文件中删除POST功能,它是无法使用的。

$person = array(
 'name' => $_REQUEST['name'],
 'email' => $_REQUEST['email'],
 'phone' => $_REQUEST['phone'],
);

最佳,

答案 1 :(得分:0)

当您使用POST发送数据时,您需要捕获目标站点上的POST。在使用$ _POST变量时,您可能需要查看安全性,以确保收到的数据不会对您造成伤害:

PHP $_GET security, $_POST security best practice

你的Outfile:

${PIPESTATUS[0]}

您的输入/目标文件:

<?php

    $curl = 'https://domain_name/input.php';
    $fields = array(
        'name' => urlencode($_POST['name']),
        'email' => urlencode($_POST['email']),
        'tel' => urlencode($_POST['tel']),
    );

    // here you do prepare your POST data
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string, '&');
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $curl);

    // here you define that your data will be sent via POST
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    // this curlopt ensures the output of your destination is captured
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
?>