这是需要发生的事情:
我需要从 MySql 数据库中获取用户信息。
但我不想在 php 文件中插入我的数据库的密码。 因为该文件不会托管在我自己的服务器上。当他们通过 ftp 访问服务器并编辑 php 文件时,没有人必须看到该密码。
我的第一个不起作用的解决方案是从我自己的主机打开一个 php 文件并读取输出(我制作了一个连接到数据库并输出长字符串的脚本)并通过拆分将输出转换为数组值。 由于 php 中的安全原因,这不起作用。
我无法为具有只读访问权限的数据库创建额外的帐户,因为我的主机不允许。 (hostinger.co.uk)
我还考虑过使用 iFrame 并将文件加载到我的主机上。并使用 javascript 阅读它。但同样,安全性不允许我对其进行编辑。
有人知道解决这个问题的方法吗?
最佳答案
选项 1:
因为你想确保你的好友服务器无法访问 MySQL 服务器信息(用户名、密码等),你最安全的选择是从你的服务器连接到数据库,并且只在两个服务器之间通信需要检索什么。
正如 Darren 在评论中提到的,API 可以很好地完成这项工作。由于有很多开源库可以完成这项工作,我会向您推荐一个:pheanstalk
pheanstalk 是一个在 beanstalk 库之上工作的 php 客户端,它基本上是一个队列。
您可以在每台服务器上设置一个队列,并配置在两台服务器之间进行通信。然后,您将让 worker.php 脚本每秒(或 10 秒或您喜欢的任何频率)运行一次,以查找从 1 个服务器发送的命令,接收这些命令,处理它们,然后发回信息到主计算机。
选项 2:
代替访问您的数据库,您可以创建您自己的副本,并让他的服务器包含一个副本。
选项2的要点:
如果他的服务器不能承载完整的 MySQL 数据库,可以使用 MySQLi,它非常相似,但唯一的区别是它基本上是一个保存在服务器中的文件。这就是它的好处,因为它是 LIGHT(因此来自 MySQLi 的“i”)。缺点是数据库没有那么“强大”,一些操作可能会受到限制,虽然这是可以预料的,但仍然很好。
不过,如果您的 friend 有数据库,那就更好了,因为它将具备所有功能。
现在,由于我假设您需要使他们的数据库副本保持最新,因此您可以创建一个函数,向您的伙伴服务器发送有关更新内容的请求。这是一个 API,因为它是后台进程之间的相互通信,但可能不需要任何其他 API 可能需要的根访问权限。
虽然这里的麻烦是你每次进行任何更新时都必须调用该函数...... :(
已编辑:
选项 3
在评论中与 OP 交谈了一下后,出现了另一种可能性。在他的特定情况下,他可能愿意在公共(public)目录中提供一个文件供他的伙伴用户阅读。例如,假设他的文件位于:
http://www.example.com/hiddenfiles/dfjios4wr238#@.txt
要访问该文件中的内容,您必须知道名称(并且该名称是专门设计用作密码的,因此即使该信息对 OP 的具体情况不敏感,它始终是最佳实践保持一致并认为安全 xD)。
要访问该文件,可以执行以下操作:
$path = 'http://www.example.com/hiddenfiles/dfjios4wr238#@.txt';
$fileHandle = fopen($path, "r");
while ($line = fgets($fileHandle))
{
echo "--> {$line}";
}
fclose();
关于javascript - 通过在另一台主机上打开 php 文件从 mysql 数据库中获取值(数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37403140/