您的位置:首页 > 编程语言

从页面代码看火车票订票系统 12306的代码质量

2012-01-06 14:49 597 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta name="Robots"   content="none"/>
<meta http-equiv="Expires" content="0"/>
<meta http-equiv="Cache-Control"  content="no-cache"/>
<meta http-equiv="pragma"  content="no-cache"/>
<title>铁路客户服务中心</title>

<link  href="/otsweb/css/style.css" rel="stylesheet"  type="text/css"/>
<link  href="/otsweb/css/contact.css" rel="stylesheet"  type="text/css"/>
<link href="/otsweb/css/validation.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="/otsweb/css/easyui.css"/>
<link rel="stylesheet" type="text/css" href="/otsweb/css/suggest.css"/>
<link href="/otsweb/css/cupertino/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="http://www.12306.cn/mormhweb/images/favicon.ico"/>
<script type="text/javascript" src="/otsweb/js/common/iepngfix_tilebg.js?version=2.0"></script>
<script src="/otsweb/js/common/jquery-1.4.2.min.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/autoHeight.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/jquery.bgiframe.min.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/jquery.easyui.min.js?version=2.0" type="text/javascript"></script>

<script src="/otsweb/js/common/datepicker/WdatePicker.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/j.suggest.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/trainCodeSuggest.js?version=2.0" type="text/javascript"></script>
<style>
div,img,li,input,a { behavior: url("/otsweb/js/common/iepngfix.htc") }
</style>

</head>
<body>

<script src="/otsweb/js/common/jquery-ui-1.8.2.custom.dialog.min.js?version=2.0"
type="text/javascript"></script>

<script src="/otsweb/js/common/pop_message.js?version=2.0"
type="text/javascript"></script>
<div class="conWrap" >
<div id="menu_w" class="menu_w" >
<div id="menu_left" class="menu_left">
<ul>
<li><a href="/otsweb/order/querySingleAction.do?method=init" class="n_on" target="main"><cite>车票预订</cite></a></li>
<li><a href="http://dynamic.12306.cn/TrainQuery/leftTicketByStation.jsp" class="n_out" target="main"><cite>余票查询</cite></a></li>

<li name="horverLi"><a href="#" class="n_out"><cite>列车时刻表查询</cite></a>
<p style="width:135px">

<a href="http://dynamic.12306.cn/TrainQuery/trainPassStationByTrainCode.jsp" target="main">车次查询</a>
<a href="http://dynamic.12306.cn/TrainQuery/trainInfoByStation.jsp" target="main">发到站查询</a>
<a href="http://dynamic.12306.cn/TrainQuery/ticketPriceByStation.jsp" target="main">票价查询</a>
<a href="http://dynamic.12306.cn/TrainQuery/middleStation.jsp" target="main">中转查询</a>
<a href="http://dynamic.12306.cn/TrainQuery/passTrainInfoByStation.jsp" target="main">车站经过车次查询</a>
</p>
</li>

<li><a href="http://dynamic.12306.cn/map_zwdcx/CCCX.jsp" class="n_out"  target="main"><cite>正晚点查询</cite></a></li>
<li><a href="http://dynamic.12306.cn/TrainQuery/sellTicketStation.jsp" class="n_out"  target="main"><cite>客票代售点</cite></a></li>
<li><a href="http://dynamic.12306.cn/TrainQuery/TrainInfoByCity.jsp" class="n_out"  target="main"><cite>铁路旅程规划</cite></a></li>
</ul>
</div>

<div class="menu_r">
<ul>
<li class="menu_sline"><a href="/otsweb/loginAction.do?method=initForMy12306"  class="n_out" target="main"><cite>我的12306</cite></a></li>
<li id="login_out"><a href="/otsweb/login.jsp" class="n_out" target="main"><cite>登录</cite></a></li>

<li id="username_"><a href="/otsweb/registAction.do?method=regitNote" class="n_out"  target="main"><cite>注册</cite></a></li>

</ul>
</div>
</div>
<script>
$(function(){
//if(!$.browser.msie){
//	alert("非常抱歉,系统目前暂不支持您的浏览器!");
//}
$('.menu_left ul li[name="horverLi"]').hover(
function(){
$(this).find('p').stop(true,true).show();
},function(){
$(this).find('p').stop(true,true).hide();
});
});

$("#menu_w a").bind("click",function(){
$("#menu_w a").attr("class","n_out");
$(this).attr("class","n_on");
});
function hideMenu(){
$("#menu_w").hide();
doIframe() ;
}
function showMenu(){
$("#menu_w").show();
doIframe() ;
}
function clickMenu(title){
$("#menu_w a").each(function(){
if($(this).find("cite").length>0){
if($(this).find("cite")[0].innerHTML == title){
$(this).click();
}
}
});
}

function hasLogin(_name)
{
$("#username_ a").attr("href","/otsweb/sysuser/user_info.jsp");
$("#username_ a > cite").html(_name);
$("#login_out a").attr("href","/otsweb/loginAction.do?method=logout");
$("#login_out a > cite").html("退出");
}

//退出登录
function notLogin(){
$("#username_ a").attr("href","/otsweb/registAction.do?method=regitNote");
$("#username_ a > cite").html("注册");
$("#login_out a").attr("href","/otsweb/loginAction.do?method=init");
$("#login_out a > cite").html("登录");
}

$(document).ready(function(){
var iframeForwardUrl = "";
if (iframeForwardUrl != ""){
$("#main")[0].src=iframeForwardUrl;
if(iframeForwardUrl == "http://dynamic.12306.cn/TrainQuery/leftTicketByStation.jsp"){
clickMenu('余票查询');
}else if(iframeForwardUrl == "http://dynamic.12306.cn/TrainQuery/trainPassStationByTrainCode.jsp"){
clickMenu('列车时刻表查询');
}else if(iframeForwardUrl == "http://dynamic.12306.cn/TrainQuery/ticketPriceByStation.jsp"){
clickMenu('列车时刻表查询');
}else if(iframeForwardUrl == "http://dynamic.12306.cn/TrainQuery/sellTicketStation.jsp"){
clickMenu('客票代售点');
}else if(iframeForwardUrl == "http://dynamic.12306.cn/map_zwdcx/CCCX.jsp"){
clickMenu('正晚点查询');
}

}else{
$("#main")[0].src="/otsweb/loginAction.do?method=init";
}
});
</script>
<div class="enter_w" style="width:960px">
<iframe id="main"
name="main" frameborder="0" class="autoHeight"
width="100%"
scrolling="auto"></iframe>

<iframe id="ictiframe" src="" style="height:0px;width:0px;diapay:none"/>

</div>
</div>
</body>
</html>

<script language="javascript">
var message = "";
var messageShow ="";
var flag ='null';
if(messageShow != ""){
if(flag == 'u'){
$("#messageUp").css({display:"inline"});
document.getElementById("messageUp").innerHTML = message;
}else{
$("#messageDown").css({display:"inline"});
document.getElementById("messageDown").innerHTML = message;
}
}else{
if ( message != ""){
alert(message);

}

}
</script>


请原谅我一开始就贴这么一大段代码。

我看不到后台代码,也无法分析其架构。但是我有代码洁癖,就看这点代码,恶心的够呛。

1 规范性

<link  href="/otsweb/css/style.css" rel="stylesheet"  type="text/css"/>
<link  href="/otsweb/css/contact.css" rel="stylesheet"  type="text/css"/>
<link href="/otsweb/css/validation.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="/otsweb/css/easyui.css"/>
<link rel="stylesheet" type="text/css" href="/otsweb/css/suggest.css"/>
同样引用 css,为啥写法不一样啊?

<script type="text/javascript" src="/otsweb/js/common/iepngfix_tilebg.js?version=2.0"></script>
<script src="/otsweb/js/common/jquery-1.4.2.min.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/autoHeight.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/jquery.bgiframe.min.js?version=2.0" type="text/javascript"></script>
<script src="/otsweb/js/common/jquery.easyui.min.js?version=2.0" type="text/javascript"></script>
这段要引用这么多 js 脚本,书写也是混乱的,

iepngfix_tilebg
这个是为了 6.0 不支持PNG的js吧。jquery 自己就可以搞定啊,还要添足干啥?

<script src="/otsweb/js/common/jquery-ui-1.8.2.custom.dialog.min.js?version=2.0"
type="text/javascript"></script>

<script src="/otsweb/js/common/pop_message.js?version=2.0"
type="text/javascript"></script>
要是我看到程序员把这样的引用放在body里面,我一定骂个狗头喷血。

//if(!$.browser.msie){
//	alert("非常抱歉,系统目前暂不支持您的浏览器!");
//}
没用的代码,干嘛不删除?

if(flag == 'u'){
$("#messageUp").css({display:"inline"});
document.getElementById("messageUp").innerHTML = message;
}else{
$("#messageDown").css({display:"inline"});
document.getElementById("messageDown").innerHTML = message;
}
这段特别搞笑,写代码的人难道不知道 jQuery的 “$”是干啥用的么? 还混着用了。

二 CSS 优化

看看 这个页面引用了多少CSS,都有用么?CSS 压缩了吗,规范化了吗。

三 iframe 嵌套

订票的首页 居然嵌套了三层iframe。什么目的,我没懂

四 一个登录页面居然发生了三十次请求,我们也看得出订票系统硬件系统相当强大。



五 简单的破坏一下

在密码的地方输入 and 1=1 , 或者 输入一个 select * from 一类的 看看会出现什么奇迹?

这个留给大家做实验吧。

时间仓促,有空再深入研究其代码质量吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: