簡體   English   中英

使用CodeIgniter登錄PHP

[英]PHP login using CodeIgniter

我正在嘗試使用CodeIgniter在PHP上登錄。

我的代碼是這樣的:

登錄視圖

<div class="section section_with_padding" id="usuarios"> 
        <h1>Acceso a Usuarios</h1> 
        <div class="half left">
            <h4>Usuario Existente</h4>
            <p>Si posee una cuenta en Garage, introduzca su nombre de usuario y contraseña para acceder.</p>
            <div id="login">
                 <!-- Usado para que muestre los errores de validacion -->

                <form method="post" name="users" action="index.php/verificarlogin">
                    <div class="left">
                        <label for="username">Nombre de Usuario:</label> 
                        <input name="username" type="text" class="required input_field" id="username" maxlength="30" required/>
                    </div>
                    <div class="right">                           
                        <label for="password">Contraseña:</label> 
                        <input name="password" type="password" class="validate-email required input_field" id="email" maxlength="30" required/>
                    </div>
                    <div class="clear"></div>
                    <input type="submit" class="submit_btn float_l" name="submit" id="submit" value="Entrar" />
                </form>
            </div>
        </div>

不要介意正確的div,該代碼仍未編碼。

我的verificarlogin(驗證登錄)控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class VerificarLogin extends CI_Controller {

function __construct()
{
    parent::__construct();
    $this->load->model('usuarios','',TRUE);
}

function index()
{
    //Este metodo tendra las credenciales de validacion
    $this->load->library('Form_validation');

    $this->Form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
    $this->Form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');

    if($this->Form_validation->run() == FALSE)
    {
            //Si la validacion falla, el usuario es redireccionado a la pagina de login
            $this->load->view('#usuarios');
    }
    else
    {
            //Si la validacion pasa, el usuario es redireccionado a donde deberia ir
            redirect('home_usuarios', 'refresh');
    }

}

function check_database($password)
{
    //Si la validacion de campo es exitosa, valida contra la base de datos
    $username = $this->input->post('username');

    //Pregunta en la base de datos
    $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', 'Nombre de Usuario o Contraseña invalida');
        return false;
    }
  }
}

當我運行它時,會出現此錯誤:

遇到PHP錯誤

嚴重程度:注意

消息:未定義的屬性:VerificarLogin :: $ Form_validation

文件名:controllers / verificarlogin.php

行號:32

錯誤標記的行是這樣的:

$this->Form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');

我已重新研究,發現錯誤是由於缺少此行引起的

$this->load->library('Form_validation');

但是這行已經在我的代碼中了...

庫數據庫和會話通過自動加載來加載。

我不知道我做錯了什么...就像代碼無法訪問庫...

如果您查找文檔 ,則可以看到它們的示例:

<?php

class Form extends CI_Controller {

  function index()
  {
    $this->load->helper(array('form', 'url'));

    $this->load->library('form_validation');

    if ($this->form_validation->run() == FALSE)
    {
      $this->load->view('myform');
    }
    else
    {
      $this->load->view('formsuccess');
    }
  }
}
?>

並且它們執行$this->form_validation而不是$this->Form_validation因此請嘗試更改要訪問的屬性的名稱。

加載庫$this->load->library('form_validation');時,還要嘗試修復名稱$this->load->library('form_validation');

函數check_database不加載Form validation 嘗試$this->load->library('form_validation')下行$this->load->library('form_validation')移至控制器構造函數:

function __construct()
{
    parent::__construct();
    $this->load->model('usuarios','',TRUE);
    $this->load->library('form_validation');
}

我假設您的工作文件夾名稱是Project

將.htaccess文件添加到

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots|favicon.ico|\.txt|\.html)
RewriteRule ^(.*)$ /Project/index.php?/$1 [L]

在您的VerificarLogin控制器中

class VerificarLogin extends CI_Controller {


  public function __construct() {
     parent::__construct ();    
  }

  public function index() {

     if ($this->session->userdata('logged_in')){
        redirect ('/home_usuarios/' ); // where user visit successful login
        exit;
     }
     redirect ( '/VerificarLogin /userlogin' ); 
   }


 function userlogin() {

     $this->load->model ( 'usuarios', '', TRUE );
     $this->load->library ( 'form_validation' );

     //write your code here
 }

}

在您看來

<form method="post" name="users" action="<?php echo base_url ();?>VerificarLogin /userlogin">

在您的代碼中實際上沒有問題,但是在拼寫方面。

將Form_validation更改為form_validation。 我希望這是您的問題的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM