0

我试图用以下代码设置一个基本的登录表单:

<?=form_open(base_url() . 'main/login'); ?>

但是,在提交表单后,url 会显示:

example.com/main/http//example.com/http//example.com/main/login

所以我想本质上出于某种原因,base-url 在控制器/方法声明之前打印了两次。如果我清除配置文件中的基本 url 值,则应用程序可以正常工作。然而,我很好奇可能导致这种情况的原因。有关其他信息,我正在使用虚拟主机处理 xampp,并且我使用位于文档根目录的 .htaccess 文件进行了 mod-rewrite。

4

4 回答 4

2

CodeIgniter 在你使用表单助手时会自动将 base_url 添加到表单的操作中。

例如,您可以使用:

<?=form_open('main/login'); ?>

这将产生:http//example.com/main/login

和正确的网址!很简单!:D 更多信息请访问: http ://codeigniter.com/user_guide/helpers/form_helper.html

于 2012-07-28T05:20:48.387 回答
1

application/configconfig.php下的文件具有以下设置:

$config['base_url'] = '';

给它文件夹/目录路径。例如:

$config['base_url'] = 'http://localhost/ci_test/';

不要忘记提及协议 (http://)。或者尝试该site_url()方法而不是base_url()表单打开。如果使用以下form_open()功能,请跳过它:

<form action="<?php echo site_url('main/login'); ?>"> ... </form>

或者

<?php form_open('main/login'); ?>

如需更多帮助:http ://codeigniter.com/user_guide/helpers/url_helper.html

不确定.htaccess您使用的文件。但这可能是codeigniter的答案:为什么当我在锚标记的href属性中回显base_url()时,它会回显两次

于 2012-07-28T05:06:41.333 回答
0

通过参数试试:

<?=form_open(base_url('main/login')); ?>

或者

<?=form_open site_url('main/login')); ?>

为了附加前缀也

于 2012-07-28T01:26:36.087 回答
0

您可以使用

<?php echo form_open(base_url(main/login)); ?>

您必须使用“echo”而不是因为它在某些浏览器中不起作用....

于 2012-08-21T11:57:51.043 回答