1

我有一个Register看起来像这样的控制器:

class Register extends CI_Controller
{
    public function index()
    {
        $this->load->view('register');
    }

    public function create()
    {
        $this->load->library('form_validation');
        //set rules here

        if ($this->form_validation->run() == TRUE)
        {
            //everything checks out
        }
        else
        {
            $this->load->view('register');
        }
    }
}

该视图包含一个发布到 的表单register/create

我的问题是,当我localhost/register错误地填写表格时,表格会重新加载,但现在的网址是:

localhost/register/register/create

如果我再次输入错误

localhost/register/register/register/create

等等...

我猜这是一个htaccess并且我已经尝试使用一些在线可用的标准 CodeIgniter htaccess 文件,但没有一个可以解决这个问题。我在 WAMP 服务器上使用它。

编辑

视图文件目前仅包含表单。我更喜欢使用直接 HTML 而不是 CodeIgniter 表单助手。

<form id="register_form" method="post" action="register/create" title="Create an Account">
    <!-- input fields -->
</form>
4

4 回答 4

4

使用完整的网址。或者在您的表单的操作中current_url()site_url('register')

使用这些或前缀是一种很好的做法,base_url()因为这允许您的站点运行而不必是域路径。
例如,如果需要,您可以在 example.com/my_site/ 上运行该站点,而不是只能在 example.com 上运行。

为了尽可能全面地控制表单的操作,请始终从相对 url 开始http://并避免使用相对 url(例如 action="register")。

于 2012-04-25T16:18:52.420 回答
3

将表单的 action 参数从 更改register/create/register/create。您正在发布到相对 URL。通过将斜杠添加到 action 参数的开头,您可以使 URL 成为绝对 URL。因此,表格将始终发布到http://domain-name/register/create.

于 2012-04-25T16:18:33.923 回答
2

我遇到了同样的问题,我可以通过在我的域之前将“http://”放在我的 base_url 中来解决它,如下所示:

$config['base_url'] = 'http://example.com';
于 2016-04-30T17:27:23.997 回答
0

添加base_url()您的网址:

<a href="<?=base_url()?>/mypage">
于 2020-08-09T00:08:19.540 回答