常见的网站功能需求及解决方案

?  站点访问量与浏览量的数据统计

解决方案:要实现这个功能,最简单的办法就是借用其他网站提供的功能。

介绍我用过的3个站点:AmazingCountersFlagCounter51.la

  • Amazing Counter

缺点

功能比较单一;

对统计的目标站点“刷新”一次就会增加一个访问量,因此它统计的数据只能作为参考;

一个账户仅提供一个计数id(即如果你想分别统计两个站点(或页面)的访问量是需要两个账户才可以);

优点

最切底的免费!

  • Flag Counter

缺点

功能就比Amazing Counter丰富一些,它主要是针对目标站点来自全球不同地区访客的访问数据统计;

更高级的功能需要收费;统计的数据没有进行图形化处理(即仅展示统计数据);

一个账户仅支持一个统计id;

优点

可以快速发现国际友人对你站点的访问;

  • 51.la(国产的呦!)

缺点

熟练操作使用是需要的学习帮助文档;

优点

站点访问量的统计方法比较准确;

全部免费;

一个账户可以实现多个统计id;

可以为同一个账户分配独立管理和独立查看的密码;

?  站点内显示时间

解决方案:一般来说,我们可以通过JS程序或其他网站提供的功能来实现站点内显示时间。

  ★  使用JS程序

实现代码

<script>
    document.writeln("<mark>当前时间日期</mark>&nbsp;<span id=‘showTime‘></span>")
    var nowDate, theDate, theYear, theMonth, theWeekDay, theHour, theMin, theSec;
    function getDate() {
        nowDate = new Date(); //获取Date的对象
        weeks = new Array(‘日‘, ‘一‘, ‘二‘, ‘三‘, ‘四‘, ‘五‘, ‘六‘);   //使用中文表示星期更适合

        theDate = nowDate.getDate();
        theYear = nowDate.getFullYear();    //
        theMonth = nowDate.getMonth() + 1;      //JS中1月份的序号为0,因此要输出实际的月份应加1
        theWeekDay = weeks[nowDate.getDay()];  //JS中星期天的序号为0,星期一的序号为1,因此用数组重新定义;
        theHour = nowDate.getHours();
        theMin = nowDate.getMinutes();
        if (theMin < 10)theMin = "0" + theMin;  //不满10的,前面加0
        theSec = nowDate.getSeconds();
        if (theSec < 10)theSec = "0" + theSec;
        var timeValue = theYear + "年" + theMonth + "月" + theDate + "日 " + "星期" + theWeekDay +" "+ theHour + ":" + theMin + ":" + theSec;
        document.getElementById("showTime").innerHTML = timeValue;
        setInterval(getDate, 1000);
    }
    getDate();  //调用函数
</script>

?  站点内输入栏位的检查(包括输入框和下拉列表选框)

解决方案:该需求的解决同样可以利用JS控制实现。

  ★ 输入框的检查

a. required的实现办法

b. JS实现

<form>
    <input type="text" onblur="check(this.value,this)">
</form>
<script>
    function check(inputContent,it) {
        if (inputContent == "") {
            alert("请填写此栏位!");
            it.focus();     //关闭提示框之后自动将焦点移回输入框
        }
    }
</script>

★ 下拉列表框的检查

<form>
    <select onblur="mustChoose(this.options[selectedIndex].text,‘Select a Brand...‘,this)" title="Brand Selection">
        <!--this 是个好东西,注意选项text文本的获取-->
        <option>Select a Brand...</option>
        <option>BMW</option>
        <option>BEN</option>
        <option>FORD</option>
    </select>
</form>

<script>
    function mustChoose(selectName, itemName, it) {
        if (selectName == itemName) {
            alert("Please select a Brand! ");
            it.focus();
        }
    }
</script>

?  站点内单击某个项目时(如下拉列表框)动态显示说明文字

解决方案:看示例!

  ★ 下拉列表框  的文字说明

<form>
    <select size="1" name="selectThing" onchange="Choose(this.options[selectedIndex].text)"
            title="Brand Selection">
        <!--this 是个好东西,注意选项text文本的获取-->
        <option>VOLVO</option>
        <option>BMW</option>
        <option>BEN</option>
        <option>FORD</option>
    </select>
    <label><textarea cols="20" rows="5" id="introTxt">Introduction...</textarea></label>
</form>

<script>
    function Choose(selectProduct) {
        switch (selectProduct) {
            case "VOLVO":
                document.getElementById("introTxt").innerText = "A car from Switzerland!";
                break;
            case "BEN":
                document.getElementById("introTxt").innerText = "A car from Germany!";
                break;
            default:
                document.getElementById("introTxt").innerText = "A car from Others!"

        }
    }
</script>

★ 下拉列表框  的图片说明

解决方案:其实这个功能实现的关键在于把文字说明,替换成图片。因此我们仅需要改变最终判断结果的处理代码,就可以。

//关键语句document.getElementById("idName").innerHTML="<img src=‘imagePath‘/>"
//使用innerHTML实现图片的添加

?  站点内的表单信息直接发送到指定邮箱

解决方案:使用form表单action属性可实现该功能。

示例

<fieldset>
    <legend>车辆统计表</legend>
    <form method="post" action="mailto:[email protected]?subject=carInfo">
     <label>
Brand<input type="text" name="Brand" list="carOp">
    </label>
        <datalist id="carOp">
            <option>VOLVO</option>
            <option>BWM</option>
            <option>LandWind</option>
        </datalist>
        <label>Tel<input type="text" name="Tel"></label>
        <label>Type<input type="text" name="Type"></label>
        <input type="submit">
    </form>
</fieldset>    

?  站点内在表单内禁用“回车键”

需求背景:当浏览者在填写表单时,有意或习惯性的按下回车键,容易使资料“错误地”发送,因此在表单填写时禁用回车键是有一定的必要性。

解决方案:使用if条件对事件进行判断。

fieldset>
    <legend>车辆统计表</legend>
    <form method="post" action="mailto:[email protected]?subject=carInfo" onkeydown="if(event.keyCode==13)return false">                                            <!--红色标注的为禁用回车键的语句-->
        <label>Brand<input type="text" name="Brand" list="carOp"></label>
        <datalist id="carOp">
            <option>VOLVO</option>
            <option>BWM</option>
            <option>LandWind</option>
        </datalist>
        <label>Tel<input type="text" name="Tel"></label>
        <label>Type<input type="text" name="Type"></label>
        <input type="submit">
    </form>
</fieldset>

提示:禁用了表单的回车键,那么表单的提交就只能通过“提交”按钮提交!

?  站点内表单在提交信息期间禁用“提交”按钮

需求背景:在某些情况下,当浏览者单击“确定”(或送出资料)按钮之后,可能会因为网络延迟、服务器处理较慢等问题而造成整个画面停在那里没有反应。有些人可能会因此而再单击“确定”(或送出资料)按钮,日次就可能会造成问题。例如,若该表单是订购产品就可能出现重复定购问题,若该表单是网络银行转帐则可能会出现重复交易的问题。

解决方案:在“确定”(或送出资料)按钮中加入相关如下代码,使单击单击“确定”(或送出资料)按钮后,该按钮就会变成灰色(即禁用状态),也就有效地避免被浏览者再度单击而重复送出表单资料的问题。

onClick="document.formName.submit();this.disable=true"

?  获取站点浏览者的IP地址、ISP名称和使用系统与浏览器类型

解决方案:这类功能可以通过php变成实现,更便捷的办法是借用其他网站提供的这类功能。

(外文提供商)提示内容为英文,在需要这类提示的站点页面内添加如下代码:

<div>
<img src="http://www.danasoft.com/sig/msnsimplifytech.jpg"></div>

?   站点页面内对某个元素的说明

需求背景:我们常用alt属性为网页中的图片作补充说明,但是alt只有在图片加载失败的时候才会显示出来。因此我们就想到title属性,title属性几乎可以用于所有的网页元素,不过,需要注意的是,在不同的元素上设置的位置可能会有所不同。

解决方案:title属性对链接<a>或图片<img>、普通文字<p>、输入框<input type="text">、文本区域<textarea>、都可以直接放入标签内。如下所示

<input type="text" title="这是一个输入框">
<a href="...." title="这是一个链接">

现在主要以单选按钮<input type="radio">为例说下,同类型的标签下,说明文字的设置。

<form>
    <input type="radio" title="选项1">物件A
    <!--仅对单选按钮进行说明,即当鼠标停留在选项对应的文字上无说明-->

    <label title="选项2"><input type="radio">物件B</label>
    <!--对单选按钮和选项对应的文字都进行说明,同时将选项文字与单项按钮关联起来-->

    <input type="radio" title="选项3" id="inputRadio">
    <label for="inputRadio">物件C</label>
    <!--仅对单选按钮进行说明,但将选项文字与单项按钮关联起来-->
</form>

  拓展:

如果说明文字很长,即title的属性值很长,那么阅读起来不是很费劲吗?!因此我们如果能够把说明内容换行那么就会比较美观些!这时候就需要用到了内码‘&#10’来实现帮助文字换行,而不是在代码中直接按回车键或者用‘\n’。

<img src="QQ截图20161123095043.jpg" alt="QQ Sceeen"width="200px" height="100px" title="序号:001&#10评价:★★★">
<!--使用内码‘&#10’进行换行显示-->

?   站点页面内禁止复制网页中的元素(或内容)

  获取网页内容最常见的方法之一就是复制网页中的元素(或内容),而复制操作不外乎是先用鼠标或按键选定要复制的元素(或内容)后再进行复制。我们可以三个常见的方法有效的避免浏览者对网页元素(或内容)的复制(包括源代码的查看)。

  办法a. 禁用右键菜单(使整个右键菜单都无法弹出)

实现代码

<body oncontextmenu="window.event.returnValue=false;alert(‘右键菜单已被禁用!‘)">
......
</body>

  评价:这个办法适用的场景不多。而且浏览者可以通过快捷键等照样实现复制、粘贴功能!

   办法b.

实现原理:从选择元素的操作下手,即只要浏览器无法选择网页中的元素,当然也就没办法进行复制。因此,我们需要做到:1.让浏览者不可用鼠标拖拉(drag)、选择(select)网页中的元素;2.让浏览者不可用浏览器“菜单栏”中的“全选”命令,也不可用右键菜单中的“全选”命令;

实现代码

<body onselectstart="return false" onselect="document.selection.empty()" ondragstart="return false">
......
</body>

  评价:这个办法能够比较“温和”地实现网页中元素(或内容)的禁用选中功能,但仍然抵制不了“查看网页源代码”这个指令!

  办法c.将网页源文件加密

我们可以使用常见的JS自带的函数encodeURI与decodeURIencodeURIComponent与decondeURIComponent对网页源文件进行加、解密。

首先得要有加解密的工具哈!我自己写了一个,仅供参考。利用JavaScript函数对字符串进行加密

未完待续...



参考资料

《全民搞网页——博客|个人站|网店|论坛》程秉辉

时间: 2024-07-30 01:58:08

常见的网站功能需求及解决方案的相关文章

网站常见漏洞的危害与解决方案

一.SQL注入漏洞 SQL注入漏洞的危害不仅体现在数据库层面,还有可能危及承载数据库的操作系统:如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不限于: 1.数据库信息泄漏:数据库中存储的用户隐私信息泄露. 2.网页篡改:通过操作数据库对特定网页进行篡改. 3.网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击. 4.数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改. 5.服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支

常见浏览器兼容性问题与解决方案【转】

常见浏览器兼容性问题与解决方案 原文:http://blog.csdn.net/chuyuqing/article/details/37561313/ 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题. 在学习浏览器兼容性之前,我想把前端开发人员划分为两类: 第一类是精确按

大型网站问题的解决方案

大型网站问题的解决方案 大并发 答:可以使用服务分层架构实现,主要使用的技术是负载均衡器. 分层: 单服务器 b. 简单分层 c. 集群(负载均衡集群) 场景模拟: 实现图: ? 负载均衡器常见实现: 硬件:f5 ,立竿见影,效果明显,价格昂贵,主要游戏公司,银行使用,20w左右单台 软件:nginx(七层)和lvs(四层,性能更好) nginx也是一个高性能 lvs 章文嵩 ? 负载均衡算法 轮询:一个一个轮着来,像一个圆环 加权:能者多劳,配置强的完成多的请求 ip_hash:拿用户的IP多

政府网站防篡改解决方案

政府网站防篡改解决方案        互联网的出现,被誉为 20 世纪最伟大的发明,它彻底改变了人们传统的生活方式,对现代社会产生了巨大影响.政府网站已成为政府电子政务的数字门户,是对外宣传国家政策法规的手段,是与社会大众交互.向社会大众提供服务和展现国家民主政治的重要窗口.随着网站数量不断增加,与之相对应的是网站受攻击的情况也越来越多.网站被攻击的各类情况中,网站页面被篡改事件给政府带来的影响尤其恶劣,影响面最广.尤其是含有政治攻击色彩的篡改,会对政府形象造成严重损害. 2006 年 3 月

常见的网站攻击方式和防护方法(小白通俗篇)

作为站长兢兢业业的编辑推广,辛辛苦苦才收点广告费,网站流量大了便会时常面对黑客的攻击,我的网站遭遇了两次因攻击死亡或瘫痪的经历,第一次是织梦CMS被博彩整站篡改网站死亡,第二次是刚刚经历的流量攻击网站多次瘫痪流量波动,故总结下常见的网站攻击方式和防护方法,以供自己和大家参见,因安全这方面我也是小白,这里以小白看得懂的语言分类编写,如总结有误或不足,望大神们不吝赐教. 第一种:网页篡改 攻击描述:针对网站程序漏洞,植入木马(webshell.跨站脚本攻击),篡改网页,添加黑链或者嵌入非本站信息,甚

几个常见的网站seo误区,你注意过没?

今天,沈老师就和大家谈谈常见的网站seo优化误区有哪些? 网站seo优化一:各种标签滥用做网站seo优化的站长都知道,每个网页有且只有一对h1标签,这里就有很多优化人员,就把图片放在h1标签中,认为这样做能加强图片的ALT属性的权重,其实,做这个并没有实际意义,因为用户在浏览网页的时候是看不出来的.当然,还有不少人员给图片加上加粗的标签,用户在网页都是看不出什么变化的,而搜索引擎蜘蛛读取代码也猜不出来有何意义,这里做这些操作在一定程度上还会造成搜索引擎蜘蛛被搞糊涂,从而影响到网站正常的排名. 网

常见浏览器兼容性问题与解决方案

1 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题. 2 3 在学习浏览器兼容性之前,我想把前端开发人员划分为两类: 4 5 第一类是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这

极度危险而常见的网站安全漏洞

最近处理了公司外网项目的两个安全漏洞,很常见,也很危险. 一.反射型跨站脚本漏洞 漏洞风险: 可以在嵌入攻击脚本,一旦在用户浏览器中加载页面,就会执行此脚本.可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务. 举例说明: 通过程序参数输出传递的参数到HTML页面,则打开下面的网址将会返回一个消息提示: http://***.com/xss/message.jsp?send=Hello,World! 输出内容:Hello,

常见B2C网站购物车的设计

对于大部分B2C网站来说,购物车是网站的咽喉之地,订单是白花花的银子,所有银子都必然流经购物车,购物车不能有失.优秀的购物车设计至少需要完成两项使命:一是方便用户多买货多掏银子:二是帮用户保管好待购的货品,方便下次接着掏银子. 购物车是个较复杂的系统,一般会跟订单.商品.库存.会员和促销等模块有暧昧关系,也算是牵一发而动全身.所以,在不了解购物车前,不宜轻易的指挥你的程序员修改购物车. 说了这么多,进入正题.本文较长,请耐心观看. 什么叫购物车,有何作用? 传统的购物车一般指超市中顾客去结算前暂