将txt文件从A域发送到B域并运行

时间:2017-06-22 03:41:53

标签: php json curl cross-domain

我是初级PHP开发人员,有一年的经验。

这是我第一次请求帮助

如果有任何不合适的地方,请告诉我,非常感谢。

情况:

1.我们有两个不同的地方(域A,域B)

2.更新域A上的sql时,也保存一个JSON类型的txt文件。(json.txt)

3.然后“发送”此域文件中的txt文件到域B

4.读取并解码域B上的txt文件,然后用于更新sql

问题:

情况3中的“发送”是需要帮助的问题。

在这种情况下可以使用哪种方法?

以下是代码中的整个过程:

Domain A = "c://example"
Domain B = "220.xxx.xx"
testing file = "sending.txt"

DomainA中

<?php
// this code is on Domain A

include_once "lib/database.php";
$pdo = DB_CONNECT();
$file = "sending.txt";
$f = fopen($file, 'w');

// select data from sql, update and put in array, then save it into txt

$sql = "SELECT id,lastupdated FROM customer";
$pdo -> query($sql);
$rs = $pdo -> query($sql);
foreach ($rs as $key => $row) {
$array[$key]=[
"id" => $row["id"],
"lastupdated" => $row["lastupdated"],
  ];
$sql = "INSERT INTO customer_test (customer_id,lastupdated) VALUES 
(".$row["id"].",'".$row["lastupdated"]."')";
$pdo -> query($sql);
}
$array_json = json_encode($array);
fwrite($f, $array_json);
fclose($f);
?>

Json txt I svaed

[{"id":"1","lastupdated":"2017-03-01 13:55:17"},
{"id":"2","lastupdated":"2017-01-08 17:03:39"},
{"id":"3","lastupdated":"2017-02-07 09:34:29"}]

域B

<?php
include_once "lib/database.php";
$pdo = DB_CONNECT();

// get from local txt which has been sent to here From other Domain;

$json_data = file_get_contents('sending.txt');
$array = json_decode($json_data, true);

//then save into same database,but this one is on Domain B.

foreach ($array as $i => $row) {
$id = $array[$i]["id"];
$lastupdated = $array[$i]["lastupdated"];
$sql = "INSERT INTO customer_test (customer_id,lastupdated) VALUES 
(".$id.",'".$lastupdated."')";
$pdo -> query($sql);
}
?>

我应该在这两个php文件中添加什么代码?

我的老板只给我这个链接: How to simulate browser form POST method using PHP/cURL

但我仍然没有任何想法。

甚至不知道在哪里添加我的代码进行测试。

如果您有这个问题,请查看。

非常感谢。

1 个答案:

答案 0 :(得分:0)

将其添加到域A的底部。这将生成php curl库的发布请求。你需要安装它,它可能是。 http://php.net/manual/en/book.curl.php

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "object_tracker.h"
#include "test_file.h"

struct Object_Tracker* object_tracker; //Global scope variable

int main(int argc, char* argv[]) {

        object_tracker = Object_Tracker_Create(); //Assign value for the variable
        struct Test* test = Test_Create();
        Test_Destroy(test);
        printf("heello\n");

}

通过将其放在域B上来检查域A中的数据:

        if (sortExpression.IndexOf("companyCode", StringComparison.OrdinalIgnoreCase) >= 0)
        {
            sortExpression += ", costCenter, acc_code";
        }
        if (sortExpression.IndexOf("costCenter", StringComparison.OrdinalIgnoreCase) >= 0)
        {
            sortExpression += ", companyCode, acc_code";
        }
        if (sortExpression.IndexOf("acc_code", StringComparison.OrdinalIgnoreCase) >= 0)
        {
            sortExpression += ", companyCode, costCenter";
        }
        {
            //default, everything else.
        }

此外,打开元素检查器上的网络选项卡,以更好地了解正在进行的操作。

$ch = curl_init('http://220.xxx.xx');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $array_json);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($array_json))                                                                       
);  

它可能会反过来。域A不发送文本...域B从域A检索文本。

来自php.net的示例:http://php.net/manual/en/curl.examples.php

var_dump($_RESPONSE);exit;