IE8 Title Bar 增加按钮用什么技术?

zgcy123456 2016-07-16 09:58:58
说明:

需要实现在IE8 Title Bar 上面增加一个按钮,单击后弹出窗口,有输入框,有按钮。
编程语言:C#

按钮效果如图:


单击后效果如图:



问题:
1 是使用BHO技术吗?如果不是,提示一下名称。
2 可否给个实例。
谢谢。
...全文
106 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
persistent_layers 不管滚动条如何拉动,这个层在窗口中的位置始终固定不变 P7_PowerToys_18 可以让你方便的插入代码,用开始和结束标签加入既存的代码等 justsoalt 用于在你的图片上加入alt标记,它可以利用模板一次为多张图片加入alt说明 calendarPopup 一个弹出日历表格,用以确保输入的日历是按照特定的格式进行输入的,主要特色包括:日历链接,按照需要的方式设定日历的格式,按照需要可以在日期项目间增加分隔符等等功能 MX95982_shortcutIconOB_v1 插入.icon图标效果 addToFavoritesBH 制作加入收藏夹的链接 Anchors 建立扩展的命令锚点 BustFrames 让其他网页无法将你的主页加载入框架页中 Calendar 为指定月份建立日历 ClosePopupWindow 制作关闭弹出的窗口 CloseWindowOb 建立关闭当前窗口的链接 mm_flabutton_styles 为DW4增加几款新的Flash按钮样式 mx142100_mmflabuttonstyles 13款Flash Button,并带有.fla的源文件 mx196756_turkeyscounties 80多个国家的一个下拉菜单 FlashImage 响应鼠标事件的图片渐显渐隐效果 real_networks 在页面中插入流式播放的Real视频和音频文件 MX131662_pdreloadxtension 从新加载Dreamweaver的各项插件,不用重复的启动关闭Dreamweaver了 DateStamp 插入一个日期,或者网页的最后更新日期 Email 插入一个Email的连接,可以自己指定标题、BB、BBC、以及message! ie55_scroll 自定义浏览器滚动条的特效CSS Marquee 插入滚动文字效果 scrubber 去除点击超级链接时的虚线显示 chromeless_win_wind 制作弹出无边浏览小窗口,现在网上最为流行的 scrollablearea 使用层制作IE中可控制上下滚动的看板 right_click_menu_builder 右键菜单扩展功能 flashtext 制作仿Flash的文字效果 typewriter 让一段文字以打字的效果出现 gradient_text 在网页里生成一段色彩渐变的文字 footnote 增加一个弹出的注释,就像image 的alt=…… ie_favicon 你只需要一个漂亮的ico格式图片,您的地址栏IE图标将与众不同 favorite_menu 为DW增加一个Favorites 菜单,类似IE收藏夹 layer_transitions 层的多种转换特效 dhtml_tooltips 为页面或链接增加一个dHTML的脚注(即注释) insert_greeting 根据不同的时段插入不同的问候语 script_editor 让你更方便的编辑脚本,包括外部脚本 popup_menu_builder 帮助您轻松创建一个跨浏览器的弹出菜单 TableLines 文章文字各行间都有横线分离 alternate_table_rows 使表格中行与行之间的背景色交替变换 print 支持三种打印页面连接,文字连接、图片连接 preloaddisplay 预先加载页面,如果你的网站下载的速度比较慢,用这个比较好。 swftext 将Drm和Flash结合起来了,选择文本,执行该Command,swf动画就轻易的生成了 SliderMenu 设计导航菜单的绝佳助手,可以用于导航菜单的设计,特别是导航项很多的场合 disable_view_source 让网页源代码无法观看 vmkp_flash_buttons Flash按钮 iframe 内帖窗口(页中页效果) open_picture_window 打开一个与缩略图一样大小的窗口 MX128577_ultimatewindows 建立一个可自定义属性的弹出窗口,亦可建立一个居中的窗口 WordCount 字数统计 PreviousPage 建立返回前一页的超链接 PageTransitions 进入、退出页面的过渡转场效果,比如从中间打开、溶解...... Meta_Generator 网页 Meta 管理器,可以详细设置Meta Fix_Null_Links 把所有的“#”替换成“javascript”来避免一点击它,网页马上就翻到了顶部 advopenwindow 弹出窗口(窗口居中、总在最前面、自动关闭、全屏、无边框窗口) averagedistribute 单元格平均分布 Quick_Title 建立文字型的Title说明 Open_Brows
各种Dreamweaver 插件包括: persistent_layers 不管滚动条如何拉动,这个层在窗口中的位置始终固定不变 P7_PowerToys_18 可以让你方便的插入代码,用开始和结束标签加入既存的代码等 justsoalt 用于在你的图片上加入alt标记,它可以利用模板一次为多张图片加入alt说明 calendarPopup 一个弹出日历表格,用以确保输入的日历是按照特定的格式进行输入的,主要特色包括:日历链接,按照需要的方式设定日历的格式,按照需要可以在日期项目间增加分隔符等等功能 MX95982_shortcutIconOB_v1 插入.icon图标效果 addToFavoritesBH 制作加入收藏夹的链接 Anchors 建立扩展的命令锚点 BustFrames 让其他网页无法将你的主页加载入框架页中 Calendar 为指定月份建立日历 ClosePopupWindow 制作关闭弹出的窗口 CloseWindowOb 建立关闭当前窗口的链接 mm_flabutton_styles 为DW4增加几款新的Flash按钮样式 mx142100_mmflabuttonstyles 13款Flash Button,并带有.fla的源文件 mx196756_turkeyscounties 80多个国家的一个下拉菜单 FlashImage 响应鼠标事件的图片渐显渐隐效果 real_networks 在页面中插入流式播放的Real视频和音频文件 MX131662_pdreloadxtension 从新加载Dreamweaver的各项插件,不用重复的启动关闭Dreamweaver了 DateStamp 插入一个日期,或者网页的最后更新日期 Email 插入一个Email的连接,可以自己指定标题、BB、BBC、以及message! ie55_scroll 自定义浏览器滚动条的特效CSS Marquee 插入滚动文字效果 scrubber 去除点击超级链接时的虚线显示 chromeless_win_wind 制作弹出无边浏览小窗口,现在网上最为流行的 scrollablearea 使用层制作IE中可控制上下滚动的看板 right_click_menu_builder 右键菜单扩展功能 flashtext 制作仿Flash的文字效果 typewriter 让一段文字以打字的效果出现 gradient_text 在网页里生成一段色彩渐变的文字 footnote 增加一个弹出的注释,就像image 的alt=…… ie_favicon 你只需要一个漂亮的ico格式图片,您的地址栏IE图标将与众不同 favorite_menu 为DW增加一个Favorites 菜单,类似IE收藏夹 layer_transitions 层的多种转换特效 dhtml_tooltips 为页面或链接增加一个dHTML的脚注(即注释) insert_greeting 根据不同的时段插入不同的问候语 script_editor 让你更方便的编辑脚本,包括外部脚本 popup_menu_builder 帮助您轻松创建一个跨浏览器的弹出菜单 TableLines 文章文字各行间都有横线分离 alternate_table_rows 使表格中行与行之间的背景色交替变换 print 支持三种打印页面连接,文字连接、图片连接 preloaddisplay 预先加载页面,如果你的网站下载的速度比较慢,用这个比较好。 swftext 将Drm和Flash结合起来了,选择文本,执行该Command,swf动画就轻易的生成了 SliderMenu 设计导航菜单的绝佳助手,可以用于导航菜单的设计,特别是导航项很多的场合 disable_view_source 让网页源代码无法观看 vmkp_flash_buttons Flash按钮 iframe 内帖窗口(页中页效果) open_picture_window 打开一个与缩略图一样大小的窗口 MX128577_ultimatewindows 建立一个可自定义属性的弹出窗口,亦可建立一个居中的窗口 WordCount 字数统计 PreviousPage 建立返回前一页的超链接 PageTransitions 进入、退出页面的过渡转场效果,比如从中间打开、溶解...... Meta_Generator 网页 Meta 管理器,可以详细设置Meta Fix_Null_Links 把所有的“#”替换成“javascript”来避免一点击它,网页马上就翻到了顶部 advopenwindow 弹出窗口(窗口居中、总在最前面、自动关闭、全屏、无边框窗口) averagedistribute 单元格平均分布 Quick_Title 建立文字型的Title说明 Open_Browser_Window+ 操作弹出式窗口升级版 StyleApplier 表格的鼠标触发效果 checkform 表单验证插件 Realplayer 嵌入网页Real播放器插件 BannerImageBuilder 创建多图片随机显示 CloseCW 方便的插入一个关闭当前页面的按钮,可以选择按钮、图片、或者文字3种方式 tooltips 制作注释 UI_components Flash UIComponent floatimg 在页面上制作的飘浮图片插件,没时间封装 mmJIK Macromedia亲自为Flash 5开发的插件,功能太强大了 MX186725_splash_window 也叫chromeless splash , 一种效果很不错的浏览器窗口 MX175723_DWinamp 可以方便的在DW中控制Winamp,边工作,边听音乐 languagemenu 包括所有语言的下拉菜单(object) MX162506_persist_layer 不论浏览器的滚动条怎么拉,用这个插件插入的层总是保持在某个位置不动 MX156958_e-VueObject 插入e-Vue MPEG-4格式的文件 Sound 插入Midi、wav、Aiff等格式的声音文件 MX172878_sup_sub_ext 插入上标、下标 Videoembed 插入视频文件,还可以加上控制按钮 NowhereLink 插入一个空连接,点击后不会返回到页面顶部 ExternalJS 调用一个外部的.JS脚本语言文件 includeJSfile_hp 调用一个外部的.JS脚本语言文件,插入到<head>区域内 Addramesets 给你的Dreamweaver再加入14种框架模板(command) Title_for_Links 给文字连接加上说明(command) ChinaDW 功能是一个中国省市自制区的下拉框 Xwindow 没有边框,没有Title的窗口 MX143626_GoBackorForward 类似于浏览器的前进和后退按钮,但是可以指定每次前进的次数 coolborder 平时插入的表格的border又粗又难看,用这个插件插入看看边框(object) Set_IE_Scrollbars 设置IE是否出现右边的滚动条,可以适用于单个,多个,整个站点的页面 MX174513_Super_Email 插入一个不打开客户端的默认邮件程序来发送email的超连接 iframei 一个面板插件,可以对iframe标签的属性进行设置(inspector) MX179510_flashbuttons 一些Flash Button,一共7款 X164476_nirvana_iframePack 一组关于iframe的插件,可以动态的改变iframe中的页面 MX152319_save_all 在Drw的File菜单下加一个Save All命令,用来保存所有Dreamweaver窗口的文件 Layerfx 可以让层做绕定轴转动、震动、加速运动....... xp_jmail UD中使用的插件。 Scrolling_Title IE标题栏的文字滚动的效果 RefreshPageLink 建立一个刷新当前页面的链接。 quick filter 使用CSS滤镜对图片进行快速设置(右键、目标另存为) adv_random_images 这是随机显示图片的新版本,可以定制图片的很多相关属性。 scrolling_status_bar 插入打字效果状态栏文字。 form_button_fever 使用文字或者图片取代submit、reset 按钮 compare_fields 用来验证表单内2个文本框的值是否相同,通常用来检验密码是否一致。并可以自定义抱错信息。 ASP Dream 很方便的插入ASP语句,具有向导模式 Ultra Close Window 直接关闭窗口,不弹出确认关闭的对话框 flat_button 用CSS改变了样式的文本框或按钮 format_css_4 规范化<style>代码,附带若干选项设置。 explore 在DW的Site窗口中选中文件夹后在右键菜单中添加一条“在资源管理器中打开...”的命令
Microsoft Help Workshop——HLP文件轻松做 2002-04-14 11:56作者:陈劲宏出处:Yesky责任编辑:   由于HLP格式已经逐 渐被CHM格式所替代,所以制作HLP格式帮助文档的工具相对来说要少一些。一般有Windows Help Designer/WinHelp Edition、 helppad、Windows帮助大师helper、RTF2HLP和我们这里所介绍的Microsoft Help Workshop两种。因为有些工具软件使用时最终还是要Microsoft Help Workshop的支持,我们这里以Microsoft Help Workshop为例介绍一下它的使用方法。 Microsoft Help Workshop(以下简称为HW)是一款专业的制作HLP文件的软件。HW与HTML Help Workshop均是微软开发的制作帮助文件的软件。软件继续保持了简洁、制作方便简单的特点。我们可以到微软的网站去下载,但如果你要下载汉化版的话, 请到http://www.guxiang.com/epubcn/soft-down/hlp/p-helpworkshop403.exe去下载好 了。毕竟汉化版对于英文不太好的朋友来说,还是方便一些。需要说明的是,由于HLP格式出现较早,目前大部分的基于Web的技术都不可以使用。但是由于 HLP文件的界面整洁、对文件的压缩比率较高等特点,目前还广泛应用在很多领域当中。操作步骤为:   1.运行HW以后,单击菜单“文件”|“新建”选项,选择默认的“帮助项目”选项,单击OK(好了)按钮。将工程文件保存在某一目录下并给予文件名。此时弹出主编辑窗口,如图1。   2.单击右边的“选项”按钮,在弹出的对话框中我们可以设置文件的属性。包括文件标题、压缩率、排序、各种文件信息、搜索支持、宏定义、字体信息等等。 3.单击“文件”按钮,加入需要编译的RTF文件,注意软件只支持导入RTF文件,如图3-2。   4.单击“窗口”按钮,在弹出对话框中设置窗口名称和窗口属性。如图3-3。   以下的按钮分别是“位图(Bitmaps…)”、“映射(Maps…)”、“别名(Alias…)”、“设置(Config…)”、“数据文件(Data Files…)”,如果读者愿意可以一一设置,这里就不详述了。 5.设置好文件信息以后,单击工具栏上的“编译”(Compile)按钮(在?按钮的左边即是),或者单击主编辑窗口右下角的“存盘并编译”(Save and Compile)按钮,此时软件会自动编译输出HLP文件并报告编译信息。 由于HLP文件所支持的格式只能是RTF,所以用户在使用HW之前必须先用WORD制作好RTF文件。 二、制作前的准备   1、下载并安装 HTML Help WorkShop   你可以在微软的站点上下载 HHW 软件,也可以直接 按此下载。   下载 HHW 软件后直接运行 htmlhelp.exe,一路“next”就可以安装成功。HHW 内还含一个图形编辑处理程序(HTML Help Image Editor),图形文件的处理也可以由它简单处理。   2、几个概念   相对来讲制作 chm 文件比较简单,大量的工作实际上是在前期制作 html 文件上,你在 chm 文件中所看到和听到的,与你在浏览器中的结果是一样的。你可以专门为制作 chm 文件而编制 HTML,也可以直接利用现成的小型个人主页快速做成 chm 文件以便向外发放,所不同的是,在个人网站上每个 HTML 文件之间必须由超级链接相连,而用来制作 chm 文件的 HTML 文件组里,允许有独立的 HTML 文件,用户可以通过导航嵌窗来实现对其访问。   现在让我们先了解一下几个用到的概念:   (1)项目文件[Project -- .hhp文件]:包含创建 chm 文件所需的 HTML 文件信息、目录表文件信息、索引文件信息、窗口属性、搜索、书签定义等内容。一个chm文件对应有一个项目文件。[设置方法]   (2)目录表文件[Contents -- .hhc文件]:包含目录表中每个标题与 HTML 文件的关联关系。目录表就好像是一本书的目录。该文件不是必需的,如果创建的 chm 文件没有导航嵌窗,就可以不创建 .hhc 文件,这样一来 HTML 中的跳转就要借助其内部的超级链接了。[创建方法]   (3)索引文件[Index -- .hhk文件]:一些专业书籍在其后面一般有个索引表,利用已经排序的字母、单词、词组来帮助读者快速定位到需要的一个或几个位置。在 chm 中也可以使用索引。索引文件中就包含每个关键词(keyword)与 HTML 文件的对应关系。与目录文件中的标题不同的是,一个关键词可以对应多个 HTML 文件。索引文件也不是必需的,如果你的 chm 文件的信息不是太复杂,不创建也行。[创建方法]   (4)搜索:要在 chm 文件中能使用全文搜索功能,只要在创建 chm 文件时打开一个开关就行了,这样只要在搜索框中输入要搜索的内容,chm 就会把全部包含该内容的 HTML 文件列出来,并把搜索内容高亮显示。但是如果使用搜索功能,chm 文件会稍大一点。[设置方法]   (5)书签:在我们阅读图书时,有时会在一些地方放个书签,以便下次能快速找到作标记的地方,在 chm 中同样允许你在感兴趣的地方作标记。[设置方法]   (6)窗口属性:是指 chm 文件的介面窗口。你可以自由定义窗口位置、大小、按钮、导航嵌窗、显示模式等。[设置方法]   目录、索引、搜索和书签是 chm 文件左边导航嵌窗中的四个导航选项,任何一个都可以随意打开或关闭,当四个功能全部关闭时,导航嵌窗将自动消失。   因为 HHW 对chm 的控制非常灵活,所以你可以制作出功能强大的 chm 文件,也可以制作出非常简单的 chm 文件。另外在制作中我们需要指明的是 HTML 文件,而图形、视频、声音等文件不需要指明位置, HHW 会根据 HTML 文件中的链接找到它们。 三、制作简单的 chm 文件   我们把没有导航功能的 chm 文件称作“简单的 chm 文件”,它没有导航嵌窗,网页之间的跳转全部依靠 HTML 文件中的超级链接。   下面介绍制作简单的 chm 文件(无导航功能)的步骤,这些步骤的叙述将在“制作较复杂 chm 文件”中省略或简化,所以不可不读。   1、制作没有功能按钮的 chm 文件   首先你最好把所有要用到的 html 文件及有关图形、声音、视频等文件复制到一个空文件夹中(当然可以包含子文件夹),并在 IE 浏览器中检验通过,然后启动 HHW,在 File菜单中选[New],弹出新建文件对话框。   HHW 可以新建:项目[Project]、文本文件[Text]、HTML文件、目录表文件[Table of Contents]和索引文件[Index]。我们选“项目”,弹出新建项目向导,提示你可以把以前的 WinHelp 项目文件转换为 HHW 项目文件。我们直接按“下一步”。   在这里指定你欲创建的项目的位置和文件名,我们按[Browse],选择我们的 HTML 文件所在目录,并定义一个项目文件名如 test1(程序自动添加 .hhp 后缀),按“下一步”。在出现的对话框中指定已经存在的文件。因为我们目前只有 HTML 文件而没有目录文件(.hhc)和索引文件(.hhk),所以只在[HTML files]前面打上小勾。按“下一步”,进入添加 HTML 文件的窗口,按[Add]按钮,把有关的标题 HTML 文件全部选中加入(可以一次全部选中加入)。按“完成”后,程序就会进入项目编辑界面——也就是 HHW 的主界面,参考图(2)。   首先我们给将来的 chm 文件的窗口标题条指定与 chm 内容相符的文字(如果不指定,则软件默认为“帮助”):按[Project]项目选项中左边第三个按钮“新建/编辑窗口显示风格”,在弹出的窗口类型中随便输入一个名字如“12”,按“OK”后就会进入“窗口属性”定义对话框。在[General]选项卡中的[Title bar text]中输入标题条文字“test1--最简单的 chm 文件”如图(3)。   因为我们不需要导航嵌窗及功能按钮部分,所以再确认一下在导航嵌窗[Navigation Pane]中不要选中[Window with navigation pane, topic pane, and button bar],如图(4)。按确定退回 HHW 主界面。   现在按[Compiled HTML file]编译按钮或者通过在[File]菜单中选择[Compile]进行编译,chm 文件就会在指定位置创建完成。这时你可以运行一下新创建的 chm 文件,不难发现,chm 已经包含了所有用到的 HTML 文件、图形文件等,相当于是把全部网页文件打包到 chm 文件中了。如图(5)就是最简单的chm文件显示效果。很简单吧?   3、制作包含功能按钮的 chm 文件   与上面操作相同,不同的是在进行到“窗口属性”定义操作时,在[General]中指定 chm 文件标题栏中的文字“test2---带功能按钮的 chm 文件”,在[Button]中指定欲在 chm 文件的按钮区中显示的按钮如图(6)。   在[Navigation Pane]导航嵌窗设置里选中显示导航嵌窗(与上面不一样),如图(7)。   其他选项卡中我们使用默认值(后面在介绍)。设置好后,按编译按钮,生成的 chm 文件如图(8)所示。因为我们没有生成目录表文件和索引文件,所以在 chm 中导航窗口不会显示出来。   上面制作的 chm 文件比较简单,但有时也很实用。其页面跳转必须借助 HTML 内部的超级链接和功能按钮,对于比较简单的几个 HTML 文件也已经足够了。如果 HTML 比较复杂,也可以使用分帧处理,同样会作出很不错的 chm 文件,就像我们进入一些有分帧页面的网站时的操作方式一样。如图(9)。Top 4 楼rivershan(阿门)回复于 2002-07-31 21:36:25 得分 0 四、制作较复杂的chm文件   在 windows98 中我们常见的 chm 文件多数具有目录及索引,有的还有搜索和书签,这在使用 chm 文件的过程中会比较方便。下面我们就来制作带目录、索引、搜索、书签的 chm 文件。在这里我还将介绍一些常用的选项功能的解释。   此类 chm 文件一般包含有多个 HTML 文件。与前面一样,你需要先把网页文件做好,放到硬盘一个文件夹中,如 test3。进入 HHW 后选新建项目,并指定新建项目文件的位置和文件名(如test3),在已经存在的文件中选中目录中所有用到的HTML文件后,进入 HHW 主界面。   1、目录文件的创建   按[Contents]选项卡,选择[Create a new contents file]创建新的目录文件,并命名它为 contents.hhc。然后进入目录表编辑窗口,如图(10)。   在目录编辑窗口左侧,从上到下排列有11个按钮,前5个分别是:目录表属性设置、插入标题、插入页面、编辑所选标题或页面属性、删除标题或页面,下面4个箭头用来调整所选标题或页面的位置及从属关系,最后两个分别是显示 HTML 文件源码和保存文件。   插入一个标题:按[Insert a heading]按钮,弹出[Table of Contents Entry]对话框,如图(11).   在[Entry title]中输入标题内容,如“简介”。按[Add],在弹出的[Path or URL]对话框中选择Title为“简介”对应的 HTML 文件,如图(12),按返回后一个标题就添加完成了。这里你也可以按图(12)下面的[Browse...]指定前面没有选择加入的HTML 文件,或者直接在[File or URL:]中输入。   在标题“简介”下面再添加一个标题如“准备”:按[Insert a heading]按钮,会弹出一个询问是否在所选标题上面插入标题的对话框,我们按“否”,在[Entry title]输入页面标题“准备”,并按[Add]指定对应的 HTML 文件,返回后就又加了一个标题。   在标题“准备”下面插入一个页面(或者是子标题)如“下载”:按[Insert a page]按钮,在[Entry title]输入“下载”,并按[Add]指定对应的 HTML 文件,返回。   同样方法我们可以加入许多标题、子标题、页面,并可以利用那4个箭头按钮来调整标题或页面的位置及从属关系。HHW 最多支持 9 个级别深度。   修改标题及改变标题图标的方法:选中标题,按[Edit selection]按钮,可以对其重新指定所关联的 HTML 文件,在[Advanced]中通过下面的[Image index]改变标题的图标。如图(13)。   设置目录属性:按[Contents properties]按钮以后我们可以改变目录表显示样式等,使用默认设置就行。   所有标题创建完成后,按左下角的[Save File]按钮,一个目录表文件就创建完成了。如图(14)。   2、索引文件的创建   与目录文件的创建非常类似,只是索引文件中需要指定关键词与 HTML 文件的关联关系。请参考目录文件的创建部分,不再赘述。   3、项目文件的设置   按[Project]选项卡,进入项目编辑窗口(即默认的HHW介面)。其左边排列有7个按钮,分别是:项目属性设置、增加或删除 HTML 文件、增加或改变窗口属性定义、API信息、显示 HTML 源码、保存文件、保存文件并编译。   我们按[Change project options]按钮对项目进行设置:通常需要作的是,在[General]选项卡的[Default file]中指定封面页,也就是打开 chm 文件时默认显示的 HTML 文件。封面页可以是目录表中的某个标题所对应的 HTML 文件,也可以是在目录表中不存在的专门用来作封面的 HTML 文件。如图(15)。   如果想在 chm 文件中具备全文搜索功能,还需要在[Compiler]选项卡中选中[Compile full-text search information],如图(16)。   其他内容一般可以不去理会。   4、窗口显示风格的设置   按第三个按钮[Add/Modify windows defunitions]设置窗口属性:这里的设置将决定 chm 文件的显示风格。在弹出的对话框中我们给窗口风格随便指定一个名字(如12),按 OK 就进入了[Windows Types]对话框。常用的几个设置项为:   (1)General    [Title bar text]中输入你欲在 chm 文件的标题栏显示的文字,如“轻松制作 chm 文件”。参考图(3)。   (2)Buttons    选择欲在 chm 中出现的按钮。参考图(6)。   (3)Position    [Save user defined windows position after first use]如果选中,则系统会保存 chm 使用者最后一次退出 chm 文件时窗口的位置、大小等,下次再打开 chm 时,系统会恢复这些属性。如果不选中,则每次都以你或默认的窗口大小、位置打开 chm 文件。    Left和Top是指定打开chm时,窗口左上角的位置,Width和Height则指定窗口的宽和高。如图(17)。   (4)Files    如果选择了显示Home、Jump按钮,就在这里输入对应的 URL 超链接地址,比如你的个人主页地址。   (5)Navigation Pane    [Windows with navigation pane,topic pane,andbutton]如果不选中,则chm窗口将没有导航嵌窗和按钮。    [Navigation pane width]中指定导航嵌窗的宽度。    [Open with navigation pane closed]如果选中,在打开chm文件时导航嵌窗默认为关闭状态。    [Auto sync]如果选中,chm 中的目录标题与 HTML 文件内容将自动保持同步。    [Automatically show/hide navigation pane]如果选中,在 chm 为活动(当前)窗口时,导航嵌窗显示,当不是活动窗口时,导航嵌窗自动隐藏。    [Default tab]中指定导航嵌窗中默认的显示项。这里可以是目录、索引、搜索、书签。    [Search tab]如果选中,在chm中将具备全文搜索功能,而[Advanced]可以让 chm 具有高级搜索的功能(使用and,or,not,near)。    [Favorites tab]如果选中,chm文件就会具有书签功能。如图(18)。   另外两个选项卡可以不用管它,使用HHW的默认设置就行。   5、编译成chm文件   经过上面的设置,我们就可以编译了。按工具栏中的编译按钮,或者直接按项目窗口左下方的[Save all file and Compile]按钮,几秒钟以后 chm 文件就被编译完成。然后用鼠标双击此 chm 文件就可以看到你的作品了,如果发现问题,还可以返回 HHW 里进行修改调整。参考图(1)。 HTML Help Workshop   微软的HTML Help Workshop 制作CHM文件的工具。   我们可以使用微软的HTMLHelpWorkshop(以下简称HHW)或者“国华软件工作室”的eTextWizard(电子文档处理器,以下简称EW)。HHW在VB、VC等开发工具的CD中都有,也可以到微软的站点去下载最新版本,华军软件园(http://www.newhua.com)还有汉化的版本。EW是国人开发的软件,使用上要方便一些,下载地址为http://chmbook.363.net,在此我们以HHW为例。参考下载资料http://hi.baidu.com/e000/blog/item/51a143a96c65fafc1f17a24d.html   假设我们制作好的主页放在C:est目录中,其中有一个index.html,通过它可以链接到所有其他的文件。   1.打开HTML Help Workshop,单击“File→New”菜单(或者单击工具栏第一个按钮),出现“New”对话框,选择其中的“Project”后,按“OK”,创建一个工程。   2.这一步的对话框提供了从*.hlp到*.chm文件的转换,在此我们不需要,直接按“下一步”。   3.这一步的对话框要求指定工程的位置。单击“Browse”,进入C:est目录,并在文件名中键入“test”,这时文本框中应出现“C:est est.hlp”,然后按“下一步”。   4.这一步要求选择你已为工程创建的文件类型,在此我们选择第三个“HTML files(.htm)”。   5.现在需要添加我们制作好的HTML文件,按“Add”,选择“C:est index.html”,将它添加到列表框。说明一下,只要被index.html文件直接或间接链接到的文件,都会包含进去,因此不是将所有的文件添加进去。然后单击“完成”即可。   6.单击“File→Compile…”(或工具栏第三个按钮),出现“Create a compiled file”对话框,直接单击“Compile”。   7.测试   在资源管理器中双击生成的C:estest.chm,在页面单击右键,在菜单中选择“属性”,在“属性”对话框中复制其中的“地址”(应该为mk:@MSITStore:C:est est.chm::/index.html)。将上面的地址粘贴到浏览器的地址栏中,如果正确,按回车可以在浏览器中看到正确的页面。
标题:PHP基础教程 出处:风流的CG网络日志 时间:Mon, 28 Aug 2006 07:24:34 +0000 作者:yufeng 地址:http:///read.php?38 内容: 提供给新手学习的 PHP新手教程,是一个比较有价值的PHP新手教程! 一、PHP简介 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。 1.简介 PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。 PHP代表:超文本预处理器(PHP: Hypertext Preprocessor)。PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.net)自由下载。PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么PHP也一样没有千年虫问题! 1.1 历史 三年前,Rasmus Lerdorf为了创建他的在线简历而创造了"个人主页工具"(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。 PHP虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。现在有了可以与mod_perl速度想媲美的被称作Zend的新引擎,而PHP4就可以充分利用这个引擎。PHP4还处在BETA测试阶段。Andy Gutmans和Zeev Suraki是Zend的主要作者。可以去Zend站点(http://www.zend.com)了解更多。 PHP的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。 1.2 PHP的先进之处 应用PHP有许多好处。当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到PHP4之前)。但是PHP的邮件列表很是有用而且除非你正在运行像Yahoo!或者Amazon.com这样的极受欢迎的站点,你不会感觉出PHP的速度与其他的有什么不同。最起码我就没有感觉出来!好了,让我们来看看PHP有那些优点: - 学习过程 我个人更喜欢PHP的非常简单的学习过程。与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。 PHP的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。 你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。 - 数据库连接 PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。 - 可扩展性 就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。 - 面向对象编程 PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。 - 可伸缩性 传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! 1.3 竞争对手:ASP,mod_perl,JSP 我当然不清楚ASP/JSP能做些什么。不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,因此Java程序员可以轻松开始编码。ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。 mod_perl与Perl一样强大,只是更快一些。 二、PHP入门 PHP站点的在线教程已经很棒了。在那里还有一些其他教程的链接。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的PHP编程。 2.1 首要条件 你首先必须要有一个正在工作着的支持PHP的web服务器。我假定在你的服务器上所有PHP文件的扩展名为.php3。 2.2 PHP的安装 生成一个名为test.php3的文件,含有以下内容: 然后在你的浏览器中打开此文件。看看这个页面你就知道你的PHP安装使用的选项了。 2.3 语法 就像前面提到的一样,你可以混合编写你的PHP代码和HTML代码。因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法。你可以选用其中一种你最适应的并且就这样坚持这种方法! 从HTML中分离 以下是可以使用的方法: . . . 语句 与Perl和C一样,在PHP中用(;)来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。 注释 PHP支持C,C++和Unix风格的注释方式: /* C,C++风格多行注释 */ // C++风格单行注释 # Unix风格单行注释 Hello,World! 通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: First PHP page 2.4 数据类型 PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。但是类型也可以被函数cast或者settype()明确的设定。 数值 数值类型可以是整数或是浮点数。你可以用以下的语句来为一个数值赋值: $a = 1234; # 十进制数 $a = -123; # 负数 $a = 0123; # 八进制数 (等于十进制数的83) $a = 0x12; # 十六进制数(等于十进制数的18) $a = 1.234; # 浮点数"双精度数" $a = 1.2e3; # 双精度数的指数形式 字符串 字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # 产生 Hello World $full2 = '$first $second';# 产生 $first $second 可以将字符和数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在PHP手册中有详细的例子。 数组与哈希表 数组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为数组赋值。数组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。 // 一个包含两个元素的数组 $a[0] = "first"; $a[1] = "second"; $a[] = "third"; // 添加数组元素的简单方法 // 现在$a[2]被赋值为"third" echo count($a); // 打印出3,因为该是数组有3个元素 // 用一个语句定义一个数组并赋值 $myphonebook = array ( "sbabu" => "5348", "keith" => "4829", "carole" => "4533" ); // 噢,忘了教长吧,让我们添加一个元素 $myphonebook["dean"] = "5397"; // 你定义的carale元素错了,让我们更正它 $myphonebook["carole"] => "4522" // 我还没有告诉你怎样使用数组的相似支持方式吗?让我们看一看 echo "$myphonebook[0]"; // sbabu echo "$myphonebook[1]"; // 5348 其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。 对象 使用new语句产生一个对象: class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); 改变变量类型 在PHP手册中提到:"PHP不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。如果你为变量var赋值为一个字符串,那么它变成了一个字符串。如果你又为它赋了整数值,那么它就变成了整数。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整数(2) $foo = $foo + 1.3; // $foo是一个双精度数(3.3) $foo = 5 + "10 Little Piggies"; // $foo是一个整数(15) $foo = 5 + "10 Small Pigs"; // $foo是一个整数(15) 如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。 2.5 变量与常量 可能你已经注意到,变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请参考PHP手册。这在有时会显得很有用。 PHP内置了许多已定义的变量。你也可以用define函数定义你自己的常量,比如define("CONSTANT","value")。 2.6 运算符 PHP具有C,C++和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋值同样使用"="。 算术和字符 以下只有一种运算符是有关字符的: $a + $b :加 $a - $b :减 $a * $b :乘 $a / $b :除 $a % $b :取模(余数) $a . $b :字符串连接 逻辑和比较 逻辑运算符有: $a || $b :或 $a or $b :或 $a && $b :与 $a and $b :与 $a xor $b :异或 (当$a或$b为true时为true,两者一样时为false) ! $a :非 比较运算符有: $a == $b :相等 $a != $b :不等 $a < $b :小于 $a $b :大于 $a >= $b :大于等于 与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。 优先权 就和C以及Java一样! 2.7 控制流程结构 PHP有着与C一样的流程控制。我将在下面大概介绍。 if, else, elseif, if(): endif if (表达式一) { . . . } elseif (表达式二) { . . . } else { . . . } // 或者像Python一样 if (表达式一) : . . . . . . elseif (表达式二) : . . . else : . . . endif ; Loops. while, do..while, for while (表达式) { . . . } do { . . . } while (表达式); for (表达式一; 表达式二; 表达式三) { . . . } //或者像Python一样 while (expr) : . . . endwhile ; switch switch是对多重if-elseif-else结构的最好的替换: switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i equals 2"; } break, continue break中断当前的循环控制结构。 continue被用来跳出剩下的当前循环并继续执行下一次循环。 require, include 就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。 2.8 函数 你可以像以下的例子一样定义自己的函数。函数的返回值可以是任何数据类型: function foo (变量名一, 变量名二, . . . , 变量名n) { echo "Example function.\n"; return $retval; } 所有PHP代码都可以出现在函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义。 2.9 类 利用类模型建立类。可以参考PHP手册中对类的详细解释。 class Employee { var $empno; // 员工人数 var $empnm; // 员工姓名 function add_employee($in_num, $in_name) { $this->empno = $in_num; $this->empnm = $in_name; } function show() { echo "$this->empno, $this->empnm"; return; } function changenm($in_name) { $this->empnm = $in_name; } } $sbabu = new Employee; $sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show(); 三、从实例入手  PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。 3.1 计划一个站点 一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,甚至还有照片集和一些音乐文件等等。让我们从一个标题页面、一个联系信息页面和一个简历页面开始。我们同样需要标准的通用的页面头部和底部。 标题页面--front.html 这里我们有一个非常简单的html文件: 我的个人主页--欢迎 我的个人主页 欢迎 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 Copyright ? 我自己,1999 联系信息页面--count.html 同样我们又有了一个简单页面: 我的个人主页--联系信息 我的个人主页 联系信息 你可以通过1-800-PHP-INFO联系我 Copyright ? 我自己,1999 3.2 HTML到PHP 从上面你可以看出,每个页面有相同的头部和底部。像上面那样每个页面都写入相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在一个叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。 全站通用变量设定:common.inc 通用页面头部:header.inc 通用页面底部:footer.inc Copyright ? by , 1999 新的页面front.php3: 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 新的cont.php3: 你可以通过1-800-PHP-INFO联系我 现在你就可以猜出这样安排的好处了。如果你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注意的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。 3.3 计数器 让我们在首页上加上一个计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码: 然后我们更改front.php3文件以显示这个计数器: 看看我们的新front.php3 3.4 反馈表单 让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输入表单;一个获得表单数据并处理、mail给你。 PHP中获取表单数据是很简单的。当一个表单被发送后,表单中所包含的各个元素被赋上了相应的值,而这样就可以像引用一般变量一样使用了。 在process_form.php3中,变量$mytext就被赋予了输入的值--非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量值。你唯一要做的就是为表单中的每一个元素取名以便将来可以引用。 根据这个方法,我们可以生成一个简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的PHP页面(sendfdbk.php3)读取数据,检查姓名是否为空,最后将数据mail给你。 表单:form.php3 Your feedback on my home page. 处理表单:sendfdbk.php3 title = "Feedback"; include("include/header.inc"); if ( $name == "" ) { // 现在我很讨厌匿名的留言! echo "Duh ? How come you are anonymous?"; } elseif ($name == "Your name") { // 这个浏览者真是不想透露姓名啊! echo "Hello ? Your name is supposed to be replaced with your actual name!"; } else { // 输出一段礼貌的感谢语 echo " Hello, $name. Thank you for your feedback. It is greatly appreciated. Thanking you $MyName $MyEmailLink "; // 最后mail出去 mail($MyEmail, "Feedback."," Name : $name E-mail : $email Comment : $comment "); } include("include/footer.inc"); ?> 3.5 简单的站内搜索引擎 PHP可以调用外部程序。在Unix环境下我们可以利用程序grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果。
注释: PHP_SELF是PHP内建的变量。包含当前文件名。 fgets()按行读取文件,最多4096(指定)字符长度。 fgetss()与fgets()相似,只是解析输出的HTML标记。 split()有一个参数是2,因为我们只需要把输出分成两部分。另外需要省略":"。 each()是一个数组操作函数,用来更方便的遍历整个数组。 popen()、pclose()与fopen()、fclose()的功能很相似,只是增加了管道处理。 请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索 四、与数据库链接 通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接。我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。 PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的PHP安装选项应该可以支持两者的使用。 想获得更多有关在Microsoft Windows平台上安装支持PHP3的Apache服务器的知识以及更多有关Oracle数据库的知识,请查阅以下URL:www.csoft.net/~vsbabu/articles/oraphp.html。 4.1 连接 以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。 4.2 查询 假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了一个连接并查询的典型例子: (译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分) 4.3 显示结果 以下代码演示了怎样查询数据库并将结果输出: (译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分) 4.4 基于HTTP的Oracle登录 将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。 title="Login Instructions"; echo " You are not authorized to enter the site \n"; exit; } else { if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW))) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorised to enter the site \n"; exit; } } ?> 五、其它功能 5.1 生成图像 PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。 (译者注:以上代码段缺少注释,请读者参考PHP Manual的图像处理函数部分) 这段代码在其他页面中通过以下标记调用,然后以上的那段button.php3代码取得text值并在另外取得的图像文件中加上该值--在以上的代码中该图像文件是images/button1.gif--最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。 5.2 Cookies PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输出HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是一个简单例子: = "(60*60*24*7)" ) echo "Why did you take a week to come back. You should be here more often!? "; } ?> 5.3 基于HTTP验证 基于HTTP验证当PHP以CGI模式运行时不能实现。我们可以使用函数header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。这两个变量被储存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用这两个变量验证合法并允许进入。以下的例子通过用户名称/密码对为tnc/nature的验证一名用户的登录: 事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。 5.4 文件上传 你可以利用PHP实现文件的功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上。以下就是该功能的简单演示: ( upload.html ): Upload Your File (You may notice a slight delay while we upload your file.) 下面是处理上传的文件: ( receiver.php3 ): 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } $the_time = time (); // 你需要对以下目录有写权限 $upload_dir = "/local/uploads"; $local_file = "$upload_dir/$the_time"; if ( file_exists ( '$local_file' ) ) { $seq = 1; while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; } $local_file = "$upload_dir/$the_time$seq"; }; rename ( $uploadfile, $local_file ); display_page (); } function display_page () { // 这里是你的页面内容 } php3 Receiving Script 5.5 常用函数 我们简单来看看一些常用的函数。 数组 array - 生成数组 count - 数组元素个数 sort - 数组排序,另有其他几种排序函数可供使用 list - 列出数组元素 each - 返回下一个key/value对 current - 返回当前数组元素 next,prev - 传回当前数组元素前后指针 日期和时间 checkdate - 验证日期/时间格式 date - 生成日期/时间格式 time - 当前时间信息 strftime - 格式化日期/时间 目录、文件系统 chdir - 改变目录 dir - 目录类别 opendir, readdir, closedir - 开启、读取、关闭目录 fopen, fclose - 开启、关闭文件 fgets, fgetss - 逐行读取内容 file - 将整个文件读入一个数组变量中 正则表达式 ereg - 匹配正则表达式 eregi - 大小写非敏感匹配正则表达式 ereg_replace -匹配正则表达式并替换 eregi_replace -大小写非敏感匹配正则表达式并替换 split - 依规则切开字符串并以数组形势存储 字符串 AddSlashes - 加上斜杠后使用字符串 echo - 输出一个或多个字符串 join, implode - 将数组元素合并为字符串 htmlentities, htmlspecialchars - 将HTML特殊字符转换为HTML标记形式 split - 依规则切开字符串并以数组形势存储 5.6 扩展我们的范例主页 我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。 导航栏 实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码: read()) { // 忽略无文件情况 if ( !is_file($entry) ) continue; /* 将文件名与扩展名分开。由于.是正则表达式特殊字符,应该用\引出 */ list($filenm, $fileext) = split("\.",$entry, 2); // 忽略非.php3文件情况 if( $fileext != "php3" ) continue; /* 现在我们已经把.php3文件都选出,下面搜寻文件中的第一行(标题) 类似$title="something"; 并将以上标题内容分开,用作链接文字 */ $linknm = ""; $fp=fopen($entry,"r"); while($buffer=fgets($fp, 4096)) { $buffer = trim($buffer); // 我们已经把每个文件的标题放在文件的第一行以便搜索 // 但是当你改变变量名称时可能会带来大麻烦 if (ereg("title *= *\"", $buffer)) { /* 我们已经取得了标题内容并可以在此基础上 进行去除空格等处理。 必须以PHP代码方式处理,比如$title = "blah blah" */ eval($buffer); // 然后将链接文字显示为标题文字 $linknm = $title; break; } } fclose($fp); if ( $entry == basename($PHP_SELF) ) echo "$linknm"; else echo "$linknm"; echo " | "; } $d->close(); echo " \n"; ?> 照片收藏夹 我们将引用基于HTTP的验证、文件系统函数和文件上传功能维护放置图像文件的目录。 同时我们需要建立一个可以列出在该目录下所有照片的页面。 文件上传 按钮则转向首页面 header ( "Location: front_2.php3" ); exit; } function do_upload () { global $userfile, $userfile_size, $userfile_name, $userfile_type; global $local_file, $error_msg; global $HTTP_REFERER; if ( $userfile == "none" ) { $error_msg = "You did not specify a file for uploading."; return; } if ( $userfile_size > 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } // Wherever you have write permission below... $upload_dir = "photos"; $local_file = "$upload_dir/$userfile_name"; if ( file_exists ( $local_file ) ) { $error_msg = "Sorry, a file with that name already exists"; return; }; // 你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3… rename($userfile, $local_file); echo "The file is uploaded\n"; echo "Go Back\n"; } $title = "Upload File"; include("include/header.inc"); if (empty($userfile) || $userfile=="none") { // 输出以下表单 ?> (You may notice a slight delay while we upload your file.) 照片图库 Here are some of our family photos. This PHP script can really be made better, by splitting into multiple pages. read()) { if (is_file("photos/$entry")) echo "\n"; } $d->close(); ?> 另外,你可以在文件上传的表单中加上一个输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。 六、网络资源 你可以通过web上的众多资源更多的了解PHP3。许多邮件列表和书籍对你都非常有用。 6.1 站点 PHP的爆炸性流行使得一夜之间出现了很多基于PHP的站点,其中不少站点有在线教程、范例代码、技巧和提示等内容。 国内 http://www.phpuser.com - PHP中文用户,也就是这里了 http://www.phpx.com - 中国PHP联盟 http://www.phpsite.net - PHP专门站 http://www.phpchina.com - PHP CHINA http://www.cpcw.com/netschool/homepage/cgi/ - 电脑报网页陶吧 国外 http://www.php.net/ - PHP官方站点 http://www.devshed.com/ - 极好的教程 http://px.sklar.com - 代码交换 http://www.phpbuilder.com/ - 教程、专栏和邮件列表档案 http://www.weberdev.com/ - 文章和代码 http://www.phpwizard.net/ - 提示与技巧 http://www.iometrics.com/php/phplist.php3/ - IOMetrics scripts的档案 http://www.e-gineer.com/phpkb/ - PHP知识库 6.2 邮件列表 你可以在PHP官方站点的"支持"栏目内登记获得以下的邮件列表。值得注意的是这些都是高流量流表,一般每天会有100份e-mail。 php3@lists.php.net - 主要的列表 php-dev@lists.php.net - 主要针对开发者 php-list@exp.com.cn - 本站的邮件列表,与论坛相通 6.3 引人注目的工程 一些基于PHP的工程已经发展得比较完善。其中一些更出色更引人注目的是: http:// phplib.netuse.de - PHPLib,一整套PHP函数库 http://www.phorum.org - Phorum是一个很完善的BBS系统 http://www.fishcartsql.org - FishCartSQL是一个电子商务解决方案 http://www.midgard-project.org - Midgard是一个网络应用开发平台 Generated by Bo-blog 2.0.2 sp2

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧