用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5450|回复: 8
收起左侧

[HELP] form能不能使用URI地址段的方式传参数?

[复制链接]
发表于 2009-8-19 18:47:43 | 显示全部楼层 |阅读模式
主要想实现的功能一是能在任意页面登录后能跳转回原来页面,二是不想用get方法使得url很乱,不利SEO。
我现在有个搜索功能,用CI默认的POST方法的话,参数不在URL里,登录后不知道该如何跳转回来。所以问下一个提交query的form能不能用URI地址段来传递这个query?用onclick()行不?
发表于 2009-8-19 18:54:39 | 显示全部楼层
不太明白你的意思,如果传递复杂参数,还是要用 ?a=b 这样的形式。
发表于 2009-8-19 19:07:34 | 显示全部楼层
如果一定要这么干,可以考虑下用flash session。
 楼主| 发表于 2009-8-19 21:48:46 | 显示全部楼层
2# Hex
恩,我还是用?a=的方法了。
在下面这个model中,我把当前页面链接作为参数传给控制器:
if(($this->session->userdata('username'))==""){
            $currentPage=$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
            $currentPage='login/index?current_page='.urlencode($currentPage);
            $link=anchor('signup', '注册')." | ".anchor($currentPage, '登录');
            return $link;
        }
控制器接受的网址是http://localhost/bookiki/index.php/login/index?current_page=localhost/bookiki/index.php/bookiki/search%3FinputString%3DC%25E7%25A8%258B%25E5%25BA%258F%25E8%25AE%25BE%25E8%25AE%25A1%26search_button%3D%25E4%25B9%25B0%25E4%25B9%25A6
这种形式,
但是404 error,你觉得会是什么问题呢?
发表于 2009-8-19 22:47:57 | 显示全部楼层
CI 默认不支持 GET 传参。
请看 FAQ 如何设置。
 楼主| 发表于 2009-8-19 22:56:20 | 显示全部楼层
CI 默认不支持 GET 传参。
请看 FAQ 如何设置。
Hex 发表于 2009-8-19 22:47

我设置了,在另一处可以用的。只是这里没有用form提交,直接写到网址里了。
发表于 2009-8-20 03:27:04 | 显示全部楼层
带斜线的参数不能直接放到url里面,和ci的url解析冲突
 楼主| 发表于 2009-8-20 11:44:28 | 显示全部楼层
带斜线的参数不能直接放到url里面,和ci的url解析冲突
visvoy 发表于 2009-8-20 03:27

很奇怪,我在?后面接一个变量时会有错误,接两个变量就没错了。
发表于 2009-8-20 11:47:26 | 显示全部楼层
本帖最后由 yinzhili 于 2009-8-20 11:49 编辑

可以在表单中增加一个隐藏域,用来传递URL,类似这样:
HTML复制代码
 <input type="hidden" name="from_url" id="from_url" value="<?php echo current_url();?>"/>
复制代码

然后在控制器里获取这个值再做跳转就行了。这里用到了current_url()函数,记得要先载入URL辅助函数:$this->load->helper('url');

本版积分规则