我是数据库工作的新手,我想知道是否有人可以帮助我理解为什么我只是在本地开发时会遇到403 Forbidden错误。我使用codeigniter尝试创建一个简单的登录程序。有一天,我让程序在不同的计算机上运行,但是当我尝试打开"查看"或"控制器"浏览器中的文件。它必须在某处设置,但我根本不知道在哪里看。有什么想法吗?
这是我的database.php文件:
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'tester';
$db['default']['password'] = 'tester';
$db['default']['database'] = 'intranet';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
这是控制器文件welcome.php:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/welcome
* - or -
* http://example.com/index.php/welcome/index
* - or -
* Since this controller is set as the default controller in
* config/routes.php, it's displayed at http://example.com/
*
* So any other public methods not prefixed with an underscore will
* map to /index.php/welcome/<method_name>
* @see http://codeigniter.com/user_guide/general/urls.html
*/
public function index()
{
$this->load->view('welcome_message');
}
public function login_form()
{
$this->load->view('login_form');
}
public function login_submit()
{
print_r( $_POST );
$this->load->model('Usermodel', 'users');
$match = $this->users->authenticate_user( $_POST['email'], $_POST['password'] );
if( $match )
{
echo "User exists in database!";
}
else
{
echo "Email or password is wrong, bretheren!";
}
}
}
我添加了行$ autoload [&#39; libraries&#39;] = array(&#39;数据库&#39;);
我在MAMP上的phpMyAdmin中创建了一个数据库,以获得代码指定的数据库和表格,所以我很困惑为什么当我在浏览器中运行welcome.php文件时,出现403错误。它是本地的所以不应该是这个问题吗?我一定错过了某个地方。有什么想法吗?
答案 0 :(得分:6)
正如评论中所提到的,您不应该尝试直接访问控制器所在的.php
文件。直接脚本访问不允许这就是您获得403的原因。需要通过index.php
发送请求。所以,而不是使用此URL
localhost/intranet/CodeIgniter_2.1.4/application/controllers/welcome.php
您需要使用
localhost/intranet/CodeIgniter_2.1.4/welcome //Use this if your .htaccess removes index.php
localhost/intranet/CodeIgniter_2.1.4/index.php/welcome
或访问您的登录表单
localhost/intranet/CodeIgniter_2.1.4/welcome/login_form //Use this if your .htaccess removes index.php
localhost/intranet/CodeIgniter_2.1.4/index.php/welcome/login_form
答案 1 :(得分:3)
如果有htaccess文件,请将拒绝更改为授予,或者将其完全删除
答案 2 :(得分:1)
这发生在我身上。我无法通过以上答案解决问题。
我尝试将文件夹CodeIgniter-3.1.4 Access(Others)更改为Access文件,现在我可以看到index.php文件。
我还没有尝试过任何其他事情。希望它有所帮助。