Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正在尝试使用CodeIgniter登录_Php_Codeigniter - Fatal编程技术网

Php 正在尝试使用CodeIgniter登录

Php 正在尝试使用CodeIgniter登录,php,codeigniter,Php,Codeigniter,我正在尝试使用CodeIgniter登录我在一个教程中找到的内容,因为我几乎不知道怎么做 所以我有一个登录模型、视图和控制器以及一个verifylogin控制器。问题是它总是将表单验证为无效登录,我不知道为什么: 登录控制器 <?php if (!defined('BASEPATH')) exit('Acceso no autorizado'); class Login extends CI_Controller { function __construct() {

我正在尝试使用CodeIgniter登录我在一个教程中找到的内容,因为我几乎不知道怎么做

所以我有一个登录模型、视图和控制器以及一个verifylogin控制器。问题是它总是将表单验证为无效登录,我不知道为什么:

登录控制器

<?php if (!defined('BASEPATH')) exit('Acceso no autorizado');

class Login extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $datos = array(
            'home_name' => $this->config->item('home_name'),
            'root_path' => $this->config->item('root_path')
        );

        $this->load->helper('form');

        // Menú principal
        $this->load->view('menu', $datos);

        // TODO: Put your code here...
        $this->load->view('login', $datos);

        // Cierre html
        $this->load->view('cierre', $datos);
    }
}
?>
<?php if (!defined('BASEPATH')) exit('Acceso no autorizado');

class VerifyLogin extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('user', '', TRUE);
    }

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

        $this->form_validation->set_rules('username', 'Usuario', 'trim|required|xss_clean');
        $this->form_validation->set_rules('password', 'Contraseña', 'trim|required|xss_clean|callback_check_database');

        if ($this->form_validation->run() == FALSE)
        {
            /*$datos = array(
                'home_name' => $this->config->item('home_name'),
                'root_path' => $this->config->item('root_path')
            );

            $this->load->helper('form');
            $this->load->view('menu', $datos);
            $this->load->view('login', $datos);
            $this->load->view('cierre', $datos);*/
            echo "error en login"; // IT ALWAYS ENDS UP HERE........
        }
        else
        {   echo "login correcto"; // NEVER HERE
            //redirect('portada', 'refresh');
        }
    }

    function check_database($password)
    {
        $username = $this->input->post('username');

        $result = $this->user->login($username, $password);

        if ($result)
        {
            $sess_array = array();
            foreach($result as $row)
            {
                $sess_array = array(
                    'id' => $row->id,
                    'username' => $row->username
                );
                $this->session->set_userdata('logged_in', $sess_array);
            }
            return true;
        }
        else
        {
            $this->form_validation->set_message('check_database', 'Usuario o contraseña inválidos');
            return false;
        }
    }
}
?>

登录视图

<div id='content-login'>
    <div class='container'>
        <div id='logo' class='login buscadores'>
            <span class='icon icon-lock'></span>
            <h1>Inicia sesión</h1>
            <p>Accede como usuario a <?php echo $home_name?></p>
        </div>

        <div>
            <div id='buscadores' class='container'>
                <div class='content'>
                    <?php echo validation_errors(); ?>
                    <?php echo form_open('verifylogin');
                        $datos = array(
                                'name' => 'username',
                                'placeholder' => 'Usuario',
                                'class' => 'text',
                                'size' => '25'
                            );
                        echo form_input($datos);

                        $datos = array(
                                'name' => 'password',
                                'placeholder' => 'Contraseña',
                                'class' => 'text',
                                'size' => '25'
                            );
                        echo form_password($datos);

                        $datos = array(
                                    'id' => 'login',
                                    'name' => 'login',
                                    'value' => 'Login',
                                    'class' => 'button cursor'
                                );
                        echo form_submit($datos);
                    ?>
                </div>
            </div>
        </div>  
    </div>
</div>

伊尼西亚·塞西翁
加入科莫·乌萨里奥a

登录模式

<?php 
class User extends CI_Model
{
    function login($username, $password)
    {
        $this->db->select('id, username, password');
        $this->db->from('users');
        $this->db->where('username', $username);
        $this->db->where('password', MD5($password));
        $this->db->limit(1);

        $query = $this->db->get();

        return ($query->num_rows() == 1) ? $query->result() : false;
    }
}

我不认为你一开始就让codeigniter抓取你的密码,因为你丢失了一个助手导入(当然我认为这会引发某种错误,所以请检查你的日志)

另外,您可以在autoload.php配置中加载此帮助程序

在验证控制器中使用此选项

$this->load->helper(数组('form','url')


所有文档都假定相同的控制器和功能进行验证(考虑到这一点,这很有意义,只要您不编写20行代码来处理事情并将其分离为离散的功能位)

我终于找到了一个解决方案。apache模块重写需要处于活动状态,但它没有处于活动状态。

什么意思$密码是check_数据库函数的参数。请在我的主要帖子上查看我的评论。绝对!我马上就去。我们会追根究底的。谢谢你的额外信息!我把它添加到我的控制器上,我仍然有同样的问题。不管怎样,阅读我在回复我的主要帖子时的第一条评论,我仍然在为这个奇怪的问题寻找解决方案,但没有成功。好吧,除非你有什么发现,否则我会一整天都在看这个问题。如果你想用这个聊天,我们可以做一件有趣的事,我的朋友在localhost上运行着完全相同的网络,对他来说,这是可行的,但对我来说不是。实际上,他犯了一个我没有发现的错误,只是将会话库加载到verifylogin控制器构造中,它就消失了,工作得很好……如果它对他有效,而不是对你有效,那可能是数据库配置问题。你检查过你的日志了吗?我导出了我的sql,他把它导入了他的数据库,数据完全一样。好的,酷。现在,当我试图找出另一个答案时,这里有一个“它是否插上电源”的问题。您正在连接的DB用户表上是否有“选择”授权?是的,我实际上是以root用户身份连接的。