thinkphp U方法生成问题。

yxqc 2014-06-27 07:48:46
我的表单中提交是这样写的:<form action="{:U(GROUP_NAME.'/Login/login')}" method="post" id="login">
提交后本应该跳转到:http://1121.87.98.198/index.php/Login/login
现在确跳到提交后本应该跳转到:http://localhost/index.php/Login/login

我服务器配置文件中'DB_HOST' => 'localhost',难道U方法还要单独设置吗?
用的是Nginx服务器

现在问题是要怎么配置U让localhost变成ip?
...全文
982 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxqc 2014-06-30
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
ThinkPHP函数详解:U方法
看来只有修改代码了。
xuzuning 2014-06-30
  • 打赏
  • 举报
回复
yxqc 2014-06-30
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
他最后是 if($domain) { $url = 'http://'.$domain.$url; }else{ $url = "http://".$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).$url; } 你调用时 U(GROUP_NAME.'/Login/login') 没有 $domain 所以走 else 分支,即你用什么域名访问就是什么域名 你若想自己定义则 U(GROUP_NAME.'/Login/login', '', true, false, $IP)
其实我只是想知道是否哪里配置有问题,我在本地是没有问题的。如果修改程序的话,很多地方要修改,会比较麻烦。
yxqc 2014-06-30
  • 打赏
  • 举报
回复
引用 8 楼 yxqc 的回复:
[quote=引用 7 楼 xuzuning 的回复:] 他最后是 if($domain) { $url = 'http://'.$domain.$url; }else{ $url = "http://".$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).$url; } 你调用时 U(GROUP_NAME.'/Login/login') 没有 $domain 所以走 else 分支,即你用什么域名访问就是什么域名 你若想自己定义则 U(GROUP_NAME.'/Login/login', '', true, false, $IP)
其实我只是想知道是否哪里配置有问题,我在本地是没有问题的。如果修改程序的话,很多地方要修改,会比较麻烦。[/quote] 是 Nginx配置的问题。谢谢版主了。
xuzuning 2014-06-28
  • 打赏
  • 举报
回复
他最后是
if($domain) {
$url = 'http://'.$domain.$url;
}else{
$url = "http://".$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).$url;
}
你调用时 U(GROUP_NAME.'/Login/login') 没有 $domain
所以走 else 分支,即你用什么域名访问就是什么域名
你若想自己定义则
U(GROUP_NAME.'/Login/login', '', true, false, $IP)
yxqc 2014-06-28
  • 打赏
  • 举报
回复
引用 5 楼 wander_wind 的回复:
是不是改动过U函数?看这里

    if($domain) {
        $url   =  'http://'.$domain.$url;
    }else{
        $url   =  "http://".$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).$url;
    }
生成的url永远是绝对地址,而我印象中他一直是相对路径,你把else删了吧
没有的,不回去动源函数的。
智商众筹 2014-06-28
  • 打赏
  • 举报
回复
是不是改动过U函数?看这里

    if($domain) {
        $url   =  'http://'.$domain.$url;
    }else{
        $url   =  "http://".$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).$url;
    }
生成的url永远是绝对地址,而我印象中他一直是相对路径,你把else删了吧
yxqc 2014-06-27
  • 打赏
  • 举报
回复
这样就可以:<a href="__APP__/News/index">新闻</a> 估计还是配置。
yxqc 2014-06-27
  • 打赏
  • 举报
回复
只要我这样写的都不能访问。<a href="{:U('News/index')}">新闻</a>
yxqc 2014-06-27
  • 打赏
  • 举报
回复
// URL组装 支持不同模式
// 格式:U('[分组/模块/操作]?参数','参数','伪静态后缀','是否跳转','显示域名')
function U($url,$vars='',$suffix=true,$redirect=false,$domain=false) {
	// 解析URL
	$info =  parse_url($url);
	$url   =  !empty($info['path'])?$info['path']:ACTION_NAME;
	// 解析子域名
	if($domain===true){
		$domain = $_SERVER['HTTP_HOST'];
		if(C('APP_SUB_DOMAIN_DEPLOY') ) { // 开启子域名部署
			$domain = $domain=='localhost'?'localhost':'www'.strstr($_SERVER['HTTP_HOST'],'.');
			// '子域名'=>array('项目[/分组]');
			foreach (C('APP_SUB_DOMAIN_RULES') as $key => $rule) {
				if(false === strpos($key,'*') && 0=== strpos($url,$rule[0])) {
					$domain = $key.strstr($domain,'.'); // 生成对应子域名
					$url   =  substr_replace($url,'',0,strlen($rule[0]));
					break;
				}
			}
		}
	}
	// 解析参数
	if(is_string($vars)) { // aaa=1&bbb=2 转换成数组
		parse_str($vars,$vars);
	}elseif(!is_array($vars)){
		$vars = array();
	}
	if(isset($info['query'])) { // 解析地址里面参数 合并到vars
		parse_str($info['query'],$params);
		$vars = array_merge($params,$vars);
	}

	// URL组装
	$depr = C('URL_PATHINFO_DEPR');
	if($url) {
		if(0=== strpos($url,'/')) {// 定义路由
			$route   =  true;
			$url   =  substr($url,1);
			if('/' != $depr) {
				$url   =  str_replace('/',$depr,$url);
			}
		}else{
			if('/' != $depr) { // 安全替换
				$url   =  str_replace('/',$depr,$url);
			}
			// 解析分组、模块和操作
			$url   =  trim($url,$depr);
			$path = explode($depr,$url);
			$var  =  array();
			$var[C('VAR_ACTION')] = !empty($path)?array_pop($path):ACTION_NAME;
			$var[C('VAR_MODULE')] = !empty($path)?array_pop($path):MODULE_NAME;
			if(C('URL_CASE_INSENSITIVE')) {
				$var[C('VAR_MODULE')] =  parse_name($var[C('VAR_MODULE')]);
			}
			if(C('APP_GROUP_LIST')) {
				if(!empty($path)) {
					$group   =  array_pop($path);
					$var[C('VAR_GROUP')]  =   $group;
				}else{
					if(GROUP_NAME != C('DEFAULT_GROUP')) {
						$var[C('VAR_GROUP')]  =   GROUP_NAME;
					}
				}
			}
		}
	}
	$flag=true;
	if(C('URL_MODEL') == 0) { // 普通模式URL转换
		$url   =__APP__.'?'.http_build_query($var);
		if(!empty($vars)) {
			$vars = http_build_query($vars);
			$url   .= '&'.$vars;
		}
		$flag=false;
	}
	/**/
	if(C('URL_MODEL') == 2){
		$routes = C('URL_ROUTE_RULES');

		$_url=array_merge(parseUrl($url),$vars);

		foreach ($routes as $rule=>$route){
			$_route=parseUrl(str_replace(':', '_',$route));
			if(url_compare($_url, $_route))break;
		}
		if(url_compare($_url, $_route)){
			foreach ($_route as $key=>$val){
				if($key=='m'||$key=='a')continue;
				$rule=preg_replace("/(\(\\\[\w]\+\))/",$_url[$key],$rule,1);
			}
			//去掉最后的"/"
			$url=__APP__.'/'.trim($rule,'/');
				
			$flag=false;
		}
	}

	if($flag){ // PATHINFO模式或者兼容URL模式
		if(isset($route)) {
			$url   =  __APP__.'/'.$url;
		}else{
			$url   =  __APP__.'/'.implode($depr,array_reverse($var));
		}
		if(!empty($vars)) { // 添加参数
			$vars = http_build_query($vars);
			$url .= $depr.str_replace(array('=','&'),$depr,$vars);
		}
		if($suffix) {
			$suffix   =  $suffix===true?C('URL_HTML_SUFFIX'):$suffix;
			if($suffix) {
				$url  .=  '.'.ltrim($suffix,'.');
			}
		}
	}
	//file_put_contents("out.txt",$url."\r\n",FILE_APPEND);
	if($domain) {
		$url   =  'http://'.$domain.$url;
	}else{
		$url   =  "http://".$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).$url;
	}
	if($redirect) // 直接跳转URL
	redirect($url);
	else
	return $url;
}
xuzuning 2014-06-27
  • 打赏
  • 举报
回复
贴出 U 函数定义看看

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧