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