【问题标题】:Communication between local and remote website本地和远程网站之间的通信
【发布时间】:2020-05-19 02:19:51
【问题描述】:

我有一个 php 网站,它必须在树莓派上本地运行。
该网站包含控制硬件设备的命令。

本地 URSL 如下所示:http://localhostname
远程 URL 如下所示:https://www.url.com/project

文件结构(简化)是:
本地树莓派:index.php
远程服务器:login.php 和 database.php

index.php 应该包含 database.php,以便建立数据库连接并处理数据传输。

我有两个问题我不知道如何处理。

  1. 一方面,我不希望数据库 php 文件本地存储在 rapsberry pi 上。这样每个人都可以看到凭据。另一方面,我不能在 index.php 中包含 database.php 文件,因为它是远程的,而 php 不允许这样做。

  2. SESSION 和 COOKIE 处理也是一个问题。登录 (login.php) 过程存储在远程服务器上。一旦用户登录,SESSION 和 COOKIE 信息就会被存储。这些信息对远程服务器 URL ("/") 有效。一旦导航返回到本地 Raspberry Pi,SESSION 和 COOKIE 将不再有效,因为域/主机名发生了变化。这样我就无法检查用户登录是否成功。只要用户没有成功登录,用户就不能访问 index.php。

【问题讨论】:

  • 所以基本上登录是通过远程站点完成的,而功能是在本地处理的?您可以让本地端轮询(或 webhook)登录远程服务器的人。
  • 正确,所以不是使用数据库凭据,而是指使用 Rest(ful) 调用?
  • 数据库在哪里?
  • 您可以包含远程 PHP 文件,但这可能会出现问题。
  • @Daniel,保留数据库凭据。在远方。然后,远程端可以有一个脚本来返回所有登录的用户。本地端可以使用安全的curl 调用来获取这些结果。

标签: php local communication remote-server


【解决方案1】:
  1. 让 index.php POST 凭据(用户名和密码?)作为 login.php 的参数并处理返回的响应。

例如如果登录成功,它会返回我将要访问的会话 以第 2 点为例。如果登录失败,则返回错误。 index.php 然后必须处理返回的会话或 错误。

  1. 您可以生成自定义字符串并将其存储到数据库中以使用会话 ID。通过这种方式,您可以通过存储在 rasberry pi 上的会话 ID 对数据库授权用户。

例如成功登录后,login.php 会生成一个随机字符串, 将其存储到数据库中并将其返回给 index.php,这将 将其保存在 rasberry pi 上以供进一步使用

【讨论】:

  • 在树莓派上存储这个随机字符串的合适方法是什么?该解决方案并不意味着在 pi 上有一个数据库。
  • 如果您希望它受到保护,可能是一个本地会话变量,如果您不关心安全性,则可以将其保存到文本文件中
  • 我目前正在实施这个,我还在苦苦挣扎。对我来说,您的答案的第二个选项最适合。用户输入 login.php(外部 Web 服务器)输入他的凭据,生成随机字符串并存储到外部 Web 服务器数据库。假设一周后用户打开 index.php。 index.php 操作系统本地存储在用户的 rapsberry pi 上(必须如此),现在我如何检查数据库中的 sessid。在 login.php(远程端)时,我无法设置应该在本地树莓派上设置的本地会话变量...
猜你喜欢
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2012-08-08
  • 2016-03-29
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多