提交表单Codeigniter时403重定向错误

时间:2014-03-09 01:09:46

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

this tutorial的第一部分运行表单时出现403错误。

我在研究并怀疑mod_security限制后联系了我的主机,他们告诉我我的内部重定向限制为10.错误如下。他们说他们不支持开发,但我怀疑,因为我使用的是模板文件,导致问题的原因在于它们。

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://mywebsite.com/automation/codeigniter/form 

如何找到重定向循环的原因,或以其他方式修复403错误?

编辑:教程中的网址让我转到http://mywebsite.com/includes/codeigniter/index.php/form

表格......

<html>
<head>
<title>My Form</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open(base_url('controllers/form.php')); ?>

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email" value="" size="50" />

<br><br>

<div><input type="submit" value="Submit" /></div>

</form>

<?php echo form_close() ?>

</body>
</html>

控制器......

    <?php

class Form extends CI_Controller {

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

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

        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
        $this->form_validation->set_rules('email', 'Email', 'required');

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

注意CodeIgniter用户a Front Controller

3 个答案:

答案 0 :(得分:0)

请查看您的重写规则 - 这通常是重定向问题。

检查CI路由配置 - 有点奇怪:“index.php / form”

您可以将CI LogLevel设置为debug以获得回溯。

答案 1 :(得分:0)

<?php echo form_open(); ?>

而不是放置'form',这应该是将处理表单的控制器的URL。 由于你没有发布你的控制器,我无法真正告诉你该放什么。

<?php echo form_open(base_url('controller/method/arguments')); ?>

此外,如果你打算使用表单助手..也可以用它关闭表单。

<?php echo form_close() ?>

在root中使用htaccess从url中删除index.php ..这样的东西会起作用..

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

答案 2 :(得分:0)

检查Codeigniter目录的.htaccess是否限制http POST,即

拒绝所有

如果没有.htaccess,请检查父目录中可能继承此限制的位置,因为htaccess规则是递归应用的。