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

时间:2012-08-07 13:32:53

标签: php html

如何将数据从一个站点保存到另一个站点数据库?我需要创建一个将数据保存到外部数据库的表单。我尝试使用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服务器,上面的代码运行正常,我只是不相信它。或者我可以吗?

3 个答案:

答案 0 :(得分:2)

最简单的答案:

  • 在SITE A上设置表单。

  • 将表单操作指向SITE B上的脚本。

  • 让SITE B验证传入的变量并插入。

如果您实际上不想在SITE A上创建表单,也可以使用cURL

答案 1 :(得分:2)

有三种主要解决方案:

<强> 1。远程操作

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

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

myphpscript.php中,只需像在localhost中一样处理表单。

<强> 2。代理操作(需要启用allow_url_fopen指令)

您还可以将表单指向同一服务器上的php脚本,该服务器将在另一台服务器上发送您的数据。 此解决方案可用于绕过安全性,如csrf令牌:

<form method="post" action="proxy.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');

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

答案 2 :(得分:0)

你应该设置mysql(我想你的数据库是MySQL)来监听网络连接并直接连接到它。

数据库服务器上的

在/etc/mysql/my.cnf中注释'bind-address = 127.0.0.1'并重新启动Mysql守护进程。

在网络服务器上,执行:

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

只需将数据插入数据库即可。