Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter中URL中的控制器重复_Php_Apache_.htaccess_Codeigniter_Wamp - Fatal编程技术网

Php CodeIgniter中URL中的控制器重复

Php CodeIgniter中URL中的控制器重复,php,apache,.htaccess,codeigniter,wamp,Php,Apache,.htaccess,Codeigniter,Wamp,我有一个名为Register的控制器,看起来像这样: class Register extends CI_Controller { public function index() { $this->load->view('register'); } public function create() { $this->load->library('form_validation');

我有一个名为
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');
        }
    }
}
$config['base_url'] = 'http://example.com';
该视图包含一个发布到
注册/创建
的表单

我的问题是,当我转到
localhost/register
并错误地填写表单时,表单会重新加载,但url现在是:

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>


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

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

使用完整url。在表单的操作中,选择
current\u url()
site\u url('register')

这是一个很好的实践,您可以将这些或preffix与
base\u url()
一起使用,因为这样可以让您的站点运行,而不必成为域路径。
例如,如果需要,您可以在example.com/my_site/上运行站点,而不是仅在example.com上运行


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

使用完整url。在表单的操作中,选择
current\u url()
site\u url('register')

这是一个很好的实践,您可以将这些或preffix与
base\u url()
一起使用,因为这样可以让您的站点运行,而不必成为域路径。
例如,如果需要,您可以在example.com/my_site/上运行站点,而不是仅在example.com上运行


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

我也遇到了同样的问题,我可以通过在我的域前面添加基本url“http://”来解决这个问题,如下所示:

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');
        }
    }
}
$config['base_url'] = 'http://example.com';

我也遇到了同样的问题,我可以通过在我的域前面添加基本url“http://”来解决它,如下所示:

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');
        }
    }
}
$config['base_url'] = 'http://example.com';
在url中添加
base\u url()

<a href="<?=base_url()?>/mypage">
在url中添加
base\u url()

<a href="<?=base_url()?>/mypage">

请发布您的视图文件-特别是表单打开部分-听起来您的操作URL是wrong@Ula,Laurencei:我已经发布了上面的视图文件。请发布您的视图文件-特别是表单打开部分-听起来您的操作URL是wrong@Ula,Laurencei:我已经发布了上面的视图文件。嗯,让我试试使用绝对路径是!!非常感谢。这解决了问题。我还遇到了表单验证在
example.com/register
上工作的问题,但在
example.com/register/
上不起作用。它也解决了这个问题。@Ula:我发现
form\u open()
非常不直观,因为这是我第一次使用CI。与手动编写表单标记相比,使用它有什么好处吗?@xbonez来自CI文档:使用此标记而不是硬编码您自己的HTML的主要好处是,它允许您的站点在url发生更改时更易于移植。但是如果您在action=“”中使用base_url()、current_url()或site_url()没关系。嗯,让我试试用绝对路径是的!!非常感谢。这解决了问题。我还遇到了表单验证在
example.com/register
上工作的问题,但在
example.com/register/
上不起作用。它也解决了这个问题。@Ula:我发现
form\u open()
非常不直观,因为这是我第一次使用CI。与手动编写表单标记相比,使用它有什么好处吗?@xbonez来自CI文档:使用此标记而不是硬编码您自己的HTML的主要好处是,它允许您的站点在url发生更改时更易于移植。但是如果您在action=“”中使用base_url()、current_url()或site_url()没关系,这的确是问题所在。我现在正在使用CI
site\uURL
函数来生成绝对路径。这确实是问题所在。我现在使用CI
site\u url
函数来生成绝对路径。