遇到 PHP 错误“已定义未定义的变量”,但仍然无法正常工作


A PHP Error was encountered "undefined variable already defined" but still not working

>我收到一个错误:

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: controllers/c_verifylogin.php
Line Number: 17

这是有错误的文件名:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class C_verifyLogin extends CI_Controller {
    function __construct() {
        parent::__construct();
        //load session and connect to database
        $this->load->model('m_login','login',TRUE);
        $this->load->helper(array('form', 'url','html'));
        $this->load->library(array('form_validation','session'));
    }
    function index() {
        $this->form_validation->set_rules('studentid', 'studentid', 'trim|required|xss_clean');
        $this->form_validation->set_rules('password', 'password', 'trim|required|xss_clean|callback_check_database');
        if($this->form_validation->run() == FALSE) {
            $this->load->view('v_login');
            } else {
                //Go to private area
                redirect(base_url('c_home'), 'refresh');
            }       
     }
     function check_database($password) {
         //Field validation succeeded.  Validate against database
         $studentid = $this->input->post('studentid');
         //query the database
         $result = $this->login->login($studentid, $password);
         if($result) {
             $sess_array = array();
             foreach($result as $row) {
                 //create the session
                 $sess_array = array('studentid' => $row->studentid);
                 //set session with value from database
                 $this->session->set_userdata('logged_in', $sess_array);
                 }
          return TRUE;
          } else {
              //if form validate false
              $this->form_validation->set_message('check_database', 'Invalid username or password');
              return FALSE;
          }
      }
}
/* End of file c_verifylogin.php */
/* Location: ./application/controllers/c_verifylogin.php */

这是传递数据的视图

<!DOCTYPE html>
<html>
 <head>
   <title>Simple Login with CodeIgniter</title>
 </head>
 <body>
   <h1>Simple Login with CodeIgniter</h1>
   <?php echo validation_errors(); ?>
   <?php echo form_open('c_verifylogin/index'); 
   echo form_label("StudentID: ");
   echo form_input("studentid");
   echo br();
   echo form_label("Password: ");
   echo form_password("password");
   echo br();
   echo form_submit("","Login");
   echo form_close();
   ?>
 </body>
</html>

我已经搜索了几个小时的问题,但我仍然不知道它有什么问题。有人可以帮忙吗?

在你的代码中清楚地表明你没有定义$data变量。
所以你有 2 个选项,要么$data定义为数组,例如

$data = array(); 

或者只是加载视图而不传递任何变量,例如

$this->load->view('v_login');

我希望它能帮助你。

这里

没有定义$data变量。用一些值定义它,如果你想传递它,否则不要传递$data查看呼叫...

    if($this->form_validation->run() == FALSE) {
        $this->load->view('v_login',$data);
        } else {
            //Go to private area
            redirect(base_url('c_home'), 'refresh');
        }       
 }
要么

你必须定义$data

 $data = array('something');
 $this->load->view('v_login',$data);

删除$data

$this->load->view('v_login');