Сделать вызов form_validation закрытым - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть CodeIgniter Captcha, который я проверяю, используя проверку формы Codeigniter и функцию обратного вызова для правил.Ниже приведены два метода внутри моего регистра Controller:

 public function index(){   
    $this->form_validation->set_rules('user_name' , 'Username' , 'trim|required|max_length[32]'); 
    $this->form_validation->set_rules('captcha' , 'Captcha' , 'trim|required|max_length[32]|callback_check_captcha');
    $this->form_validation->set_rules('password', 'Password','trim|required|min_length[5]|max_length[12]');
    $this->form_validation->set_rules('confirm_password', 'Confirm Password','trim|required|min_length[5]|max_length[12]|matches[password]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
    if ($this->form_validation->run()==FALSE){
    //Captcha code 

Обратный вызов:

   private function check_captcha($captcha_input){
    // First, delete old captchas
    $expiration = time() - 7200; // Two hour limit
    $this->db->where('captcha_time < ', $expiration)
            ->delete('captcha');

    // Then see if a captcha exists:
    $sql = 'SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?';
    $binds = array($captcha_input, $this->input->ip_address(), $expiration);
    $query = $this->db->query($sql, $binds);
    $row = $query->row();
    if ($row->count == 0){
        $this->form_validation->set_message('check_captcha', 'Captcha Fail');
        return FALSE;
    }else {
        return TRUE;
    }

}

Проблема в том, что пользователи смогут получить доступ к функции обратного вызова, используя url (http://[::1]/ci/register/check_captcha). Тем не менее, в этом случае ничего существенного не происходит, но Я хотел бы научиться предотвращать это, тем не менее . Как правило, в CI я делаю функции приватными, которые не разрешают пользователям доступ к URl. Если я пытаюсьделая функцию check_captcha частной, я получаю

Сообщение: вызов частного метода Register :: check_captcha () из контекста 'CI_Form_validation

Я понимаю, что form_validation вызывает обратный вызов извнекласс регистра. Может кто-нибудь сказать мне, как ограничить доступ URl к контроллеру в этом случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...