【问题标题】:Codeigniter form post 403Codeigniter 表单后 403
【发布时间】:2017-12-14 07:41:57
【问题描述】:

我无法使用 Codeigniter 3.1.6 提交表单,因为我收到了403 Forbidden

POST 数据不会发送到 revise/updates。除了这个之外,我在其他页面上的表单运行良好。我没有使用 AJAX。

查看

<?=form_open('revise/updates');?>
   <input type="text" name="name" value="<?=$lead[0]['name'];?>">
   <input type="hidden" name="id" value="<?=$lead[0]['id'];?>">
   <input type="email" name="email" value="<?=$lead[0]['email'];?>">
   <input type="text" name="contact" value="<?=$lead[0]['phone_number'];?>">
   <input type="text" name="company" value="<?=$lead[0]['comp_name'];?>">
   <input type="text" name="va"  value="<?=$lead[0]['va'];?>" readonly>
   <input type="text" name="sales"  value="<?=$lead[0]['sales_name'];?>" readonly>
   <input type="text" name="service"  value="<?=$lead[0]['service_name'];?>" readonly>
   <textarea name="note"><?=$lead[0]['note'];?></textarea>
   <input type="hidden" name="opt" value="yes">
   <input type="hidden" name="cmd" value="1">
   <button type="submit" name="submit">Confirm</button>
<?=form_close();?>

控制器

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

class Revise extends VA_Controller {

   function __construct () {
      parent::__construct();
      $this->load->helper('form');
      $this->load->library('form_validation');
   }

    public function index($array)
    {
      $this->load->view('header');
      $this->load->view('update-lead',$array);
        $this->load->view('footer');
    }

   public function updates() {
      $this->form_validation->set_rules('name', 'Name', 'trim|required');
      $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
      $this->form_validation->set_rules('contact', 'Contact', 'trim|required');
      $this->form_validation->set_rules('company', 'Company Name', 'trim|required');
      $this->form_validation->set_rules('service', 'Service', 'trim|required');
      $this->form_validation->set_rules('va', 'vAmbassador', 'trim|required');
      $this->form_validation->set_rules('sales', 'Sales Person', 'trim|required');
      $this->form_validation->set_rules('note', 'note', 'trim');

      if($this->form_validation->run() == true) {
         echo "OK";
      }
      else {
         echo "Some Error";
      }
   }
}

我有 documentation 中提到的 .htaccess 文件

【问题讨论】:

  • 这只是我的猜测,我认为您不能使用 Update 创建新的类或控制器,因为它已经在 codeigniter 中预定义了类或控制器。
  • @Ayyappaamara 我更改了类名,但仍然出现错误。
  • 能否请您发布您的完整控制器页面
  • @Ayyappaamara 我更新了问题
  • VA_Controller 是什么?它是自定义控制器吗?你在config/autoload.php 中加载了这个吗?

标签: php codeigniter http-status-code-403


【解决方案1】:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

您必须从您的 /application/config/config.php 中删除您的 index.php 条目

验证设置是否正确,403 禁止错误可能是由于错误的.htaccess 重写。

【讨论】:

  • 我已经有 .htaccess &lt;IfModule mod_rewrite.c&gt;RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] &lt;/IfModule&gt; 并且在 config.php 上也省略了 index.php
  • @Rey 备份当前文件并替换它。
  • 我试过了,但它重定向到主页。这是example.com/folder/admin/update 表单的链接
  • @Rey 那么您可能应该尝试一个不同的名称,因为update 关键字可能被codeigniter 本身使用。
  • 我更改了类名,但仍然出现错误。
【解决方案2】:

请尝试修改您现有的控制器,如下面的代码。

class Revise extends CI_Controller {

    function __construct () {
      parent::__construct();
      $this->load->helper('form');
      $this->load->library('form_validation');

      if(!isset($_SESSION["logged_in"]) && !isset($_SESSION["username"]) && $_SESSION["logged_in"] !== TRUE && $_SESSION["username"] !== 'example@example.com' ) 
      {
        redirect('/login');
      } 
}

【讨论】:

    【解决方案3】:

    重写引擎开启 RewriteCond $1 !^(index.php|resources|assets|robots.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多