使用 Joomla 网络服务(API) - 第 3 部分
[本文是系列文章的一部分]
5. 如何自动运行任何脚本
鉴于我们的脚本与 Joomla 独立
- 我们可以把它们放在我们自己的网站上
- 或者甚至放在另一个服务器上(如果我们信任它的所有者当然,因为能够看到 Token 就意味着是超级用户)
启动任何脚本都可以简单地通过
- 在浏览器中打开相应的 URL 实现
- 直接打开
- 例如,通过后端的一个漂亮的按钮
- 在代码(PHP 或其他)中调用此 URL
- 通过设置调用此 URL 的 Cron 作业
- 通过您的托管商提供的工具(免费)
- 通过提供在线工具提供 cron 任务的在线工具(通常是付费的)
- 在 Joomla 中设置任务计划程序
所以显然这意味着您可以在任何时间间隔自动执行创建/更新您的 Joomla 文章。
5.1. 示例 1:通过后端的一个漂亮的按钮
在 Joomla 4 中,在后台创建自定义 HTML 模块变得比以前更容易。
利用此功能为您的用户创建一个漂亮的界面。
5.2. 示例 2:通过 Joomla 任务计划程序
任务计划程序是 Joomla 4 中引入的新功能。
- 转到系统 > 计划任务
- 单击新建按钮
- 创建类型为“GET 请求”的任务
- 配置它(为“请求 URL”输入绝对链接。例如:https://www.MYDOMAINNAME.com/api-blabla.php)
6. 成为唯一可以运行您的脚本的人
如果有人知道您有一个名为例如 api-test.php
的脚本,这个人可能会用对该 URL 的请求淹没您的网站。
在Apache服务器上,避免这种情况的一个典型方法是创建一个.htpsswd文件,这意味着您需要
- 在您的.htaccess文件中添加几行
- 添加一个.htpsswd文件,您的.htaccess中的行将引用该文件的正确路径(例如
/YOUR_PATH/public_html/.htpasswd
)
当启用.htpsswd后,在访问之前会弹出一个提示框要求输入定义的用户名和密码。
通常您可以通过以下方式
- 使用您的托管工具生成这样的.htaccess规则
- 或使用在线生成器(例如 https://hostingcanada.org/htpasswd-generator)
但我们需要更具体,因为
- 我们只想阻止我们的脚本,而不是整个网站。
- 我们只想在浏览器中启动我们的脚本时阻止它们,而不是它们由网站本身启动时
- 无论是通过某种代码
- 还是通过任务计划程序
让我们首先展示这样一个.htaccess规则的优秀示例
<FilesMatch "^api*">
AuthType Basic
AuthBasicProvider file
AuthUserFile /YOUR_PATH/public_html/.htpasswd
AuthName secure
<RequireAny>
Require valid-user
Require ip 127.0.0.1 185.221.181.208
</RequireAny>
</FilesMatch>
7. 如有必要,更改API令牌
如果您有任何理由认为您的API密钥不再私密(例如我分享了这个演示之后),那么只需编辑相关的用户,转到Joomla API令牌选项卡并点击重置
- 旧的令牌被撤销
- 将显示一个新的密钥,您现在可以将其粘贴到所有脚本中
如果调用具有错误或已撤销令牌的脚本,则将显示以下错误消息:“禁止”
7.1. 我们如何将规则限制在我们的脚本上
假设我所有的脚本文件名都以 api
开头。
那么我只想让这个.htpsswd提示框要求输入以 api
开头的文件。
这就是为什么在下面的.htaccess代码片段中我们有 <FilesMatch "^api*">
7.2. 我们如何允许由网站本身启动的脚本
查看以下行 Require ip 127.0.0.1 185.221.181.208
- 127.0.0.1对应于本地主机。在某些情况下,这已经足够
- 然而,在我的情况下,当用Joomla的任务计划程序启动我的脚本时,我的脚本被阻止了:我还必须明确允许我的服务器的IP地址
- 问:我是如何找到我的服务器IP地址的?
- 答:只需使用任何在线工具检查域名“记录”中提供的IP地址即可,例如 https://www.ns-lookup.io/
7.3. 更多信息
有关此类.htaccess规则更多信息,请参阅 https://httpd.apache.ac.cn/docs/2.4/upgrading.html
一些发表在Joomla社区杂志上的文章代表了作者对特定主题的个人意见或经验,可能与Joomla项目的官方立场不一致
通过接受,您将访问https://magazine.joomla.net.cn/之外第三方提供的服务
评论