javascript - 通过在另一台主机上打开 php 文件从 mysql 数据库中获取值(数组)

标签 javascript php mysql database

这是需要发生的事情:


我需要从 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/

相关文章:

JavaScript 生成器及其原型(prototype)链

javascript - DOM 元素是对象吗?

php - print_r 插入语句 php pdo

php - mysql 查询的输出结果依赖于 MySQL 数组中选定的行

python - 在Pythonanywhere中部署后MySQL连接错误消息

javascript - 跨源资源共享策略拒绝跨源图像加载

javascript - 动态向数据库插入数据

php - 查找两个表中 1 个字段的数据重叠 [MySQL]

mysql - 访问函数外部的类

Javascript 在 href 更改时删除方括号