从本地html / javascript网站插入mySQL数据库

我想做什么

我的程序的目的是将数据从本地 HTML / JS网站插入到在线 (非本地) mySQL数据库中。

到目前为止我的尝试

我试图利用的原始方法是,让我的本地网站利用javascript通过在线PHP文件发布数据,然后让这个PHP文件将此信息插入到mySQL表中。 但我一直收到与原始请求相关的错误。

在以编程方式到达墙后,我打开了一个Stackoverflow线程,以确定是否有可能从本地网站发布到在线PHP文件,在此期间,我被熟练地告知,如果不修改每台机器上的Chrome相关政策,这是不可能的试图访问本地网站。

这个主题的目的

要确定是否通过PHP文件发布以便从本地 HTML / JS网站将数据插入到mySQL表中,如果还有其他方法我没有考虑过。

不修改浏览器策略的推理:

我无法控制在用户浏览器上实施哪些策略或者他们选择使用哪种浏览器。 同样,我无法在他们的系统上安装其他软件,例如Apache等。

整体问题

到目前为止,我尝试从本地 HTML / JS网站发布的方法作为插入mySQL数据库的方法迄今为止都没有成功。 我在这里发布以确定是否还有其他方法我尚未考虑,而不是通过PHP文件发布数据,这可以应用于我的源代码,而不是用户的Web浏览器,以允许执行mySQL查询从本地HTML / JS网站发起?

JS代码:

 function uploadPetData(petName, petAge, petType) { var urlString ="Pet_Name="+petName+"&Pet_Age="+petAge+"&Pet_Type="+petType; $.ajax({ type: 'POST', url: 'http://example.com/test.php', crossDomain: true, data : urlString, contentType:contentType, success: function(responseData, textStatus, jqXHR) { var value = responseData.someKey; } }); } 

PHP代码:

  

如果您打算直接处理db,我建议在每台机器上使用服务器端js作为独立客户端。 浏览器js不是为这种交互而设计的。

如果您决定继续使用浏览器js,则需要使用rest api来实现目标。 您还需要将文件挂载到本地Web服务器(nginx或apache),以便处理客户端js的跨站点问题。 之后,您可以使用简单的ajax或promises或更高级的东西(如RxJs Observables)与您的端点进行交互。

希望能帮助到你。

整体问题

到目前为止,我尝试从本地 HTML / JS网站发布的方法作为插入mySQL数据库的方法迄今为止都没有成功。 我在这里发布以确定是否还有其他方法我尚未考虑,而不是通过PHP文件发布数据,这可以应用于我的源代码,而不是用户的Web浏览器,以允许执行mySQL查询从本地HTML / JS网站发起?

在具有默认设置的浏览器中无法满足此要求; 或者没有允许应用程序访问其OS本地文件系统的用户操作,并进行跨域请求。

您要实现的目标需要某种forms的用户操作

  • 用户使用浏览器设置的特定标志或首选项来浏览浏览器,以允许来自file: protocol的跨源请求;
  • 用户安装浏览器扩展或应用程序,并设置适当的权限以执行跨源请求; 例如chrome.fileSystemProvider ; chrome.syncFileSystem ; PowerShell – 文件系统提供商 ; 另请参阅通过HTTP将数据从浏览器传输到服务器的方法 , jQuery文件上传插件:是否可以保留上传文件夹的结构? ;
  • 用户在浏览器Opera Unite上使用Web服务器; POW – Plain Old Webserver ; 在Firefox OS中嵌入HTTP Web服务器 ; 使用Firefox OS作为Web服务器 ; 使用chrome.socket API构建Web服务器 ; 是否可以在Google Chrome扩展程序中嵌入HTTP服务器? ;
  • 用户安装shell脚本,设置适当的权限以允许shell脚本读取本地文件并使用OS网络工具与服务器通信。

备择方案

  • 调整需求,在在线html document创建

    元素,用户可以执行用户操作上传文件;

  • 使用“ 云存储 ”;
  • 为用户提供有关如何在命令行发出POST请求的充分说明,例如,使用cURL ;
  • 如链接问题的答案中所述,为用户提供指导 – 使用--diable-web-security启动--diable-web-security ,并可能设置--allow-file-access-from-files标志; Internet Explorer,Firefox,Safari和Chrome中的跨源请求(CORS) ; 在Firefox中禁用跨域Web安全性 。

问题是,一旦外部应用程序在用户本地文件系统上具有读写执行权限,该脚本可能存在潜在的安全风险。

如果用户同意允许您的应用程序在其本地文件系统上读取,编写和执行任意脚本的潜在安全风险,则应与云存储解决方案(例如,您撰写的服务)达成一致; 使用和在线

上传文件; 或完全省略浏览器程序并在给定操作系统的命令行执行POST文件的请求。

如上面详细讨论的, HTML / JS网站存储在本地。 它只是在线存储的MySQL数据库。 该项目的目的是,用户将在本地私有HTML / JS网站上做出决定,然后这些决定将反映在在线mySQL数据库中。 这种数据传输将以自动方式发生。 因此,我最初尝试将此信息从JS转发到PHPMySQL 。 因此,出于自动化和隐私的原因,在线放置表格以供用户手动输入数据将是不适用的。

命令行选项最适合“自动化”,例如,使用cron

  • 如何在OS X上设置cron作业以在每天的特定时间运行curl命令?
  • 你如何在Windows上运行Cygwin中的crontab?
  • 使用curl自动执行HTTP作业

有趣的是,您没有提到对应用程序可以访问其文件系统的用户进行身份validation,并且其本地文件存储在远程MySQL数据库中

  • 如何在bash脚本中将(FTP)文件上传到服务器?

  • 设置一个cron,用于每天下午5点通过FTP传输文件

  • 使用bash将文件复制到远程ftp服务器