alexdiao 发表于 2009-8-19 18:47:43

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

主要想实现的功能一是能在任意页面登录后能跳转回原来页面,二是不想用get方法使得url很乱,不利SEO。
我现在有个搜索功能,用CI默认的POST方法的话,参数不在URL里,登录后不知道该如何跳转回来。所以问下一个提交query的form能不能用URI地址段来传递这个query?用onclick()行不?

Hex 发表于 2009-8-19 18:54:39

不太明白你的意思,如果传递复杂参数,还是要用 ?a=b 这样的形式。

saturn 发表于 2009-8-19 19:07:34

如果一定要这么干,可以考虑下用flash session。

alexdiao 发表于 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,你觉得会是什么问题呢?

Hex 发表于 2009-8-19 22:47:57

CI 默认不支持 GET 传参。
请看 FAQ 如何设置。

alexdiao 发表于 2009-8-19 22:56:20

CI 默认不支持 GET 传参。
请看 FAQ 如何设置。
Hex 发表于 2009-8-19 22:47 http://codeigniter.org.cn/forums/images/common/back.gif
我设置了,在另一处可以用的。只是这里没有用form提交,直接写到网址里了。

visvoy 发表于 2009-8-20 03:27:04

带斜线的参数不能直接放到url里面,和ci的url解析冲突

alexdiao 发表于 2009-8-20 11:44:28

带斜线的参数不能直接放到url里面,和ci的url解析冲突
visvoy 发表于 2009-8-20 03:27 http://codeigniter.org.cn/forums/images/common/back.gif
很奇怪,我在?后面接一个变量时会有错误,接两个变量就没错了。

yinzhili 发表于 2009-8-20 11:47:26

本帖最后由 yinzhili 于 2009-8-20 11:49 编辑

可以在表单中增加一个隐藏域,用来传递URL,类似这样:
<input type="hidden" name="from_url" id="from_url" value="<?php echo current_url();?>"/>
然后在控制器里获取这个值再做跳转就行了。这里用到了current_url()函数,记得要先载入URL辅助函数:$this->load->helper('url');
页: [1]
查看完整版本: form能不能使用URI地址段的方式传参数?