|
发表于 2011-4-27 10:51:51
|
显示全部楼层
本帖最后由 jeongee 于 2011-4-27 10:53 编辑
回复 3# 刀客孩哥
PHP复制代码
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是个什么东西,就是这个网页从哪个地方来的,如果你是直接访问的这个网页,这个值就是空的,也就是没有,所以这个函数一开始进行
PHP复制代码 $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; 复制代码
仔细读下上面代码呢,会发现,如果有referer的时候就进入第一个if块,没有的时候判断有没有指定default值,如果2个都没有,这个函数什么都不执行!这就是你的代码所创造的不执行的条件。
其次,这个函数不是用来返回值的,是用来跳转页面的,所以的你的运用是错误的。
PS:我觉得这个$default默认值为空字符比较好,另外
PHP复制代码 else if (!empty($default))
{
redirect ($default);
} 复制代码
这里完全没有必要,直接就可以了,也就是默认返回主页,或者指定,个人观点。 |
|