博文
[置顶] 浅析C#的事件处理和自定义事件 (2007-06-15 12:43:00)
摘要:一、了解C#中的预定义事件处理机制
在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理。
EventArgs是包含事件数据的类的基类,用于传递事件的细节。
EventHandler是一个委托声明如下
public delegate void EventHandler( object sender , EventArgs e )
注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。
下面我们研究一下Button类看看其中的事件声明(使用WinCV工具查看),以Click事件为例。
public event EventHandler Click;
这里定义了一个EventHandler类型的事件Click
前面的内容都是C#在类库中已经为我们定义好了的。下面我们来看编程时产生的代码。
private void button1_Click(object sender, System.EventArgs e) { ... }
&......
自定义php分页函数(2007-09-30 17:18:00)
摘要:每次编写列表性质的页面,几乎都要写上一段分页的程序。最近终于决心一劳永逸——自定义一个分页函数,并保存在“pageft.php”文件里。要用到分页的地方,就直接包含“pageft.php”文件,并调用这个函数就行了。编写这个函数时,尽量注意了程序的可移植性和易用性,下面就是这个函数:
<?//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:if(!function_exists(pageft)){ //定义函数pageft(),三个参数的含义为://$totle:信息总数;//$displaypg:每页显示信息数,这里设置为默认是20;//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。// 默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。function pageft($totle,$displaypg=20,$url=''){
//定义几个全局变量: //$page:当前页码;//$firstcount:(数据库)查询的起始项;//$pagenav:页面导航条代码,函数内部并没有将它输出;//$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。global $page,$firstcount,$pagenav,$_SERVER;
//为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。$GLOBALS["displaypg"]=$displaypg;
if(!$page) $page=1;
//如果$url使用默认,即空值,则赋值为本页URL:if(!$url){ $url=$_SERVER["REQUEST_URI"];}
//URL分析:$parse_url=parse_url($url);$url_query=$parse_url["query"]; //单独取出URL的查询字串if($url_query){//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。//这里用到了正则表达式,请参考“PHP中的正规表达式”(htt......
asp生成word(2007-09-26 08:58:00)
摘要:<%
'这里写你的数据库连接,自己写上数据库连接代码Response.Buffer = True '这个好像得留着Set rs = Server.CreateObject("ADODB.Recordset")sql="select * from ceshi where id=1"rs.open sql,conn,3,3 Dim fso, MyFile dim sFileName dim mystring mystring="这里的内容下面有说明" Set fso = CreateObject("Scripting.FileSystemObject") '用到fso sFileName = ""&rs("id")&".doc" //根据id来取名称,可以自行修改 Set MyFile = fso.CreateTextFile(Server.MapPath(".") & "\word\"&sFileName, True) '文件放在当前目录的word/下myString="这里是你预先排好的word文档,要填的地方都空好了,怎么弄底下告诉!" MyFile.WriteLine(myString) MyFile.Close '关闭文件%>'=============下面是如何弄mystring里的内容注:myString="" 里面到底是什么?用word做一个你要的格式的文档,都排好了,把要填的地方做好标记,比如写几个字什么的。然后“另存为”web页面。本文所说的是文档里没有图片的情况,有的话我也不会。到你的硬盘里找到这个web页面,打开,查看源文件,ctrl+a,ctrl+c,在word里,ctrl+N......
PHP生成Excel(2007-09-26 08:53:00)
摘要:<?php ob_start(); define("FILETYPE","xls"); header("Content-type:application/vnd.ms-excel"); if(FILETYPE=="xls") header("Content-Disposition:filename=report.xls"); else header("Content-Disposition:filename=report.csv"); echo "姓名\t年龄\t性别\n"; //echo "efg\t\hij\t\n"; echo "张三\t25\tmale"; echo "\n李四\t27\tmale"; echo "\n王五\t20\tfemale"; ?> ......
phpmyadmin显示乱码的问题(2007-09-26 08:52:00)
摘要:修改phpmyadmin里libraries/select_lang.lib.php一'zh-gb2312' => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh', '中文'),改为'zh-gb2312-utf-8' => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh', '中文'),二'gb2312' => 'gb2312',改为'gb2312' => 'latin1','utf-8' => 'utf-8,改为'utf-8' => 'latin1',然后在phpmyadmin里language选择时选择上面那个 中文......
SQL注入天书(2007-09-25 17:06:00)
摘要:[引用地址:http://www.xz-show.cn/bbs/ShowPost.asp?ThreadID=308]随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS*志的习惯,可能被入侵很长时间都不会发觉。
但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。
根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,我们从分入门、进阶至高级讲解一下ASP注入的方法及技巧,PHP注入的文章由NB联盟的另一位朋友zwell撰写,希望对安全工作者和程序员都有用处。了解ASP注入的朋友也请不要跳过入门篇,因为部分人对注入的基本判断方法还存在误区。大家准备好了吗?Let's Go...
入 门 篇
如果你以前没试过SQL注入的话,那么第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。
第一节、SQL注入原理
以下我们从一个www.19cn.com开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。
在网站首页上,有名为“IE不能打开新窗口的多种解决方法”的链接,地址为:http://www.19cn.com/showdetail.asp?id=49,我们在这个地址后面加上单引号’,服务器会返回下面的错误提示:
Microsoft JET Database Engine 错误 '80040e14'
字符串的语法错误 在查询表达......
图片无限滚动(2007-09-25 12:16:00)
摘要:1、图片向左无限滚动====================================================<div id=demod style=overflow:hidden;height:157;width:714> <table align=left cellpadding=0 cellspace=0 border=0> <tr> <td id=demo7 valign=top> <table width='100%' cellpadding='0' cellspacing='5' border='0' align='center'> <tr valign='top'> <td align='left'><img src="http://www.sh7135.net/2006demo/images/default_r1_c4.gif"></td> ......
C#多线程参数传递浅析(2007-09-25 12:14:00)
摘要:我们在写Remoting程序或者其他的一些应用程序的时候难免要和线程打交道,.Net使我们很容易就可以创建一个线程,但是它提供的创建线程和启动线程的方法没有明显的提供参数,假如我们要用线程来启动类里面一个带参数的方法该怎么办?下面就简单的介绍如何使用.NET提供的丰富的框架来实现这个功能。为了可以生动详细的介绍整个过程,我建立下面的一个.NET类,它也是要用线程启动的方法的载体。类如下所示:
using System; namespace WindowsApplication1 { /// <summary> /// Summary description for UrlFetcher. /// </summary> public class MyClass{ // for method 1 private string _parameter; public MyClass(string parameter){ this._parameter = parameter; } public void MyMethod1(){ if(this._parameter!=null){ // do something Console.Write(this._parameter); } } // for method 2 public MyClass(){} // this method is private,But it can be public or other private void MyMethod2(string parameter){ // do something Console.Write(parameter); } // Because delegate WaitCallback's parameter Type is object // I will convert it to string. public void MyMethod2(object parameter){ this.MyMethod2((string)parameter); } // for method 3 public string MyMeth......
用PHP5轻松解析XML(2007-09-20 13:58:00)
摘要:用 sax 方式的时候,要自己构建3个函数,而且要直接用这三的函数来返回数据,要求较强的逻辑。在处理不同结构的 xml 的时候,还要重新进行构造这三个函数,麻烦!
用 dom 方式,倒是好些,但是他把每个节点都看作是一个 node,,操作起来要写好多的代码,麻烦!
网上有好多的开源的 xml 解析的类库,以前看过几个,但是心里总是觉得不踏实,感觉总是跟在别人的屁股后面。
这几天在搞 Java,挺累的,所以决定换换脑袋,写点 PHP 代码,为了防止以后 XML 解析过程再令我犯难,就花了一天的时间写了下面一个 XML 解析的类,于是就有了下面的东西。
实现方式是通过包装“sax方式的解析结果”来实现的。总的来说,对于我个人来说挺实用的,性能也还可以,基本上可以完成大多数的处理要求。
功能: 1\ 对基本的 XML 文件的节点进行 查询 / 添加 / 修改 / 删除 工作。 2\ 导出 XML 文件的所有数据到一个数组里面。 3\ 整个设计采用了 OO 方式,在操作结果集的时候,使用方法类似于 dom
缺点: 1\ 每个节点最好都带有一个id(看后面的例子),每个“节点名字”=“节点的标签_节点的id”,如果这个 id 值没有设置,程序将自动给他产生一个 id,这个 id 就是这个节点在他的上级节点中的位置编号,从 0 开始。 2\ 查询某个节点的时候可以通过用“|”符号连接“节点名字”来进行。这些“节点名字”都是按顺序写好的上级节点的名字。
使用说明: 运行下面的例子,在执行结果页面上可以看到函数的使用说明
代码是通过 PHP5 来实现的,在 PHP4 中无法正常运行。
由于刚刚写完,所以没有整理文档,下面的例子演示的只是一部分的功能,代码不是很难,要是想知道更多的功能,可以研究研究源代码。
目录结构:
test.php test.xml xml / SimpleDocumentBase.php xml / SimpleDocumentNode.php xml / SimpleDocumentRoot.php xml / SimpleDocumentParser.php
文件:test.xml <?xml version="1.0" encoding="GB2312"?> <shop> <name>华联</name>......
三级联动下拉(无组件)(2007-09-20 13:56:00)
摘要:[转:http://www.xz-show.cn/bbs/ShowPost.asp?ThreadID=782]
<form name="isc" method="post" action="sanjiliandong.asp"> <table width="572" height="53" border="0" align="center" cellpadding="0" cellspacing="0" style="border:1px solid black;"> <tr align="center"> <td width="177"> <select name="s1"> <option selected>请选择省</option> </select></td> <td width="191"><select name="s2"> <option value=" " selected>请选择市</option> &nb......
