Php 如何将数据从一个站点保存到另一个站点数据库?

Php 如何将数据从一个站点保存到另一个站点数据库?,php,html,Php,Html,如何将数据从一个站点保存到另一个站点数据库?我需要制作一个表单,将数据保存到外部数据库。我尝试使用fopen,但我认为这不是正确的方法: $externalsave = fopen('http://onewebsite.com/folder/this_page_INSERTS_INTO_DB.php?datavalue1='.$data1.'&datavalue2='.$data2, 'r'); $data = ''; while(!feof($externalsave)) $d

如何将数据从一个站点保存到另一个站点数据库?我需要制作一个表单,将数据保存到外部数据库。我尝试使用
fopen
,但我认为这不是正确的方法:

$externalsave = fopen('http://onewebsite.com/folder/this_page_INSERTS_INTO_DB.php?datavalue1='.$data1.'&datavalue2='.$data2, 'r');
$data = '';
while(!feof($externalsave)) 
   $data .= fread($externalsave, 4092); 
fclose($externalsave); 

echo $data;
有人知道我如何将表单中插入的值保存到一个网站的外部数据库中吗

我使用的是Apache服务器,上面的代码运行良好,我只是不信任它。或者我可以吗?

最简单的答案:

  • 在站点a上设置表单

  • 将表单操作指向站点B上的脚本

  • 让站点B验证传入变量并插入

如果您实际上不想在站点a上创建表单,也可以使用。最简单的答案是:

  • 在站点a上设置表单

  • 将表单操作指向站点B上的脚本

  • 让站点B验证传入变量并插入


如果您实际上不想在站点a上创建表单,也可以使用。有3种主要解决方案:

1。远程操作

最简单的方法是简单地将表单指向远程服务器。例如:

<form method="post" action="http://myothersite.com/myphpscript.php">
</form>
proxy.php:

$postdata = http_build_query($_POST); //Need some filtering !!!

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);

$context  = stream_context_create($opts);
$result = file_get_contents('http://myotherserver.com/submit.php', false, $context);
这里不需要卷曲;)

3。远程数据库

最后,您可以使用具有远程访问功能的数据库,只需使用其远程主机连接到数据库,如:

$mysqli = new mysqli('mydbHost.com', 'my_user', 'my_password', 'my_db');

不幸的是,这种解决方案很少被允许,因为它可能会带来很大的安全风险(世界上任何人都可以尝试连接到数据库)。

有3种主要解决方案:

1。远程操作

最简单的方法是简单地将表单指向远程服务器。例如:

<form method="post" action="http://myothersite.com/myphpscript.php">
</form>
proxy.php:

$postdata = http_build_query($_POST); //Need some filtering !!!

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);

$context  = stream_context_create($opts);
$result = file_get_contents('http://myotherserver.com/submit.php', false, $context);
这里不需要卷曲;)

3。远程数据库

最后,您可以使用具有远程访问功能的数据库,只需使用其远程主机连接到数据库,如:

$mysqli = new mysqli('mydbHost.com', 'my_user', 'my_password', 'my_db');
不幸的是,这种解决方案很少被允许,因为它可能会带来很大的安全风险(世界上任何人都可以尝试连接到数据库)。

您应该设置mysql(我假设您的数据库是mysql)来侦听网络连接并直接连接到它

在DB服务器上,在/etc/mysql/my.cnf中注释“bind address=127.0.0.1”,然后重新启动mysql守护进程

在web服务器上,执行以下操作:

$dbconnection = mysql_connect('IP_OF_DB_SERVER', 'username', 'userpassword');
只需在数据库中插入数据。

您应该设置mysql(我假设您的数据库是mysql)以侦听网络连接并直接连接到它

在DB服务器上,在/etc/mysql/my.cnf中注释“bind address=127.0.0.1”,然后重新启动mysql守护进程

在web服务器上,执行以下操作:

$dbconnection = mysql_connect('IP_OF_DB_SERVER', 'username', 'userpassword');

只需在数据库中插入数据。

是否从一个数据库保存到另一个数据库?或者您只是试图从另一个网站写入远程数据库。是您最好的朋友。您的代码看起来应该可以工作(或者您可以使用
file\u get\u contents
简化)但是外部URL获取可能会被禁用-一些共享PHP主机不允许。同样,您可以尝试从一个web服务器连接到另一个web服务器上的数据库服务器-尽管这取决于防火墙的设置方式,因为这通常是不允许的。(您应该养成在问题中描述服务器环境的习惯,这样人们可以更容易地帮助您-共享/dedi?OS?)。您是否从一个数据库保存到另一个数据库?或者您只是试图从另一个网站写入远程数据库。是您最好的朋友。您的代码看起来应该可以工作(或者您可以使用
file\u get\u contents
简化)但是外部URL获取可能会被禁用-一些共享PHP主机不允许。同样,您可以尝试从一个web服务器连接到另一个web服务器上的数据库服务器-尽管这取决于防火墙的设置方式,因为这通常是不允许的。(你应该养成在问题中描述服务器环境的习惯,这样人们可以更容易地帮助你-共享/dedi?OS?)。如果有CSRF保护,比如令牌,该怎么办?我不熟悉cURL,你能举个例子说明我如何做到这一点吗?如果有CSRF保护,比如令牌,该怎么办?我不熟悉cURL,你能举一个例子说明我是如何做到这一点的吗?编辑你的答案时请小心-你删除了我的一些调整(你会把它们合并回去吗?)。对不起,我的错,在重写我大部分答案之前没有看到你的编辑。我使用了第二种方法“代理操作”。谢谢编辑答案时请小心-你删除了我的一些调整(你会将它们重新合并吗?)。对不起,我的错,在重写我答案的大部分之前,没有看到你的编辑。这太有效了,我使用了第二种方法“代理操作”。谢谢