go_back()函数怎么用
是扩展helper里的一个函数,从函数名上看,是返回上一页网上搜了下,说是防止站外提交的一个东西求它的用途和用法 访问上一个站内链接,也就是返回上一个referrer。你可以分析下具体代码,有不懂的请提交上来一起交流。 谢谢stblog老大的回复
我是个用了半年ci的新手,几乎没看过别人的代码。stblog是我较为深入地看的第一个php程序,问得浅薄的地方请万勿见怪。呵呵
这go_back()是返回什么,返回的东西又存在哪里呢?
我做了个测试,结果未遂,代码在此,请指教
function agai()
{
$uname = $this->input->get('uname');
$tel = $this->input->get('tel');
$aboutme = $this->input->get('aboutme');
echo '姓名:'.$uname.'<br>';
echo '电话:'.$tel.'<br>';
echo '简介:'.$aboutme.'<br>';
$val =go_back();
echo $val;
}
本帖最后由 jeongee 于 2011-4-27 10:53 编辑
回复 3# 刀客孩哥
if ( ! function_exists('go_back'))
{
function go_back($suffix = NULL, $default = NULL)
{
//获取来源
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
//判断来源
if (!empty($referer))
{
// 来自Typecho
if (!empty($suffix))
{
$parts = parse_url($referer);
$myParts = parse_url($suffix);
if (isset($myParts['fragment']))
{
$parts['fragment'] = $myParts['fragment'];
}
if (isset($myParts['query']))
{
$args = array();
if (isset($parts['query']))
{
parse_str($parts['query'], $args);
}
parse_str($myParts['query'], $currentArgs);
$args = array_merge($args, $currentArgs);
$parts['query'] = http_build_query($args);
}
$referer = build_url($parts);
}
redirect($referer);
}
else if (!empty($default))
{
redirect($default);
}
}
}
首先你要知道HTTP_REFERER是个什么东西,就是这个网页从哪个地方来的,如果你是直接访问的这个网页,这个值就是空的,也就是没有,所以这个函数一开始进行
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
仔细读下上面代码呢,会发现,如果有referer的时候就进入第一个if块,没有的时候判断有没有指定default值,如果2个都没有,这个函数什么都不执行!这就是你的代码所创造的不执行的条件。
其次,这个函数不是用来返回值的,是用来跳转页面的,所以的你的运用是错误的。
PS:我觉得这个$default默认值为空字符比较好,另外
else if (!empty($default))
{
redirect($default);
}
这里完全没有必要,直接 redirect($default);就可以了,也就是默认返回主页,或者指定,个人观点。 谢版主的详解,我又去试了一下,取到了$_SERVER['HTTP_REFERER']这值,但它不跳转,不知我的用法有何差错
function index()
{
echo anchor('test/tianbiao', '点击此处填表');
}
function agai()
{
var_dump($_SERVER);//$_SERVER['HTTP_REFERER']里有值!
echo '处理完成!';
go_back();
}
function tianbiao()
{
$this->load->view('test_v');
}
页:
[1]