js解决各个浏览器的css不兼容问题

如果分别用IE5、IE6、IE7、firefox、google浏览器、苹果浏览器浏览同一个网页,将可能出现不一样的效果。
这是它们之间对CSS的解析选择器不一样或错误和个别bug所导致。为了解决这些浏览器的css不兼容问题。
我们不得不找到一个能平衡于它们之间的解决方法。

如png透明问题在IE5、IE6下无法显示出其效果,我们可能会使用CSS hack或者引入外部JavaScript来实现。譬如前面我提到过用pngfix的那个方法就是调用外部JavaScript来解决在IE5、IE6下png透明问题。当然还有更多的方法。

而现在有种更加完美的方法能兼容IE5、IE6、IE7、firefox、google浏览器、苹果浏览器的CSS选择器解析不一样问题。那就是: ie7 – js

ie7 – js中是一个JavaScript库(解决IE与W3C标准的冲突的JS库),使微软的Internet Explorer的行为像一个Web标准兼容的浏览器,支持更多的W3C标准,支持CSS2、CSS3选择器,使css兼容各个浏览器。它修复了许多的HTML和CSS问题,并使得透明PNG在IE5、IE6下正确显示。

目前该ie7 – js版本: 2.1 beta 4

用法:
直接引用Google Code服务器上的js文件。

IE7.js
使IE5、IE6升级至兼容IE7
注释使Internet Explorer版本号小于7的IE浏览器载入该代码。

<!--[if lt IE 8]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>
<![endif]-->

 

 

IE8.js
使IE5、IE6、IE7支持更多的W3C标准(修复了许多的HTML和CSS问题)。
注释使Internet Explorer版本号小于8的IE浏览器载入该代码,而其它符合标准的浏览器则会忽略该代码,并在IE8出来后不干扰其工作。

<!--[if lt IE 7]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE7.js"></script>
<![endif]-->

PNG
此脚本仅修复了图像命名为:*-trans.png
遗憾的是,此方法透明的PNG图像不能平铺(重复)使用在背景上;也不能用在CSS “position”定位属性上 。

除了直接引用Google Code服务器上的js文件外,如果你愿意你也可以下载然后引入
下载地址页面:http://code.google.com/p/ie7-js/downloads/list

 

演示:
http://ie7-js.googlecode.com/svn/test/index.html

php ODBC连接sqlserver

开放资料链接 (Open Database Connectivity,ODBC) 是链接数据库的共通界面。ODBC 是由微软主导的数据库链接标准,实作环境也以微软的系统最成熟。在 UNIX 系统中,通常要使用其它厂商所提供的 ODBC 界面,有些 UNIX 厂商会自己提供 ODBC 界面 (如 SUN 有为 Solaris 提供 ODBC)。
ODBC 和数据库的查询采用 SQL 语言,这和大部份的数据库查询方式一样,这使得系统可以很容易和各种数据库沟通。当然,透过 ODBC 界面,后端的数据库不一定要 DBMS 这种大型数据库系统,亦可以是资料表 (如 Microsoft Access)、或者是试算表 (如 Microsoft Excel)。

odbc_autocommit: 开关自动改动功能。
odbc_binmode: 配置二进位资料处理方式。
odbc_close: 关闭 ODBC 链接。
odbc_close_all: 关闭所有 ODBC 链接。
odbc_commit: 改动 ODBC 数据库。
odbc_connect: 链接至 ODBC 数据库。
odbc_cursor: 取得游标名。
odbc_do: 执行 SQL 指令。
odbc_exec: 执行 SQL 指令。
odbc_execute: 执行预置 SQL 指令。
odbc_fetch_into: 取得返回的指定列。
odbc_fetch_row: 取得返回一列。
odbc_field_name: 取得字段名称。
odbc_field_type: 取得字段资料类型。
odbc_field_len: 取得字段资料长度。
odbc_free_result: 释出返回资料的内存。
odbc_longreadlen: 配置返回栏的最大值。
odbc_num_fields: 取得字段数目。
odbc_pconnect: 长期链接至 ODBC 数据库。
odbc_prepare: 预置 SQL 指令。
odbc_num_rows: 取得返回列数目。
odbc_result: 取得返回资料。
odbc_result_all: 返回 HTML 表格资料。
odbc_rollback: 撤消当前交易。
odbc_setoption: 调整 ODBC 配置。

odbc_autocommit 开关自动改动功能。
语法: int odbc_autocommit(int connection_id, int [OnOff]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来打开或关闭自动更新 (auto-commit) 功能。参数 connection_id 为 ODBC 链接的 ID 值。参数 OnOff 可省略,表打开或关闭自动改动功能,默认值为 on,欲关闭则设 off。返回值为目前的自动更新状态,若打开自动更新功能则返回 true;若关闭自动更新功能则返回 false。
参考: odbc_commit() odbc_rollback()

odbc_binmode 配置二进位资料处理方式。
语法: int odbc_binmode(int result_id, int mode);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来配置二进位资料返回时的处理方式。受到本函数影响的资料类型有 BINARY、VARBINARY 及 LONGVARBINARY。参数 result_id 为返回的 ID 值,若设为 0,则程序将配置一个新的 ID 值。

参数 mode 为配置的二进位处理方式,有下列的值

ODBC_BINMODE_PASSTHRU 返回二进位资料
ODBC_BINMODE_RETURN 转成十六进位返回
ODBC_BINMODE_CONVERT 转成字符串资料返回

注意: 若使用 odbc_fetch_into(),ODBC_BINMODE_PASSTHRU 会导至返回字符串值都是空的 (empty)。而返回资料最大治募 默认大小为 4096 位组,若要返回更多的资料需使用 odbc_longreadlen()。
参考: odbc_fetch_into() odbc_longreadlen()

odbc_close 关闭 ODBC 链接。
语法: void odbc_close(int connection_id);
返回值: 无
函数种类: 数据库功能
内容说明: 本函数用来关闭与 ODBC 数据库之间的链接。参数 connection_id 为 ODBC 链接代号 ID 值。若正在执行 transactions 则无法关闭链接。

odbc_close_all 关闭所有 ODBC 链接。
语法: void odbc_close_all(void);
返回值: 无
函数种类: 数据库功能
内容说明: 本函数用来关闭与 ODBC 数据库之间所有的链接。和 odbc_close() 一样,若正在执行 transactions 则无法关闭链接。使用本函数不需要使用任何参数。

odbc_commit 改动 ODBC 数据库。
语法: int odbc_commit(int connection_id);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来改动 (commit) ODBC 数据库。参数 connection_id 为 ODBC 链接的 ID 值。若有配置 odbc_autocommit() 成自动改动数据库时,则不需使用本函数。

odbc_connect 链接至 ODBC 数据库。
语法: int odbc_connect(string dsn, string user, string password, int [cursor_type]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来链接到 ODBC 数据库,返回值为链接的代号 ID 值。参数 dsn 为资料来源名称 (Data Sources Name)。参数 user 及 password 分别为链接的帐号及密码。参数 cursor_type 通常省略,其值有 SQL_CUR_USE_IF_NEEDED、SQL_CUR_USE_ODBC、SQL_CUR_USE_DRIVER 及 SQL_CUR_DEFAULT 等四种。当使用复杂的资料存取时可能会有类似 Cannot open a cursor on a stored procedure that has anything other than a single select statement in it 的错误信息字符串,此时若将参数 cursor_type 的值设为 SQL_CUR_USE_ODBC 就可以避开了。
参考: odbc_pconnect()

odbc_cursor 取得游标名。
语法: string odbc_cursor(int result_id);
返回值: 字符串
函数种类: 数据库功能
内容说明: 本函数用来取得打开的 ODBC 数据库游标 (cursor)。参数 connection_id 为 ODBC 链接代号 ID 值。返回值为游标的名称字符串。

odbc_do 执行 SQL 指令。
语法: int odbc_do(int connection_id, string query);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来执行 SQL 的 query 指令。参数 connection_id 为 ODBC 链接代号 ID 值。参数 query 则为欲执行的指令。返回值为 Result ID 值。
参考: odbc_prepare() odbc_execute() odbc_exec()

odbc_exec 执行 SQL 指令。
语法: int odbc_exec(int connection_id, string query);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来执行 SQL 的 query 指令。参数connection_id 为 ODBC 链接代号 ID 值。参数 query 则为欲执行的指令。返回值为 Result ID 值。
参考: odbc_prepare() odbc_execute() odbc_do()

odbc_execute 执行预置 SQL 指令。
语法: int odbc_execute(int result_id, array [parameters_array]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来执行预置在4.36.20 odbc_prepare() 的 query 指令。参数 result_id 为 ODBC 返回 ID 值。参数 parameters_array 通常省略。

使用范例
<?php
$conn=odbc_connect(mydb,,);
$stmt = odbc_prepare($conn, INSERT INTO mytable (jor_from, jor_to) valueS($from$to); );
if (!odbc_execute($stmt)) {
echo 错误;
}
odbc_close($conn);
?>
参考: odbc_prepare() odbc_exec() odbc_do()

odbc_fetch_into 取得返回的指定列。
语法: int odbc_fetch_into(int result_id, int [rownumber], array result_array);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来取得 Query 的返回资料列,并放入数组资料之中。参数 result_id 为 ODBC 返回 ID 值。参数 rownumber 为指定的取得列 (row)。数组参数 result_array 为取得列的资料数组,通常在前面加上 & 符号。例如 vbhunt@silverfox.com 所提供的范例 (27-Sep-1998)
$cols = odbc_fetch_into($QueryID, $RowNum, &$YourArray);

odbc_fetch_row 取得返回一列。
语法: int odbc_fetch_row(int result_id, int [row_number]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来取得 Query 的返回资料的一列。参数 result_id 为 ODBC 返回 ID 值。参数 rownumber 可省略,为指定的取得列 (row)。

使用范例
<?php
$conn = odbc_connect(WebDB);
$query = select user, idno ;
$query .= from userinfo;
$result_id = odbc_do($conn, $query);
while(odbc_fatch_row($result_id)) {
$user = odbc_result($result_id, 1);
$idno = odbc_result($result_id, 2);
echo $user.的身份证字号为.$idno.<br>n;
}
odbc_close($conn);
?>

odbc_field_name 取得字段名称。
语法: string odbc_fieldname(int result_id, int field_number);
返回值: 字符串
函数种类: 数据库功能
内容说明: 本函数用来取得 Query 的返回资料的字段名称。参数 result_id 为 ODBC 返回 ID 值。参数 field_number 为指定的字段,起始值为 1。

odbc_field_type 取得字段资料类型。
语法: string odbc_field_type(int result_id, int field_number);
返回值: 字符串
函数种类: 数据库功能
内容说明: 本函数用来取得 Query 的返回资料的字段资料类型。参数 result_id 为 ODBC 返回 ID 值。参数 field_number 为指定的字段,起始值为 1。

odbc_field_len 取得字段资料长度。
语法: int odbc_field_len(int result_id, int field_number);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来取得 Query 的返回资料的字段资料长度。参数 result_id 为 ODBC 返回 ID 值。参数 field_number 为指定的字段,起始值为 1。

odbc_free_result 释出返回资料的内存。
语法: int odbc_free_result(int result_id);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数可用来释出返回资料所使用的内存,通常在系统内存资源不足的情形下才需要使用。参数 result_id 为 ODBC 返回 ID 值。返回值永远都是 true。

odbc_longreadlen 配置返回栏的最大值。
语法: int odbc_longreadlen(int result_id, int length);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来配置返回资料栏的最大资料值。参数 result_id 为 ODBC 返回 ID 值。参数 length 即为欲配置的长度值,本参数若设为 0,表示不限长度。

odbc_num_fields 取得字段数目。
语法: int odbc_num_fields(int result_id);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来取得返回资料的字段数目。参数 result_id 为 ODBC 返回 ID 值。若发生错误则返回 -1。

odbc_pconnect 长期链接至 ODBC 数据库。
语法: int odbc_pconnect(string dsn, string user, string password, int [cursor_type]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来保持长期链接链接到 ODBC 数据库,即使 PHP 程序结束,链接仍然存在,返回值为链接的代号 ID 值。这对链接负责很重的系统可以加快链接的速度。参数 dsn 为资料来源名称 (Data Sources Name)。参数 user 及 password 分别为链接的帐号及密码。参数 cursor_type 通常省略。
参考: odbc_connect()

odbc_prepare 预置 SQL 指令。
语法: int odbc_prepare(int connection_id, string query_string);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来配置 SQL query 指令。参数 result_id 为 ODBC 返回 ID 值。参数 query_string 即为预设的指令。
参考: odbc_execute()

odbc_num_rows 取得返回列数目。
语法: int odbc_num_rows(int result_id);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来取得返回列的数目。参数 result_id 为 ODBC 返回 ID 值。若有错误发生则返回 -1。

odbc_result 取得返回资料。
语法: string odbc_result(int result_id, mixed field);
返回值: 字符串
函数种类: 数据库功能
内容说明: 本函数用来取得返回的资料。参数 result_id 为 ODBC 返回 ID 值。参数 field 可以是数字类型,代表指定的字段序号 (从 1 开始);亦可以是字符串类型,为指定的字段名称。

odbc_result_all 返回 HTML 表格资料。
语法: int odbc_result_all(int result_id, string [format]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来将取得的资料转成 HTML 的表格 (table) 格式。参数 result_id 为 ODBC 返回 ID 值。参数 format 可省略,为表格的特殊配置值。返回值为资料列数。

使用范例
<?php
$conn = odbc_connect(WebDB);
$query = select item, price ;
$query .= from userinfo;
$result_id = odbc_do($conn, $query);
odbc_result_all($result_id, border=1 width=50%);
odbc_close($conn);
?>

odbc_rollback 撤消当前交易。
语法: int odbc_rollback(int connection_id);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数取消 ODBC 交易处理 (transaction) 对数据库所做的修改。若成功则返回 true,反之返回 false。

odbc_setoption 调整 ODBC 配置。
语法: int odbc_setoption(int id, int function, int option, int param);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来调整 ODBC 的配置值。参数 id 不一定指 connection_id,SQLSetConnectOption() 则为 connection_id;若为 SQLSetStmtOption() 则为 result_id。参数 function 值为 1 表 SQLSetConnectOption();若为 2 则为 SQLSetStmtOption()。参数 option 为配置的选项。参数 param 为配置值。

使用范例
<?
// 例一: 配置为 autocommit,即与 odbc_autocommit($conn, true) 相同。
// 第三个参数值 102 表 SQL_AUTOCOMMIT。
// 第四个参数值 1 表 SQL_AUTOCOMMIT_ON。
odbc_setoption ($conn, 1, 102, 1);
// 例二: 配置查询时间
// 第三个参数 0 表 SQL_QUERY_TIMEOUT
// 第四个参数为最久执行时间,本例设为 30 秒
$result = odbc_prepare ($conn, $sql);
odbc_setoption ($result, 2, 0, 30);
odbc_execute ($result);
?>

精选15个国外最流行的CSS框架

CSS框架通常指的是一些CSS文件的集合,这些文件包括网页的基本布局、表单样式、网格或简单结构、以及样式重置。例如:

  • typography.css 基本排版规则
  • grid.css 基于网格的布局
  • layout.css 通常的布局
  • form.css for 表单样式
  • general.css 更多通用规则

虽然对于小的WEB开发项目来说,CSS框架并不一定适用,但是对于规模较大的团队开发项目而言,CSS框架不仅能加快设计开发速度,而且还能有效解决网站改版中带来的诸多麻烦和问题。这里推荐的15款CSS框架是现在国外最流行的CSS框架,希望能对你的开发有所帮助!

       1 . Elements CSS Frameworks

CSS Frameworks

       Elements 是一个实用的CSS框架。它是为了帮助设计师更快更高效的来写CSS而建立。Elements 已经超越了仅仅作为一个框架,它有自己的项目工作流。它拥有你完成项目所需的所有东西,这也让你和你的浏览者感到愉悦。阅读 概述 了解更多。

       2 . YUI Grids CSS

CSS Frameworks

       YUI Grids基本的YUI网格CSS提供4种预设的页宽、6种预设模板和再分为2、3、4卷的区块的功能。 这个4KB的文件可提供超过1000中页面布局组合。 更多信息

       3 . YAML CSS Framework

CSS Frameworks

Dirk Jesse的强大的(X)HTML/CSS框架为许多的简单或更复杂的网站项目提供完整的默认模板包。YAML基于网页标准并支持所有现代浏览器。所有的 Internet Explorer的主要渲染漏洞都被解决。YAML 完全支持从5.x到7.0的所有的IE版本。

       4 . Blueprint CSS

CSS Frameworks

       Blueprint 是一个CSS 框架,它的目的是减少你的css开发时间。它提供一个可靠的css基础去创建你的项目,BP由一个易用的网格、合理的布局和一个打印样式。

       5 . Schema Web Design Framework

CSS Frameworks

       Schema 是一个为了提供在重复的设计任务中必须的CSS和HTML标签而设计的表现层的网页框架设计。 与为每一个新的网站项目从零开始创建HTMl/CSS不同,Schema提供必要的基础来开始并立马让你的设计跑起来。

       6 . CleverCSS

CSS Frameworks

       CleverCSS是一个用于css的受Python启发的小型的标记语言,它可用于以整洁的和结构化的方式创建一个样式表。在很多方面它都比CSS2整洁和强大。与CSS最明显的区别是句法:它基于缩进而且不单调。虽然这显然违反了Python的规则,它依然是组织样式的很好的主意。

       7 . Tripoli CSS Framework

CSS Frameworks

       Tripoli是一个用于HTML表现的通用css规范。通过重设和重建浏览器标准,Tripoli 为你的网站项目提供了一个标准的、跨浏览器表现的基础。

       8 . ESWAT Web Project Framework

CSS Frameworks

       ESWAT正在重新整理。如果你是冲着我的网站框架来的,那么你就可以在这里下载。也许你也想看看我的其他项目gmachina、AppleSeed。

       9 . Boilerplate CSS Framework

CSS Frameworks

作为BluePrint CSS的原作者之一,我决定把我的思想重新整理到一个赤裸裸的框架,它提供最基本的要素来开始任何项目。这个框架将是较小的而且力求不使用非语义的命名习惯。你就是设计者而且你的技术很重要。

       10 . WYMstyle CSS Framework

CSS Frameworks

       WYMstyle是一组CSS文件,你可以很容易的组合这些文件来快速的创建你的网站的布局。通过提供可靠的、经过良好测试的CSS模块,WYMstyle 力求让每个网站防止枯燥的跨浏览器兼容性测试。

       11 . Content with Style Framework

CSS Frameworks

       Content with Style下一个逻辑步骤就是将这个扩展为CSS框架,允许使用写好并通过测试的组件来快速开发网站。实际上所需的是搞定一套命名习惯和一个灵活的基本模板。

       12 . Logicss Framework

CSS Frameworks

       Logicss 框架是用来减少开发符合web标准的xHTML布局的时间的一个由CSS文件和PHP程序组成的集合。通常跨浏览器表现行为(不是Meyer的reset文件或是用“*”),排版支持文本字体大小调整(使用EMs) 和垂直居中,符合可定义的灵活的布局网格利用css代码生成工具

       13 . That Standards Guy CSS Framework

CSS Frameworks

       That Standards Guy只能调用单个样式文件,主样式需要取得CSS认证(WCAG 1.0); 跨浏览器兼容性—包括Internet Explorer (IE) 5.x for Mac; IE Hacks使用独立文件; 快速创建模板;框架中提供 少量注释/实例演示,可以节省时间来理解。

       14 . 960 Grid System

CSS Frameworks

       960 Grid System是一个通过提供通常使用的尺寸简化网站开发流程的努力的结果,基于960像素的页面宽度。它有两种类型,12和16列,他们可以独立使用或是协同使用。

       15 . Emastic CSS Framework

CSS Frameworks

       Emastic 是一个CSS框架,它有连续的任务:探索陌生的新世界,寻找新生活和新的网站空间,大胆的去CSS框架尚未到达的领域。它是轻量的、在页面宽度上比较人性化,在网格中使用固定和不固定的列宽。 Elastic 用“em”布局。

——摘自 http://www.microspaze.com/?p=339

总结一下网站注入与防范的方法

最近看到很多人的网站都被注入js,被iframe之类的。非常多。

本人曾接手过一个比较大的网站,被人家入侵了,要我收拾残局。。

1. 首先我会检查一下服务器配置,重新配置一次服务器安全,可以参考
http://hi.baidu.com/zzxap/blog/item/18180000ff921516738b6564.html

2. 其次,用麦咖啡自定义策略,即使网站程序有漏洞,别人也很难在文件上写入代码了。
参考自定义策略,有了这个策略,再烂的程序,你也无法写入我的文件
http://hi.baidu.com/zzxap/blog/item/efe093a7e0f2c190d04358ef.html

3. 可以用网络超级巡警删除被注入的JS代码。
参考
http://blog.csdn.net/zzxap/archive/2010/04/07/5459065.aspx

4. 如何批量删除数据库中被注入的代码?
在数据库查询分析器运行这段代码即可
SQL code :

DECLARE @fieldtype sysname
SET @fieldtype = ‘varchar’
–删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N’update ‘+QUOTENAME(o.name)
+ N’ set ‘ + QUOTENAME(c.name) + N’ = replace(‘ + QUOTENAME(c.name) + ‘,”<script_src=http://ucmal.com/0.js> </script>”,””)’
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id = c.id
ANDOBJECTPROPERTY(o.id,N’IsUserTable’)=1
AND c.xusertype = t.xusertype
AND t.name = @fieldtype
EXEC sp_MSforeach_Worker @command1 = N’?’

5. 创建一个触发器,只要有</script>就不给插入,对性能会有点影响
SQL code :

create trigger tr_table_insertupdate
on tablename
for insert,update
as
if exists (
select 1 from inserted
where data like ‘%</script>%’
)
begin
RAISERROR (‘不能修改或者添加’,16,1);
ROLLBACK TRANSACTION
end
go6. 最重要的还是程序的写法,用参数化SQL或存储过程
例如
C# code :

protected void cmdok_Click(object sender, EventArgs e)
{
//添加信息
StringBuilder  sql = new StringBuilder( ” insert into m_phone ( pid,PhoneName,num,price,phonetype,onSellTime,color,weight,Video,Camera,phoneSize,phoneSystem,Memorysize,PhoneDesc,Standbytime,ScreenSize,Frequency,InputMethod,Soundrecord,gps,fm,mp3,email,Infrared,game,clock,Calendar,Calculator,Bluetooth)  “);sql.Append(” values (@pid,@TextPhoneName,@Textnum,@Textprice,@Dropphonetype2,@TextonSellTime,@Textcolor,@Textweight “);

……………..

SqlParameter[] paras = { new SqlParameter(“@pid”, SqlDbType.Int, 4) ,
new SqlParameter(“@TextPhoneName”, SqlDbType.NVarChar, 50) ,
new SqlParameter(“@Textnum”, SqlDbType.Int, 4) ,
new SqlParameter(“@Textprice”, SqlDbType.Int, 4) ,
new SqlParameter(“@Dropphonetype2”, SqlDbType.VarChar, 20) ,
new SqlParameter(“@TextonSellTime”, SqlDbType.DateTime, 8) ,
new SqlParameter(“@Textcolor”, SqlDbType.VarChar, 20) ,
new SqlParameter(“@Textweight”, SqlDbType.NVarChar, 50) ,
………..
};
string[] stra = {Dropphonetype.SelectedValue,TextPhoneName.Text , Textnum.Text, Textprice.Text, Dropphonetype2.SelectedValue, TextonSellTime.Text, Textcolor.Text, Textweight.Text,
………….};

int a = stra.Length;
int j;

for ( j = 0; j < a; j++)
{
paras[j].Value = stra[j];
}
int strpid = 0;
string sqla = sql.ToString();
try
{
SqlHelper.ExcuteNonQurey(sqla, CommandType.Text, paras);//执行添加数据

strpid = Convert.ToInt32(SqlHelper.ExcuteSclare(sqla, CommandType.Text, paras));  //获取刚才插入的id号
}
catch (SqlException ex)
{
cmdreturn.Text = ex.Message.ToString();
}
cmdreturn.Text = strpid.ToString();
。。。。。。。。。

7. 通过URL传递的参数要用加密解密
C# code :

传输
string szTmp = “safdsfdsafdsfytrsd”;
szTmp = Server.UrlEncode(szTmp);
接收
STRING STRA = Server.UrlDecode(request.querystring(szTmp));

8. 把要使用的参数处理一下单引号,再放到SQL里面
例如 string stra=aa.replace(“‘”,”””)

用参数化SQL可以不用处理单引号
指定参数类型和过滤掉单引号,就可以杜绝99.9%入侵了

另外说一句:网上那些被人奉如圣经的过滤 update insert 等关键字的程序是用处不大的 upupdatedate 过滤掉 update还是update
还会造成不必要的麻烦

——摘自 CSDN论坛

Web开发人员应当知道的15个开源项目

如今,构建网站和开发Web应用程序已经不仅要求开发人员是一名优秀的程序员,更需要聪明的程序员。这也就是说,在可能的情况下,重复使用已有的代码和应用程序,而不是自己重头开始。

开源由来已久,并且很多网站的构建也使用了开源。开发人员都知道Linux、Apache、MySQL及 PHP (LAMP)。

但是除那些之外的其他开源项目呢?作为一名Web开发人员,你可以借助诸多可用的项目,以节省开发时间,或提高程序性能。

下面让我们看一下哪些开源项目可供大家免费使用。

可供使用的新型数据库

传统上讲,你可能习惯使用MySQL。尽管MySQL是一个非常棒的数据库,但诸多试图解决MySQL存在的问题的新型数据库已经问世。

1. MongoDB

MongoDB就是的“非关系型”数据库之一。它扩展性强、性能高。

2. Apache Cassandra

与MongoDB相似,Apache Cassandra也是一种“非关系型”数据库,它亦扩展性强、性能高。并且能够很好地处理庞大而活跃的数据集。(编注:Facebook用Cassandra来做邮箱搜索。)

更多

根据需要,你还有更多的选择。请参阅维基百科的这个列表

缓存数据

因为需要频繁使用一些数据,所以相比每次去数据库中查询,把这些数据存放在内存中更加合理。这能够大大提高Web应用程序的运行速度。

3. Memcached

Memcached是一种在内存中缓存小型数据块的简单但强大的解决方法。(编注: Facebook运行着成千上万的Memcached服务器,借以及时处理TB级的缓存数据。)

4. Redis

Redis的作用与Memcached相同,但包含更多的特性。例如,它也可以存储本应当永久性保存在磁盘上的数据。

加快网络请求的速度

大多数网站使用Apache的网络服务器来提供服务。它能够很好地服务于大多数网站,但是一旦网站的访问量增大,就需要做进一步优化。

5. Nginx

Nginx是一种与Apache非常相像的网络服务器,但它的速度相当快。作为负载平衡器,它常用于处理静态内容,如图像文件。

6. Varnish

Varnish是位于常规网络服务器之前的高速缓存器。它将所有热门内容放入内存,直接对其处理,无须将所有内容都传给网络服务器。(编注: Facebook用Varnish 处理图片和用户照片,每天都要处理十亿级的请求。Facebook所用到的其他开源项目,请参阅《揭秘Facebook背后的那些软件》一文。)

轻松管理内容

如果你在构建一个允许用户添加及编辑内容的网站,那么你可能需要一个内容管理系统(CMS)。CMS能够帮助开发人员轻松地管理博客及网站,并且提供大量的能够扩展网站功能的插件。

7. WordPress

虽然WordPress是个博客平台,但它也能用于管理大大小小的网站。

8. Drupal

Drupal是一个可用于构建强扩展性、高灵活性网站的完整平台。

更多

还有很多可用的内容管理系统。请参阅维基百科的这个大型列表

交互式的网络UI

如今,你可以使用JavaScript和AJAX技术,开发一个类似桌面应用程序那样的以多种方式运行的网络应用。使用JavaScript框架,能够轻松地开发大型的网络应用程序。

9. JQuery

JQuery是一个带插件的框架,这些插件有主构建包含AJAX交互及动画的动态网站。

10. MooTools

MooTools就和jQuery一样,是一个使用JavaScript构建强大网络应用程序的框架。

更多

如果你想尝试一下其他选择,请参考维基百科的这个列表

其他比较炫的资源

当你开始开发一个复杂的网络应用程序时,很多软件、库及模型能够帮你解决难题,如果不参考这些资源,你可能会花费大量的时间。以下是两个入门的例子。

11. Node.js

Node.js是一个事件驱动的输入/输出框架,支持用JavaScript编写应用程序,并在V8 JavaScript引擎上运行。这是一种开发快速、可扩展网络程序的很棒的方式。

12. RabbitMQ

RabbitMQ是一种可靠的、可扩展的信息传送系统,它能够处理高吞吐量。如果需要在系统之间或应用程序之间交换数据,比起传统的解决方案或直接将数据存储在数据库中,信息传送系统的更能胜任这一工作。

使用框架来加速开发进程

不管你是使用PHP还是其他的编程语言,有很多不同的可用框架能够帮助你加速开发进程,并能够更加轻松地管理代码。

13. Symfony

Symfony是一个PHP框架,它包含很多能够加速开发复杂网络应用程序的组件及工具。同时它包含社区提供的1000多个插件。

14. Ruby on Rails

对Ruby语言而言,Ruby on Rails是最流行的可用框架。

15. Django

Django是一个Python网络框架,它用来帮助快速开发高性能、优秀的网络应用程序。

更多

维基百科上有一份更完整的列表,这个列表包含不同语言的可用网络应用框架。

后话 – 合理利用时间

开发人员有必要花费时间不断了解哪些新软件是可用的,这样对轻松地解决复杂的任务大有裨益。

而且在项目开发之初,花费一些时间做计划和调查也是非常有必要的,因为这样可以明确即将面临的问题,并确定其最佳解决方案。

自己编程来解决每个问题的时代已经结束,如今更多的是灵活使用现有技术来解决问题。

不知正在看本文的Web开发人员,在上述这些开源项目中,你用到了哪些?欢迎你在评论中分享你的使用经验和心得。

Serv-U 用户配置文件的加密与解密

摘要:先看ServU密码加密存储方法 首先随机生成2位字符(从a-z小写字符),再将用户原始密码与这2位随机字符合并成为新的密码字符。 如:用户原始密码为a,随机生成字符为dx,则合并后新的密码字符串为:dxa 再使用新密码字符串进行MD5Hash运算. dxa = F2319AE3B312103BB…

 

先看ServU密码加密存储方法
首先随机生成2位字符(从a-z小写字符),再将用户原始密码与这2位随机字符合并成为新的密码字符。

如:用户原始密码为a,随机生成字符为dx,则合并后新的密码字符串为:”dxa”
再使用新密码字符串进行MD5Hash运算.
dxa=F2319AE3B312103BB3259CA8242DD16C
然后再存储到ini文件,存储方法为2位随机字符加上新密码字符的MD5Hash值.
如下:
[USER=a|1]  Password=dxF2319AE3B312103BB3259CA8242DD16C

ServU密码破解方法:

除去前2位随机字符获得F2319AE3B312103BB3259CA8242DD16C
然后去查询MD5的网站上面查询F2319AE3B312103BB3259CA8242DD16C

查出来的密码前两位肯定是dx,把dx去掉即是真正的密码

URL的井号

去年9月,twitter改版。

一个显著变化,就是URL加入了”#!”符号。比如,改版前的用户主页网址为

http://twitter.com/username

改版后,就变成了

http://twitter.com/#!/username

在我印象中,这是主流网站第一次将”#”大规模用于直接与用户交互的关键URL中。这表明井号(Hash)的作用正在被重新认识。本文根据HttpWatch的文章,整理与井号有关的所有重要知识点。

一、#的涵义

#代表网页中的一个位置。其右面的字符,就是该位置的标识符。比如,

http://www.example.com/index.html#print

就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。

为网页位置指定标识符,有两个方法。一是使用锚点,比如<a name=”print”></a>,二是使用id属性,比如<div id=”print” >。

二、HTTP请求不包括#

#是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。

比如,访问下面的网址,

http://www.example.com/index.html#print

浏览器实际发出的请求是这样的:

GET /index.html HTTP/1.1

Host: www.example.com

可以看到,只是请求index.html,根本没有”#print”的部分。

三、#后的字符

在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。

比如,下面URL的原意是指定一个颜色值:

http://www.example.com/?color=#fff

但是,浏览器实际发出的请求是:

GET /?color= HTTP/1.1

Host: www.example.com

可以看到,”#fff”被省略了。只有将#转码为%23,浏览器才会将其作为实义字符处理。也就是说,上面的网址应该被写成:

http://example.com/?color=%23fff

四、改变#不触发网页重载

单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页。

比如,从

http://www.example.com/index.html#location1

改成

http://www.example.com/index.html#location2

浏览器不会重新向服务器请求index.html。

五、改变#会改变浏览器的访问历史

每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用”后退”按钮,就可以回到上一个位置。

这对于ajax应用程序特别有用,可以用不同的#值,表示不同的访问状态,然后向用户给出可以访问某个状态的链接。

值得注意的是,上述规则对IE 6和IE 7不成立,它们不会因为#的改变而增加历史记录。

六、window.location.hash读取#值

window.location.hash这个属性可读可写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。

七、onhashchange事件

这是一个HTML 5新增的事件,当#值发生变化时,就会触发这个事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持该事件。

它的使用方法有三种:

window.onhashchange = func;

<body onhashchange=”func();”>

window.addEventListener(“hashchange”, func, false);

对于不支持onhashchange的浏览器,可以用setInterval监控location.hash的变化。

八、Google抓取#的机制

默认情况下,Google的网络蜘蛛忽视URL的#部分。

但是,Google还规定,如果你希望Ajax生成的内容被浏览引擎读取,那么URL中可以使用”#!”,Google会自动将其后面的内容转成查询字符串_escaped_fragment_的值。

比如,Google发现新版twitter的URL如下:

http://twitter.com/#!/username

就会自动抓取另一个URL:

http://twitter.com/?_escaped_fragment_=/username

通过这种机制,Google就可以索引动态的Ajax内容。

 

——摘自 阮一峰的网络日志

Web开发人员应当收藏的10个网站

互联网上有数百万的网站可以提供服务,其中只有一些对Web开发员来说是极为有效的工具。在本文中,Jean-Baptiste Jung整理出了10个极有用的网站,绝对值得Web开发者收藏到书签中。

1. Mysql Format Date

通过MySQL DATE_FORMAT 函数,可以格式化日期。只需选择一个常用的日期格式,将它更改为适合自己的格式即可。MySQL DATE_FORMAT 的代码会在页面底部生成,你可以直接复制。

http://www.mysqlformatdate.com

2. Script Src

在网上搜索适合自己的Javascript库最新版的脚本标签,你是不是厌倦了呢?ScriptSrc.net将最新版本的jQuery、Mootools、Prototype等收集整理到一个网页中,你只需要在浏览器的剪贴板中点击即可复制。

http://scriptsrc.net

3. Em Chart

我不太喜欢ems和CSS文件,但是有时必须与它们打交道。在这种情况下,Em Chart将ems转换为像素,让您既节省时间又减少麻烦。

http://aloestudios.com/tools/emchart

4. Twitter API Explorer

如果你在你的网站上使用Twitter的API,你肯定会喜欢这个非常方便的网站,它可以让你搜索到很多东西。 更妙的是,这个网站可以生成可直接使用的代码片段。既能为您,也能为您的客户节省时间!

http://twitapi.com/explore

5. Browser Sandbox

跨浏览器兼容性肯定是Web开发人员在日常工作中要面临的重大问题之一。 浏览器沙盒可以让您从任何网站跳转到Windows浏览器。唯一不好之处在于你必须运行在Windows系统里。这个应用程序不能在苹果机和GNU/Linux操作系统中使用。

http://spoon.net/browsers

6. PHP Forms

Web表格是网站最重要的部分之一,但创建起来也非常耗时。那么,用一个可以免费加速表格开发的网站,这怎么样呢?

PHP Forms网站允许你创建适合大多数网站的需要的高级表单。

http://www.phpform.org.htaccess

7. .htaccess

任何网站都应该拥有一个.htaccess文件。不知道怎么写?没关系,只要访问这个网站,通过使用向导便可以创建.htaccess文件。这个网站不要求非常先进的东西,但其结果95%会适合你的网站。

http://www.htaccesseditor.com/en.shtml

8. Smush it!

众所周知,图像要胜过千言万语,但会占用大量的带宽。可以使用Photoshop来优化图片,但是如果你没有该软件或根本不知如何怎么做,smush.it就是你所需要的。

Smush.it是一个在线工具,它可以缩小图片尺寸,但不会降低图片质量。对于WordPress的用户,它是一个非常方便的博客引擎插件。

http://developer.yahoo.com/yslow/smushit/

9. CSS Compressor

特别有在许多页面布局的网站上,CSS文件会占用服务器的大量带宽。这个名叫CSS压缩机的工具,能通过删除注释、缩进等手段来直接缩小CSS文件。更妙的是,压缩级别可以按您的需要配置。

http://www.csscompressor.com

10. Test everything

这个网站是一定要收藏的。正如它的名字一样,“Test Everything / 万能测试”可以测试很多东西,如XHTML和CSS标记,网页级别,返回链接等等。

http://tester.jonasjohn.de

12个Icon图标资源网站

1.除了Icon以外,还有很多不错的UI设计素材。

地址:http://worldui.com/

2.除了免费Icon资源下载以外,还提供Icon定制的付费服务。

地址:http://dryicons.com/

3.很喜欢这个icon资源站的展示方式。

地址:http://www.icotrip.com/

4.Icones.pro,icon资源站,每日推荐的Icon资源还不错,可以按照浏览数,下载数等查看Icon资源。

地址:http://icones.pro/

5.IconPNG 共收录 21372 个 图标icons 和 416 个 icon 图标系列。

地址:http://www.iconpng.com/

6.FindIcons.com就是一个帮您找免费图标的图标搜索引擎。有3000多套图片集和30多万个免费Icon资源。

地址:http://findicons.com/

7.IconFinder是我个人最喜欢的一个Icon资源站,拥有152,466 icons以及775 icon集,强烈推荐!

地址:http://www.iconfinder.com/

8.EasyIcon:拥有超过40万个Icon资源,完全收录Open Icon Library 11,489个图标。

地址:http://www.easyicon.cn/

9.Incoarchive对于Icon的分类做得较好,目前约有253,428 icons以及 1,348Icon集。

地址:http://www.iconarchive.com/

10.SoftIcons也是我很喜欢的一个Icon站,其最大的优点在于用户下载Icon集:)

地址:http://www.softicons.com/

11.Icon资源搜索引擎,资源还比较丰富。

地址:http://www.iconlet.com/

12.一个设计感不错的Icon资源站点

地址:http://icon.io/

 

摘自:瑞克互动

网页设计:浏览器在兼容模式下布局全乱了 – 解决办法

在chrome、ie浏览器中显示均正常,为何用360或搜狗等浏览器的兼容模式查看网页布局会全乱了呢?

解决办法:在head中添加一个meta标签,指定兼容模式。因为旧的ie浏览器与chrome等浏览器的解释方式差别较大,因此个人经验是指定较高的兼容模式即可,如ie8。

兼容性对于网页设计师来说非常重要。虽然最好是建立一个完全不需依赖任何网页浏览器特性或功能的网站,但是有时候这是不可能实现的。而文件兼容模式能将网页限制在某个特定版本的IE中。
可以使用 X-UA-Compatible 标头来指定网页支持的IE版本,可以使用 document.documentMode 来判定网页的兼容性模式。
通过选择支持某个特定版本的IE,你可以确保你的网页在未来的浏览器版本中也能显示一致。
指定网页兼容性模式
要为网页指定兼容模式,需要在网页中使用 meta 元素放入 X-UA-Compatible  http-equiv 标头。以下范例是指定网页为 IE7 兼容模式。

  1. <meta http-equiv=”X-UA-Compatible” content=”IE=EmulateIE7″ >

复制代码

不过前两天给一个网站调试的时候发现他连续加了两个版本的兼容,结果没有任何变化,结果查了下资料原来是IE浏览器只能读第一个兼容的代码后面的都不认!
:IE只会执行网页中第一个 X-UA-Compatible 标头。
可以使用多个属性值来指定网页兼容模式,这能使网页在将来的浏览器版本中保持显示一致。如果需要设置多个兼容模式,使用分号分开各个模式。
如果一个特定版本的 IE 支持的可用兼容模式多于一种,则将采用列于标头属性中最高的可用模式。尽管不推荐这样做,但是可以使用这个特性来排除特定的兼容模式。下面的例子将会排除 IE7 模式。

  1. <meta http-equiv=”X-UA-Compatible” content=”IE=5; IE=8″ >

复制代码

常用兼容标头如下:
各种兼容模式代码范例

  1. <meta http-equiv=”X-UA-Compatible” content=”IE=5″ />

复制代码

像是使用了 Windows Internet Explorer 7 的 Quirks 模式,这与 Windows Internet Explorer 5 显示内容的方式很相似。

  1. <meta http-equiv=”X-UA-Compatible” content=”IE=7″ />

复制代码

无论页面是否包含 <!DOCTYPE> 指令,均使用 Windows Internet Explorer 7 的标准渲染模式。

  1. <meta http-equiv=”X-UA-Compatible” content=”IE=8″ />

复制代码

开启 IE8 的标准渲染模式,但由于本身 X-UA-Compatible 文件头仅支持 IE8 以上版本,因此等同于冗余代码。

  1. <meta http-equiv=”X-UA-Compatible” content=”edge” />

复制代码

Edge 模式通知 Windows Internet Explorer 以最高级别的可用模式显示内容,这实际上破坏了“锁定”模式。

  1. <meta http-equiv=”X-UA-Compatible” content=”IE=EmulateIE7″ />

复制代码

EmulateIE7 模式通知 Windows Internet Explorer 使用 <!DOCTYPE> 指令确定如何呈现内容。标准模式指令以Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 <!DOCTYPE> 指令。

DEDECMS模板如何实现用户登录 | 如何在DEDECMS中添加验证码

如果自己制作了DEDECMS的模板,那么如何实现用户登录呢?下面给出详细步骤:

1、在页面的head部分引入如下Javascript脚本(可在dedecms自带的默认模板的index.html的head部分找到):

2、用户登录部分的代码如下所示(红框部分为不容易注意但不可缺少的部分):

以下是实现效果(登录前与登录后):

补充:

若要修改上图所示用户登录后的显示效果,可找到/member/ajax_loginsta.php文件,对其中的内容进行修改即可。

 

 

 

服务器无法打开视频 | win2003不支持播放flv | 使服务器支持流媒体服务的解决办法

原因是由于服务器上没有.FLV的这种mime-type类型,对于这一点Adobe给出了它的解决方案。如下:

1. 在2003服务器上,找开IIS管理器。

2. 展开本地服务器名称,右击选择属性,在Internet信息服务标签上,点击最下方的计算机MIME映射下面的编辑按钮。

3. 点击”新类型”按钮,扩展名添上”.FLV”,内容类型(MIME)添上“flv-application/octet-stream”

4. 点击确定

5. 重新启动www服务。

尽管adobe提供了这种解决方法可以让.FLV工作,但仍会在许多情况下会出现意想不到的结果,仍会有许多.FLV不能正常的工作。下面有一种解决方法:前几步是一样的。

1. 在2003服务器上,找开IIS管理器。

2. 展开本地服务器名称,右击选择属性,在Internet信息服务标签上点击最下方的计算机MIME映射下面的编辑按钮。

3. 点击”新类型”按钮,扩展名添上”.FLV”,内容类型(MIME)添上”video/x-flv”

4. 点击确定

5. 重新启动www服务。

Ok.现在你可以正常在windows 2003 server 上使用你的流式的FLV了。

 

 

对于Apache来说,找到Apache安装目录下的conf/mime.types文档,在文件中进行添加即可。