0

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

4

3 回答 3

2

最简单的答案:

  • 在站点 A 上设置表单。

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

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

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

于 2012-08-07T13:37:59.597 回答
2

有3个主要解决方案:

1.远程操作

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

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

并且myphpscript.php像在本地主机中一样简单地处理表单。

2.代理操作(需要启用allow_url_fopen指令)

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

<form method="post" action="proxy.php"></form>

代理.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');

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

于 2012-08-07T13:45:06.003 回答
0

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

在 /etc/mysql/my.cnf 中的 DB 服务器注释 'bind-address = 127.0.0.1' 上并重新启动 Mysql 守护程序。

在网络服务器上,执行:

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

只需将您的数据插入数据库。

于 2012-08-07T13:53:22.723 回答