Codeigniter is_cli_request() 停止 cpanel cron 作业的工作

2023-12-01

在我的网站上,我在 cpanel 上使用 cron 作业。

我在控制器的构造区域中有下面的代码,但它阻止了 cpanel cron 作业的工作。

if (!$this->input->is_cli_request()) {
    show_error('Direct access is not allowed');
}

Question我需要上面的代码吗?如果我使用我的 cpanel cron 作业?我只是想让它更安全。

<?php

class Cron extends CI_Controller {

    public function __construct() {
        parent::__construct();
        if (!$this->input->is_cli_request()) {
            show_error('Direct access is not allowed');
        }

        $this->load->library('email');
        $this->load->model('members_model');
    }

    public function message()
    {
        $admin_email = $this->config->item('email_host');
        $admin_email_pass = $this->config->item('email_password');
        $companyname = 'Riwaka';

        $config = array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://mail.yourdomain.co.nz',
            'smtp_port' => 465,
            'smtp_user' => $admin_email,
            'smtp_pass' => $admin_email_pass,
            'mailtype'  => 'html', 
            'charset'   => 'iso-8859-1'
        );

        $this->email->initialize($config);

        $members = $this->members_model->get_approved_members_for_cron_job();

        if ($members) {

            foreach ($members as $member) {

                if ($member['approved'] == '1' && $member['approved_email_sent'] == '0')
                {

                    $this->email->set_newline("\r\n");

                    $this->email->clear();

                    $this->email->from($admin_email, 'Admin');

                    $this->email->to($member['email']);

                    $this->email->subject($companyname .' Account Approved');

                    $this->email->message('test');

                    $update = array(
                        'approved_email_sent' => '1',
                    );

                    $this->members_model->update_approve_email_send($member['email'], $update);

                    $this->email->send();

                }
            }
        }
    }
}

要阻止从网页直接访问:

你需要添加这一行

/* deny direct call from web browser */
if (isset($_SERVER['REMOTE_ADDR'])) die('Permission denied.');

使用 CI 3.0,您可以

使您的 cron 作业无法通过 URL 加载 检查返回值is_cli().

is_cli()如果应用程序通过命令行运行,则返回 TRUE,否则返回 FALSE。

根据我的评论,cpanel cron 作业模式是:

/usr/bin/php /var/www/website/public_html/cli.php 控制器方法

,

请参阅文档here

related post

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Codeigniter is_cli_request() 停止 cpanel cron 作业的工作 的相关文章

  • 在 Pyrocms 中管理登录重定向

    我需要以这样的方式管理登录 以便在成功登录后将控件重定向到调用pyrocms 中的登录方法的页面 默认情况下 它将控制权返回到主页 例如 我想要进入图库页面 但它要求用户登录 因此它将控件重定向到登录页面 现在我想在用户成功登录后将控件重定
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • Codeigniter - CMS 的最佳路由配置?

    我想在 Codeigniter 中创建一个自定义 CMS 并且我需要一种将常规页面路由到默认控制器的机制 例如 mydomain com about mydomain com services maintenance 这些将通过我的页面处理
  • 将 csv 上传到 Codeigniter

    还有其他人在将 csv 文件上传到 Codeigniter 时遇到问题吗 我收到一条非常烦人的消息 不允许您尝试上传的文件类型 错误 即使我已经非常明确地设置了上传类型 这是我的代码 应该是相当标准的东西 function doUpload
  • 如何创建不覆盖其他控制器路由的 Codeigniter 路由?

    我的 Codeigniter 应用程序中有很多控制器 例如 注册 个人资料 主要等 现在我想建立 User 控制器 我想要的是 如果人们访问网址 example com signup 我想使用默认路由到 Signup 控制器 如果人们访问网
  • CodeIgniter 数据库连接未关闭

    我在 CodeIgniter 中建立了一个社交社区网站 该网站现在获得了相当多的流量 托管公司已经开始抱怨并说数据库正在接收空连接以及未关闭的连接 我不完全确定空查询是什么或者最终如何发出空查询 有什么想法吗 我添加了额外的代码以在代码结束
  • 如何将 2 个参数路由到控制器?

    这看起来很基本 但我无法掌握它 我试图向控制器中的方法发送多个参数 如下所示 http localhost ci index php subjects 3 state 这是我尝试过的路由 route subjects num subject
  • Codeigniter 加入多个条件

    我正在使用 Codeigniter Active Records 课程 我想加入我的users与我的桌子clients表 这样我就可以显示用户的 真实 姓名 而不仅仅是他们的 ID 这是什么clients表看起来像 示例 列 a 1 a 2
  • PHP - 获取base64图像字符串解码并保存为jpg(生成空图像)

    嗨 我实际上是通过 ajax 发送一个 base64 图像字符串到一个 php 脚本 该脚本只是解码字符串并将内容保存为 jpg 文件 但结果是一张空图像 这怎么可能 PHP脚本 uploadedPhotos array photo 1 p
  • Codeigniter 滚动分页

    我正在使用 jquery 插件滚动分页在 codeigniter 中 我面临的问题是我的循环不会终止 并且也无法给出准确的结果 这是我的html code div div div class image box style margin l
  • * foreach 里面的 foreach codeigniter 2?

    在 codeigniter 2 1 中 我尝试按类别显示频道 因此 如果我有一个名为 电影 的类别 我应该会看到电影中的频道列表 我尝试使用嵌套的 foreach 循环来完成此任务 但似乎无法使其工作 我的表结构是这样的 但更复杂 我的型号
  • 简单搜索:使用 CodeIgniter 将表单变量传递到 URI

    我的每个页面上都有一个搜索表单 如果我使用表单助手 它默认为 POST 我希望搜索词显示在 URI 中 http example com search KEYWORD 我已经在谷歌上搜索了大约一个小时 但没有结果 我只找到了有关如何进行的文
  • Codeigniter:在 Windows XP 中将错误显示为“无法选择指定的数据库:项目”

    我使用 Windows XP 并使用 EasyPHP 作为服务器 我已将 Codeigniter 与 TankAuth 集成 但是 当我尝试打开我的作业文件夹时 它显示错误 如下所示 Unable to select the specifi
  • Codeigniter URL:如何在 URL 中显示 id 和文章标题

    请看下面的链接结构 http stackoverflow com questions 10672712 voting system like stackoverflow 在上面的链接中10672712我猜是问题 ID 因为如果您检查以下链接
  • 调用未定义的函数 CodeIgniter\locale_set_default() - Xampp

    我正在尝试使用 Xampp 设置 Codeigniter4 但是在调用公共地址时http localhost projectfolder public index php如中所述README mdCodeIgniter4框架的文件中 出现下
  • 如何在 Codeigniter 中将变量从一个控制器传递到另一个控制器

    我刚刚开始学习 Code Igniter 我想知道如何将变量从一个控制器 first cont php 传递到另一个控制器 second cont php 任何帮助 将不胜感激 提前致谢 这将取决于具体情况 如果您想将数据保留一段时间 那么
  • 如何在codeigniter中设置时区?

    我正在使用 codeigniter 从事 php 项目 请告诉我为 php 和 mysql 设置时区的全局方法是什么 我可以在哪个文件中设置它 我想在没有 php ini 和 htaccess 文件的情况下设置它 目前我在每次输入之前都使用
  • 使用 Codeigniter PHP 在我的管理面板中显示 Google Analytics 数据的最佳 API?

    谷歌上有很多这方面的结果 但大多数都已经有一年多了 我只是想在我的管理员中使用 jQuery 显示一些漂亮的图表 其中包括每天的访问次数 访问次数最多的页面以及访问次数等 我不想将访问数据存储在我的数据库中 Google Analytics
  • CodeIgniter 2 的原则 2 没有要处理的元数据类

    我使用 CodeIgniter 2 和原则 2 这是我正在从事的项目 https github com wildlyinaccurate CodeIgniter 2 with Doctrine 2 https github com wild
  • 需要一个代码示例来展示如何使用 Codeigniter 发布到 WordPress

    有人可以分享一个代码示例 展示如何使用 CodeIgniter xml rpc 库向 Wordpress 制作基本博客文章吗 到目前为止 我有这个 尽管我使用了正确的组合 但它总是导致 错误的登录 通行证组合 function doPost

随机推荐