博文

[置顶] 浅析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)        {            ...        }   &......

阅读全文(3059) | 评论:1

自定义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......

阅读全文(1982) | 评论:0

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......

阅读全文(3359) | 评论:0

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"; ?> ......

阅读全文(3255) | 评论:0

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选择时选择上面那个 中文......

阅读全文(3581) | 评论:0

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' 字符串的语法错误 在查询表达......

阅读全文(2479) | 评论:1

图片无限滚动(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>          ......

阅读全文(3222) | 评论:0

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......

阅读全文(2474) | 评论:0

用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>......

阅读全文(4353) | 评论:0

三级联动下拉(无组件)(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......

阅读全文(2446) | 评论:0