如何将数据从一个站点保存到另一个站点数据库?我需要制作一个将数据保存到外部数据库的表单。我尝试使用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 个主要解决方案:
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');
不幸的是,这种解决方案很少被允许,因为它可能代表很大的安全风险(世界上任何人都可以尝试连接到数据库)。
最简单的答案:
-
在站点 A 上设置表单。
-
将表单操作指向站点 B 上的脚本。
-
让站点 B 验证传入变量并插入。
如果您实际上不想在站点 A 上创建表单,也可以使用 cURL。
将mysql(我想您的数据库是MySQL)设置为侦听网络连接并直接连接到它。
在数据库服务器上注释/etc/mysql/my.cnf 中的"绑定地址 = 127.0.0.1"并重新启动 Mysql 守护进程。
在 Web 服务器上,执行:
$dbconnection = mysql_connect('IP_OF_DB_SERVER', 'username', 'userpassword');
只需将数据插入数据库即可。