分类 网页与编程 中的文章

VgotFaster 路由转换功能

今天给我的 VgotFaster 框架增加了路由转换功能,特记录一下,写下方法中的核心部分。

下面是路由中的配置:

  1. $routes = array(  
  2.     'readid/(\d+).html' => 'test/route/readid/$1' 
  3. ); 

路由类中转换方法核心部分:

  1. preg_match_all("|^$exp$|",$uri,$export,PREG_SET_ORDER);  
  2.  
  3. if(isset($export[0]) and count($export[0]) > 1) {  
  4.     unset($export[0][0]);  //卸载解释出的原值,preg_match_all [0][0] 为匹配的原值,之后为匹配出的值  
  5.       
  6.     $replace = $replaceTo = array();  
  7.     foreach($export[0] as $key => $replaceVal) {  
  8.         $replace[] = '$'.$key;  //$1  
  9.         $replaceTo[] = $replaceVal;  
  10.     }  
  11.     return $route = str_replace($replace,$replaceTo,$route);  
  12.       

最主要是依靠 preg_match_all 进行正则匹配并且解出其中的值,然后使用 str_replace 对 $1、$2.. 进行替换。

就是这么简单。

Pader 2009-9-26 0

VgotFaster 开发,解决所有类库,模型相互间的继承问题

前些日子说到开发的 VgotFaster PHP 框架已经因继承问题拖下N天了,最近仔细研究了 CodeIgniter 的源码,我在想是不是我使用 CI 框架导致思想受 CI 的制约了,为啥非得参考 CI 呢。通过研究 CI 得出了其对于类库和属性在控制器和模型之间的继承方法,然后再经过一翻改进 VgotFaster 在类库,模型,视图,模板引擎和配置里的自动载入完全解决了,现在可以说框架已经成形了,剩下就是各种功能类库和辅助函数的增加以及相关提示的增强啦,这次是真的了。
演示:http://www.vgot.net/new_vgot/
这是用 VgotFaster 制作的站,虽然只用到了模板引擎啦。这个界面也将会是我的新首页,不过有时候我总是会很懒r。。。

Pader 2009-9-10 0

提升网站设计品质的8种布局方案

网页设计中,内容组织恐怕是最至关重要、最影响设计品质的方面了。如何将信息组织到好的布局中,是一个网站的基础,并且应该在考虑外观之前就决定好。没有好的布局,网页信息流就不能正确传递,所有东西都不能建立起合理的联系。

在这篇文章中,我们将讨论八个布局解决方案/技巧, 这些方案和技巧将有助于你创建整洁有序的内容布局。这八个技 巧包括滑门(sliders)、标签式、渐进布局(progressive layouts)、结构网格、模态窗口(modal window)、翻转元素、手风琴效果(accordions)以及超大下拉菜单(mega drop-down-menus)。

 

1. 滑动样式与传送带(Sliders and Carousels)

滑 门(Sliders),也可称为传送带(carousels),是一种有序的、交互性强、十分平滑地展示内容的方式。滑门样式是一个非常流行的技 巧,大家都觉得它很好用,能让你在固定的区块内填充上大量内容。没有滑门的帮助,这些内容可能就要分开放到页面中的各个地方。而大多数时候,你在使用页面 空间时总是捉襟见肘。或者,有些内容是你希望“用户要求”后才出现。这有助于让用户一次只关注一个内容区块,也符合他们自己的便利需求。

滑门样式的实例

导航区提供缩略图与图标
运用滑门和幻灯样式时,最好在导航区提供图标或缩略图,以便使导航更加简单直观。缩略图和图标给用户指出明路,向他们解释当前所在位置,以及有哪些浏览选项可供选择(比如说幻灯片的导航可以是水平的,也可以是垂直的)。另外,还能方便他们快速选择特定滑门页。

Coda网站的 滑门顶部设 计了标签卡,他们使用的是“滑动门+标签卡”的混合样式。这个主意绝顶聪明,因为通过看缩略图,用户就能快速得知特定滑门页的内容。而且,这些图标也提供 了强大的、令人印象深刻的、干净整洁的视觉支持。除了图标和标签你也可以在标题前加上小图片, 或者只用数字也行。

Screenshot

用于展示产品的滑门样式
与上面的例子对应,滑门不仅能用于大容量信息的组织,也能为用户浏览大量产品条目提供方便。 SourceBits (见下图)使用了多层滑门(一个水平的,一个垂直的),用唱片封面作为导航条目。

水平滑门两端都有大的圆形箭头图标,实时反映左右导航的可用性。滑动的时候有平滑的动画,用起来非常舒服。同时,你也能看到,各个元素间距都精心设计过,这有助于内容组织,也提升了可用性。鼠标滑过时,每个条目还有漂亮的聚光灯效果。

Screenshot

垂直滑动的内容以及超大的水平“点击条”
接下来看看 QuickSnapper 的滑门。这是一个完美融入页面整体布局的十分好用的垂直滑门。滑门内容中有大量截屏图,内容被有序地组织起来。这个滑门最赞的地方就是上下方的按钮导航。按钮宽及整个滑门,大的按钮让“推拉”滑门更加容易。

还有,这些按钮的:active和:focus效果也很漂亮。

Screenshot

滑门脚本

你可以参考下面的脚本、技巧和教程制作你自己的滑门:

2.标签卡导航元素

本 质上标签卡导航和滑门效果是差不多的技巧。它们都能帮你把一大片内容放到一小块区域里。标签卡导航很常见,但也有很多不常见的运用方式。我们这里 关注的是在一个页面内部的标签卡,而不是用于在不同页面之间跳转的标签样式主导航。标签卡很明显地将内容划分到不同区块,最终又把他们融合到占地面积很小 的一个区块中。

标签卡的样式范例

出众的背景,大的可点击区域,明显的分割
第一个例子来自 Mac Pro网站 的“Performance”部分,其标签元素的组织非常值得学习。这些标签卡上的文字都十分易读,可点击区域很大,各标签视觉上的区分也很明显,这正是 大部分用户期待的样式啊。你也应该能注意到,当前标签卡上还有着十分微妙的渐变背景,与主内容区块很好地融合在了一起。未激活的标签背景则略暗,主内容区 块在其上有微弱的投影,这种做法加强了深度感和立体效果。十分简单而有效的技巧。

Screenshot

按钮区分的简洁标签卡
以下是另一个利用标签卡紧凑地展示信息的实例。根据 Atebits 的布局结构,介绍性内容的空间被挤压,不太适合做成多区块样式。所以他们介绍内容的三大部分被组织到了标签中,保持了布局的整洁有序。再一次地,当前标签 卡的背景与主内容区融合,不活动标签卡则是较暗的灰色背景。你同样也会发现标签卡之间有着漂亮的分割线,使得每个标签卡看起来都像是独立的按钮。

Screenshot

为整个标签集提供清晰的分割线
Fontcase 的标签卡设计也很精妙,很有现代感。尽管在未激活标签之间没有分割线,当前标签却有明显的边线。你也能注意到,在整个标签集的上方和下方各有一条边线。标签卡使用了图标与留白来突出文字,提高了易用性。

Screenshot

标签卡效果脚本

3. 模态窗口

模态窗口(Modal windows),或者称为浮窗,一般用于在空间紧张的页面中展示额外信息。在模态窗口中,你可以放置放大版的图像、额外内容、警告/提示信息、视频等等。用模态窗口展示信息时,记得要同时明确地提示用户如何关闭它。

同时,用于打开模态窗口的链接、缩略图、图标或者其他图形元素,一定要保证与模态窗口要展示的内容有足够的关联。相似的图标、摘要、图形元素都能帮助用户建立原始链接与打开的窗口的联系。

模态窗口的例子

运用到登录和注册流程中的浮窗
模 态窗口最典型的运用就是登录/注册窗口了(与诸如图像、音频、视频、Flash等“传统”媒体文件相比)。登录和注册表单不是用户每次浏览页面都要用到 的必要部分,所占页面空间理所应当被节约下来。而使用浮窗,则又为用户省去了重开一个页面的时间,毕竟这只是一个很简单的非常用动作。他们能在网站的任何 页面中登录/注册,而不用中断现有流程——只要网站的设计者能提供基于Ajax的“静悄悄的” 登录/注册。

Grooveshark 整个站点的每一个页面中,这个漂亮的登录窗口都触手可及。注意,点击登录( Lodin> )按钮后并不会载入一个新页面,而是直接把注册表单替换成了登陆表单(使用了手风琴效果)。非常方便,非常友好的用户界面。

Screenshot

消隐页面/使用投影
如 果要使用模态窗口,让窗口下面的页面淡出焦点十分重要。你可以用半透明背景覆盖或者为窗口添加投影,或者两者结合。这么做有两个作用:一是能让用户将注 意力集中到浮窗上,然后暂时忽视掉背后的页面。另外,也能增加窗口和页面之间的深度感和区分度,让人在视觉上觉得这窗口确实是漂浮着的。注意看下面的例子 (KissMetrics),半透明的黑色背景让页面消隐,有助于登录浮窗暂时成为视觉重点。另外,取消和关闭窗口的按钮也设计得很好,够明显,够漂亮。

Screenshot

RealMacSoftware 的浮窗只做了投影,而没有让整个页面消隐。只要深度感和区分度做得足够,这样也很有效。

Screenshot

模态窗口的脚本

4. 翻转元素 Rollover Elements

翻转元素目前被越来越多地运用于商业网站、作品集站点和产品展示页。翻转元素的核心概念就是当用户鼠标移到某个按钮或网页元素上时,处于另一个布局区域的元素就自动显示出来。请看下面的例子深入了解我说的“翻转元素”究竟是什么。

翻转实例

标签卡翻转
下图是 Miro主页 的截屏,他们设计了一个十分精妙的巨大翻转元素。这 本质上和滑门类似 —— 只不过内容切换时不需要点击罢了。

Screenshot

小地方的微妙翻转
TaoEffect 向我们完美展示了如何通过设计精巧漂亮的翻转元素来添加清爽整洁的额外信息(这种效果最早是应用于前文提到过的Coda网站,但我们选择了TaoEffect作为这一节的实例)。信息的展示十分友好,您只需要把鼠标移到按钮上即可。

访问网站你会发现,翻转时有非常轻柔的动画,垂直跳动 + 淡入淡出。你应该也能注意到它的背景是半透明的,跳出来的卡片边缘还有高光和投影,与背景很好的区分开来。

Screenshot

内容地图上的翻转元素
OneHub 则利用翻转元素实现了另一种效果。这个页面有点像地图,在不同区域做出了标注。鼠标移到标注上时,会显示该标注的额外信息。这种方法用在需要分区域详细解释的产品介绍页上将有特效。

Screenshot

与幻灯切换结合的翻转元素
另一个蛮有趣的设计来自 SquaredEye —— 他们在导航按钮上用翻转元素来展示下一页内容的预览图。

Screenshot

小提示/翻转元素的脚本

5. 渐进布局Progressive Layouts

“渐进布局”的意思是站点内容按照一定的顺序一块一块地显示给用户。这种组织内容的做法比较反常,但也能在很多网站上看到。渐进布局能帮助用户更容易地深入一长串信息。

渐进布局的实例

整个站点都由渐进布局构成
Sursly.com(貌似被墙,请点击这里代理访问) 的整个作品集站点都基于渐进布局。您应该能注意到,页面右上角有一个“GO”按钮,每一页面都是从上一页面中的GO按钮链接过来的。这种页面之间的渐进系 统代替了传统的导航和菜单。当然,这样做也有一个很明显的缺点:导航的交互性下降了,用户只能按照网站建设者想要的顺序获取内容。(译注:还有一个缺点是,在不同分辨率屏幕上的显示差异太大,因为你必须考虑到页面内部各区块的位置问题)

尽管单个页面布局能被存为书签(使用# 锚记),但对于随机访问者来说,则无法通过一个明晰的导航对站点内容建立起直接的整体感知。而且,这种布局一般只有一个“航向”,从易用性的角度上来说,所谓“导航”的概念在这里几乎不能适用。

Screenshot

译注:这种水平布局的网站大都采用了渐进布局。和上面的站非常类似的一个网站是: peter-pearson.com 相对于简单的滚动,这个站还在背景里做了非常可爱的线条,十分漂亮。另外推荐 26个水平布局网站设计,在英文原文的留言里还有很多bonus可看。

垂直方向的渐进布局
Danny Blackman 的作品集也是仅通过一张渐进式布局页面来实现的。各块元素相互独立,在一张页面上垂直展示。相邻元素之间有滚动按钮,每个元素都有返回顶部的按钮。菜单或所谓导航还是没有被使用。

Screenshot

译注:推荐一个做得更好的例子:searchinsidevideo.com 他们使用了固定在顶端的导航,字体也非常大的,极富视觉冲击力,用起来也很方便。

ScrollTo 脚本

  • ScrollTo – 使用这个jQuery插件,就能轻松建立渐进式布局。

6. 网格

讨 论布局的文章是不可能避开网格不谈的。网格通常被认为是任何平衡、有序、简练的网页布局的基础。很多设计师都认为网格是处理信息容量很大的页面时 的必备武器。有时候单独使用网格就能很好的展示信息,甚至不需要其他技巧。好的网格能够将一个页面中的全部内容都整合进流动布局里,而内容的可读性,或者 如果用户想快速浏览,都不会受到影响。

下面的网站使用了严格的网格布局。整个站点只有一张页面,需要融入大量信息。不过,全部信息被整合进这整洁的两栏布局网格中。整个布局严谨、强健、稳固,留白恰到好处。浏览或仔细研读内容都非常方便。

Screenshot

使用不同背景区分网格区域
使用网格一般是因为你需要在一个很紧凑的区域内放置大量内容。你想要创建整洁有序的网站布局,但是又不能随意添加很多留白来区分区块。如此的话,你就需要使用不同背景来区分网格区域。没了网格间的大量留白,只要网格内还有少量的内边距,也可以看起来很不错。Valleycreek.org 就用了这种战术,尽管已经有一条细线来分割网格区域,背景色的差异还是被用到,以提供更明显的区分。

Screenshot

网格生成器、模版和更多工具

7. 手风琴效果(折叠菜单)

折叠菜单和滑动门以及标签卡涉及同一个概念:把大量信息压缩到一小块区域里。“手风琴效果”指的是一些被水平或垂直组织的区块,通过点击,一个内容区块滑向另一个区块,并将其内部内容展示出来,和手风琴的推拉过程有点相似。

手风琴效果的实例

功能性和大点击区域
Alex Cohaniuc 的手风琴菜单设计的很好。把作品项目藏到手风琴里是的做法其实挺有道理的,因为这能把每个项目的不必要信息隐藏起来,等访客有需要的时候再显示。说这项设 计好是因为:一,每块画布的标题都很大,很好点击;二,每块标签卡都使用了一个小箭头来反映开合状态;三,鼠标滑过时,当前标签卡有将它区分出来的不同背 景色。

Screenshot

水平内容滚动
Jason Reed 使用手风琴将整个站点糅合进一张页面里。他没有赋予手风琴以特别不一般的视觉特征,而是让它融入了页面之中。另外,这是一个水平方向推拉的手风琴(尽管标 签卡是垂直方向的)。请注意看他的标签卡,每个标签卡之间的距离很大,这些标签卡,或者说标题,并不像上一个例子有那么明显的区分,设计师利用了留白来将 它们各自独立。鼠标移上去的时候,这些十分易读的标签就会变成橙色,让用户能够非常明确地了解到自己将要点击的标签后面都有什么。

Screenshot

包含图像和信息的手风琴
Marius Roosendaal 使用另一个非常漂亮的手风琴来“储藏”他的作品图像。与上面两个例子一样,每一个内容区块都是一个项目的展示。不过,此例的手风琴里的每个图像还附加有一 些文字介绍。你能注意到一个小按钮被用来显示/隐藏介绍。他同时也提供到更详细介绍或者更大预览图的链接。在一个小小的手风琴里当然不能塞进特别特别多的 信息,所以如果可以的话,还是尽量给每个项目都加上到详细内容的链接吧。

Screenshot

手风琴脚本

8. 超大下拉菜单

导 航不一定非得是几个简单的超链接组合。最近,导航设计有一个流行趋势:不仅仅提供“航向”选择,也提供网站内各“终点站”位置以及“终点站”之间 的从属关系。所谓“超大”下拉菜单常见于电子常务网站,用于展示他们庞杂的商品分类。这种样式正成为设计趋势,因为它能通过普通的翻转就提供大量分类信 息,而不需要用户额外的点击。

超大下拉菜单的实例

超大下拉菜单的一个经典例子是 Ruby On Rails Guide 的Guide Index。这个菜单提供了一个组织良好、样式精美的二级导航。注意,与一般的做法不同,激活二级菜单需要用户点击,Guide Index右边有“切换” 图标,并且有着与将要弹出的二级菜单相融合的背景色。弹出的二级菜单也有细微的投影。

译注:这站点在IE的Quirks模式下有显示异常……(话说显示不异常的页面还基本上没有……)

下面的截图里的投影,我也看不到……

Screenshot

带更多信息的多级菜单
Porsche 对于上面说到的技巧来说,简直是一个完美的例子。Porsche 的主页提供一个多级菜单,让用户不用一次点击就能快速了解他们生产的所有汽车。第三级菜单中,所选汽车的信息被直接提供:包括图片、许多链接、以及其他关 于本车的快读信息。当然,这个更大的区块就是一个巨大的可点击区域。所有细节和特别介绍都直接链到相应页面。要了解究竟是怎么回事,就点击下面的图片自己 去看看吧!

Screenshot

在下拉列表里显示搜索结果
最近还比较流行的一个技巧和上面谈到的有点类似:在下拉列表里显示搜索结果。 Media Temple Knowledge Base 就使用了这一技巧。他们没有使用一个新页面来显示用户的搜索结果,搜索结果在一个下拉列表里随着你的输入而实时变化。不过,请注意,完整搜索结果页的链接仍然存在,您若要在自己的设计中使用这种设计,还请不要忘记这一点。

Screenshot

在下拉区块中显示额外信息
Gateway.com 继续登场。你能看到他们在顶部菜单中使用了超大的下拉区块来展示产品。下拉区块中的产品排列组织得非常好,图片提供了强健的视觉支持。这个菜单还提供了诸 如价格和屏幕尺寸等额外信息,让顾客能够在查看具体页面之前就有所选择。因为很多人都很关心产品价格——至少对于很多有购买需求的人来说。

Screenshot

Pader 2009-8-28 0

高级PHP应用程序漏洞审核技术

[目录]

1. 前言
2. 传统的代码审计技术
3. PHP版本与应用代码审计
4. 其他的因素与应用代码审计
5. 扩展我们的字典
  5.1 变量本身的key
  5.2 变量覆盖
    5.2.1 遍历初始化变量
    5.2.2 parse_str()变量覆盖漏洞
    5.2.3 import_request_variables()变量覆盖漏洞
    5.2.4 PHP5 Globals 
 5.3 magic_quotes_gpc与代码安全
    5.3.1 什么是magic_quotes_gpc
    5.3.2 哪些地方没有魔术引号的保护
    5.3.3 变量的编码与解码
    5.3.4 二次攻击
    5.3.5 魔术引号带来的新的安全问题
    5.3.6 变量key与魔术引号
  5.4 代码注射
    5.4.1 PHP中可能导致代码注射的函数
    5.4.2 变量函数与双引号
  5.5 PHP自身函数漏洞及缺陷
    5.5.1 PHP函数的溢出漏洞
    5.5.2 PHP函数的其他漏洞
    5.5.3 session_destroy()删除文件漏洞
    5.5.4 随机函数
  5.6 特殊字符
    5.6.1 截断
      5.6.1.1 include截断
      5.6.1.2 数据截断
      5.6.1.3 文件操作里的特殊字符
6. 怎么进一步寻找新的字典
7. DEMO
8. 后话
9. 附录

Pader 2009-8-21 0