【问题标题】:Codeigniter (3.1.6) Auth does not work in Web HostingCodeigniter (3.1.6) Auth 在虚拟主机中不起作用
【发布时间】:2020-07-09 04:16:09
【问题描述】:

我最近购买了一个虚拟主机并上传了我的数据库以及我的系统(使用 codeigniter 制作)。

在我登录之前一切都很好。

我的网站和系统的登陆页面都很好。

问题是我登录后显示未找到。

这是我的看法

<form class="form-horizontal form-material" method="post" id="loginform" action="Login/login_auth">
    <div class="form-group m-t-40">
        <div class="col-xs-12">
            <input class="form-control" name="email" value="<?php if(isset($_COOKIE['email'])) { echo $_COOKIE['email']; } ?>" type="text" required placeholder="Username">
        </div>
    </div>
    <div class="form-group">
        <div class="col-xs-12">
            <input class="form-control" name="password" value="<?php if(isset($_COOKIE['password'])) { echo $_COOKIE['password']; } ?>" type="password" required placeholder="Password">
        </div>
    </div>

    <div class="form-check">
     <input type="checkbox" name="remember" class="form-check-input" id="remember-me">
     <label class="form-check-label" for="remember-me">Remember me plz!</label>
    </div>                     
    <div class="form-group text-center m-t-20">
        <div class="col-xs-12">
            <button class="btn btn-info btn-lg btn-login btn-block text-uppercase waves-effect waves-light" type="submit">Log In</button>
        </div>
    </div>
</form>

我的控制器是

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

class Login extends CI_Controller 
{
    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->model('login_model');
        $this->load->model('dashboard_model');

    } 

    public function login_auth()
    {   
         $response = array();
        //Recieving post input of email, password from request
        $email = $this->input->post('email');
        $password = sha1($this->input->post('password'));
        $remember = $this->input->post('remember');
        #Login input validation\
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
        $this->form_validation->set_rules('email', 'User Email', 'trim|xss_clean|required|min_length[7]');
        $this->form_validation->set_rules('password', 'Password', 'trim|xss_clean|required|min_length[6]');

        if($this->form_validation->run() == FALSE)
        {
           $this->session->set_flashdata('feedback','UserEmail or Password is Invalid');
           redirect(base_url() . 'login', 'refresh');       
        }
        else
        {
            //Validating login
            $login_status = $this->validate_login($email, $password);
            $response['login_status'] = $login_status;
            if ($login_status == 'success') 
            {
                if($remember)
                {
                    setcookie('email',$email,time() + (86400 * 30));
                    setcookie('password',$this->input->post('password'),time() + (86400 * 30));
                    redirect(base_url() . 'login', 'refresh');
                 } 
                 else 
                 {
                     if(isset($_COOKIE['email']))
                     {
                        setcookie('email',' ');
                     }
                     if(isset($_COOKIE['password']))
                     {
                        setcookie('password',' ');
                     }              
                    redirect(base_url() . 'login', 'refresh');
                }

            }
            else
            {
                $this->session->set_flashdata('feedback','UserEmail or Password is Invalid');
                redirect(base_url() . 'login', 'refresh');
            }
        }
    }       
}

它在本地服务器 (Xampp) 中运行良好,但是当我将它放在虚拟主机中时它不起作用。有什么想法吗?

【问题讨论】:

  • 您收到什么错误信息?而且在 Cookie 中存储密码也不是一个好习惯。
  • login_auth() 中的 404 问题。对于存储在 cookie 中的密码,目前只是试用一下如何将其上传到虚拟主机上。但将来我会删除这些。
  • 您遇到了路由问题。
  • 这是 50/50。如果它在路由中,那么它也不应该在本地服务器中运行吗?但它确实在本地而不是在网络托管中运行的事实意味着我错过了一些东西
  • 您的路线定义有些不同。你不能使用相同的路由从你的本地主机直接进入你的网络服务器。

标签: php codeigniter web-hosting


【解决方案1】:

你是否删除了 config.php 中的路由 index.php? 如果为 true,则必须创建一个 .htaccess 文件。

例子:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

【讨论】:

  • 你的意思是config floder中的index.php吗?
  • @logiosdev no ... 我的意思是 $config['index_page'] = '';
猜你喜欢
  • 2014-04-05
  • 2016-11-01
  • 2013-01-28
  • 1970-01-01
  • 2016-09-29
  • 2018-05-09
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
相关资源
最近更新 更多