如何禁用直接访问回调函数?

Max*_*Max 5 codeigniter codeigniter-2

<? if ( ! defined('BASEPATH')) exit();

    class Registration extends CI_Controller {

        public function __construct() {
            parent::__construct();
            $this->load->model('registration_model');
        }

        public function index() {
            $this->load->library('form_validation');

            $this->form_validation->set_rules('email', 'E-mail', 'trim|required|valid_email|callback_email_available');

            if($this->form_validation->run() == FALSE) {
                $this->load->view('registration');
            } else {
                $this->registration_model->add_user();
            }
        }

        # Check E-mail
        public function email_available($email) {
            $this->db->select('email');
            $this->db->where('email', $email);
            $query = $this->db->get('users');
            $result = $query->row();

            if(!empty($result)) {
                $this->form_validation->set_message('email_available', 'This e-mail belongs to another user.');
                return FALSE;
            } else {
                return TRUE;
            }
        }

    }
    ?>
Run Code Online (Sandbox Code Playgroud)

我有一份表格验证的注册表格.我有一个回调函数来验证电子邮件的唯一性.

所有代码都可以正常工作,但我可以直接访问带有错误的回调函数

examle.com/registration/email_available

A PHP Error was encountered
Severity: Warning
Message: Missing argument 1 for Registration::email_available()
Filename: controllers/registration.php

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: email
Filename: controllers/registration.php
Run Code Online (Sandbox Code Playgroud)

如何拒绝直接访问回调函数?

Kem*_*lah 6

您可以在方法名称前加上_拒绝通过HTTP请求进行访问.

  • 对于那些为了你自己的利益而在夜间编码太晚的人,请确保将调用更改为set_rules()中的回调函数,即callback__function_name(两个下划线).我忘记这样做,并想知道为什么它不起作用,呃! (3认同)