Javascript 通过在其他主机上打开php文件,从mysql数据库中获取值(数组)

Javascript 通过在其他主机上打开php文件,从mysql数据库中获取值(数组),javascript,php,mysql,database,Javascript,Php,Mysql,Database,这是wat需要实现的: 我需要从MySql数据库中获取用户信息 但我不想在php文件中插入数据库的密码。因为该文件不会托管在我自己的服务器上。通过ftp访问服务器并编辑php文件时,任何人都不必看到该密码 我的第一个不起作用的解决方案是从我自己的主机打开一个php文件并读取输出(我制作了一个连接到数据库并输出一个长字符串的脚本),然后通过拆分值将输出转换为数组。 由于php中的安全原因,这不起作用 我无法为具有只读访问权限的数据库创建额外帐户,因为我的主机不允许我访问。(hostinger.co

这是wat需要实现的:


我需要从MySql数据库中获取用户信息

但我不想在php文件中插入数据库的密码。因为该文件不会托管在我自己的服务器上。通过ftp访问服务器并编辑php文件时,任何人都不必看到该密码

我的第一个不起作用的解决方案是从我自己的主机打开一个php文件并读取输出(我制作了一个连接到数据库并输出一个长字符串的脚本),然后通过拆分值将输出转换为数组。 由于php中的安全原因,这不起作用

我无法为具有只读访问权限的数据库创建额外帐户,因为我的主机不允许我访问。(hostinger.co.uk)

我还考虑使用iFrame并将文件加载到主机上。并使用javascript读取它。但是,安全部门不允许我编辑它


有人知道解决这个问题的方法吗?

选项1:

由于您希望确保您的buddies服务器没有访问MySQL服务器信息(用户名、密码等)的权限,因此最安全的方法是从服务器连接到数据库,并在两台服务器之间通信需要检索的内容

正如Darren在评论中提到的,API可以很好地做到这一点。因为有很多开源库可以完成这项工作,我向您推荐一个:pheanstalk

pheanstalk是一个php客户端,它在beanstalk库之上工作,beanstalk库基本上是一个队列

您可以在每台服务器上设置一个队列,并将通信配置为在两台服务器之间进行。然后让worker.php脚本每秒运行一次(或10秒,或您喜欢的频率),查找从1台服务器发送的命令,接收这些命令,处理它们,并将信息发送回主计算机

选项2:

您可以创建数据库的副本,并让他的服务器包含一个副本,而不是访问数据库

选项2的要点:

如果他的服务器不能承载完整的MySQL数据库,那么就有MySQLi,它非常类似,但唯一的区别是它基本上是一个保存在服务器中的文件。这就是好处,因为它是(因此来自MySQLi的“i”)。缺点是数据库没有“强大”,有些操作可能会受到限制,尽管这是意料之中的,但仍然很好

但是,如果你的朋友有一个数据库,那就更好了,因为它将拥有所有的功能

现在,由于我假设您需要保持数据库副本的最新状态,您可以创建一个函数,将更新的内容发送到buddies服务器。这是一个API,因为它是后台进程之间的交互,但可能不需要任何根访问,因为其他API可能需要

虽然这里的关键是每次进行更新时都必须调用该函数…:(


编辑:

选项3

在评论中与OP讨论了一下之后,又出现了另一种可能性。在他的特殊情况下,他可能愿意在公共目录中有一个文件供他的好友用户阅读。例如,假设他的文件位于:

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();

选项1:

由于您希望确保您的buddies服务器没有访问MySQL服务器信息(用户名、密码等)的权限,因此最安全的方法是从服务器连接到数据库,并在两台服务器之间通信需要检索的内容

正如Darren在评论中提到的,API可以很好地完成这项工作。因为有很多开源库可以完成这项工作,我将向您推荐一个:pheanstalk

pheanstalk是一个php客户端,它在beanstalk库之上工作,beanstalk库基本上是一个队列

您可以在每台服务器上设置一个队列,并将通信配置为在这两台服务器之间进行。然后,您将每秒(或10秒或您喜欢的频率)运行worker.php脚本查找从1台服务器发送的命令,接收这些命令,对其进行处理,并将信息发送回主计算机

选项2:

您可以创建数据库的副本,并让他的服务器包含一个副本,而不是访问数据库

选项2的要点:

如果他的服务器不能承载一个完整的MySQL数据库,那么就有MySQLi,这与MySQLi非常相似,但唯一的区别是它基本上是一个保存在服务器中的文件。这是一个好处,因为它是(因此来自MySQLi的“i”)。缺点是数据库没有那么“强大”,一些操作可能会受到限制,尽管这是意料之中的,但仍然很好

但是,如果你的朋友有一个数据库,那就更好了,因为它将拥有所有的功能

现在,由于我假设您需要保持数据库副本的最新状态,您可以创建一个函数,将更新的内容发送到buddies服务器。这是一个API,因为它是后台进程之间的交互,但可能不需要像其他API可能需要的那样需要任何根访问

虽然