十天学会PHP之第二天
学习目的:掌握php的流程控制 1、if..else 循环有三种结构 第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: if (expr) { statement } 其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 范例:本例省略大括号。 <?php if ($state==1)echo "哈哈" ; ?> 这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。 范例:本例的执行部分有三行,不可省略大括号。 <?php if ($state==1) { echo "哈哈 ; echo "<br>" ; } ?> 第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 <?php if ($state==1) { echo "哈哈" ; echo "<br>"; } else{ echo "呵呵"; echo "<br>"; } ?> 第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。 直接看下面的例子 <?php if ( $a > $b ) { echo "a 比 b 大" ; } elseif ( $a == $b ) { echo "a 等于 b" ; } else { echo "a 比 b 小" ; } ?> 上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else […]
View DetailsIIS6整合PHP详解
在iis上配置PHP是一件很容易的事,只要稍作几部设置就可以完成iis整合php的设置!下面给大家介绍下iis下整合php的详细教程: 将PHP压缩包解压到某个位置,一般为 C:\PHP 将php.ini-dist改名为php.ini,放到C:\windows目录下,注意php.ini上的权限,如果虚拟主机设置了权限去除了windows目录下的users,那么复制过去的php.ini是没有权限的,所有dll会无法加载php.ini中修改 extension_dir = "C:\php\ext" 设置PHP存放扩展的dll文件的路径建立一个存放session的目录,比如为sessions在php.ini中修改 session.save_path = C:\php\sessions" 设置session存放在指定的这个目录建立一个存放上传文件的临时目录,比如为temp(要求该目录的父目录有列文件夹的权限,否则也会有权限问题)在php.ini中修改 upload_tmp_dir = "C:\PHP\temp"给整个PHP目录users的读权限,给sessions目录和temp目录的users的读写权限将output_buffering=Off改为output_buffering=On ,开启输出缓冲开启后可以解决一些网站打开报错或打开空白的情况,并且不会对其他正常网站造成不良影响。—————————————————————--开启常用的扩展,即去掉相应;extension=XXX.dll前面的分号下面为常用扩展extension=php_curl.dllextension=php_gd2.dll ;图形处理用,比如图片缩放,水印extension=php_mbstring.dll ;phpmyadmin需要extension=php_mcrypt.dllextension=php_mhash.dllextension=php_mssql.dll ;sqlserver需要extension=php_mysql.dll ;mysql需要extension=php_mysqli.dll ;同上extension=php_pdo.dllextension=php_pdo_mssql.dllextension=php_pdo_mysql.dllextension=php_pdo_sqlite.dll—————————————————————--ISAPI方式:在IIS的web服务扩展里,添加一条扩展指向C:\php\php5isapi.dll文件,设置为允许在IIS的“网站--主目录--配置--应用程序扩展”里,添加.php的扩展名指向C:\php\php5isapi.dll(与CGI方式二选一,建议使用此方法)给PHP目录加上users的读权限给整个PHP目录加上users的读权限(其实是需要加network service权限就可以),如果用ISAPI模式,是需要有这个权限的,CGI的不需要使用此方式,c:\windows\php.ini文件必须有network service的读权限。CGI方式:在IIS的web服务扩展里,添加一条扩展指向C:\php\php-cgi.exe文件,设置为允许在IIS的“网站--主目录--配置--应用程序扩展”里,添加.php的扩展名指向d:\php\php-cgi.exe(与ISAPI方式二选一,不建议)给PHP目录加上users的读权限php.ini里设置cgi.force_redirect = 0,这个值不设置时默认为1,用CGI必须设置为0—————————————————————--支持mysql除了开启php_mysql.dll扩展外,还要将PHP目录下的libmysql.dll复制到c:\windows\system32下支持MSSQL(可以不设置)除了开启php_mssql.dll扩展外,还要将ntwdblib.dll文件复制到c:\windows\system32下注意:PHP里自带的这个文件的版本不对,是连接不了的,要使用所连接的SQL Server安装目录下的ntwdblib.dll文件的版本。2000数据库对dll文件版本有要求,2005的话,似乎用任意版本的dll都可以连。—————————————————————--支持curl除了php.ini开启curl扩展外,还要将libeay32.dll, ssleay32.dll这两个文件放到system32文件夹下才可以 —————————————————————-- 支持mcrypt除了php.ini开启mcrypt扩展外,还要将libmcrypt.dll放到system32文件夹下才可以 —————————————————————-- 其他设置一般为默认不动,用户需要时再设置post_max_size = 8M 默认是8Mupload_max_filesize = 2M 默认是2M开启全局变量register_globals = Off 默认不开启加大超时时间限制max_execution_time = 30 默认是30秒 或者设置其他内容等 按照以上的方法做完以后,如果可以打开php页面的话,那么说明你的iis下整合php配置成功了 本文章由中国数据(www.zgsj.com)--http://zhidao.zgsj.com原创,转载请保留此句
View DetailsZend Studio百度百科
Zend Studio简介 Zend Studio是Zend Technologies开发的PHP语言集成开发环境(Integrated Development Environment IDE)。也支持HTML和js标签,但只对PHP语言提供调试支持。因为是同一个公司的产品,所以提供的Zend Framework方面的支持比其他软件好。Zend Studio5.5系列后,官方推出利用了Eclipse平台,基于PDT的Zend Studio for Eclipse 6.0,之后的版本也都构建于Eclipse。 Zend Studio是屡获大奖的专业 PHP 集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能。 Zend Studio特点 1.快速代码开发与配置本地和远程调试器; 2.数据库连通性 & SQL工具 团队合作环境; 3.完全 PHP 4/PHP 5 切换 PHPDocs/PHP文档处理程序支持SFTP, FTP以至SSH的安全连接 100个以上代码摘录; 4.50个以上样品数据库应用程序 与Zend Platform组合。 Zend Studio产品特征 Zend Studio 设计时考虑了商务应用开发的需要,是开发者利用PHP创造强有力数据库应用软件的完美开发环境。Zend Studio 具有专业和企业开发者开发、配置、调试和管理关键商务PHP应用的易使用性、可伸缩性、可靠性和扩展性。 1.PHP最强有力的开发环境提高生产力:通过完全的PHP5支持、编码分析器、编码组合功能、语法检索、项目管理器、编码编辑器、绘图调试器(向导)。超强智能编码:具备新的和更优秀的分析和优化工具像PHP编码检测器,。PHP的标准记录工具--PHP文档记录器:非常容易记录PHP代码、程序应用和方案。FTP和SFTP组合简化配置,使开发者安全地从远程服务器灵活的上载和下载项目文件。 2.高水平的商务应用开发直接链接最广泛使用的专业数据库,像IBMDB2/Cloudscape/Derby、MySQL、Oracle、MicrosoftSQL Server, PostgreSQL和 SQLite。通过使用带 SQL92 和 语法检索支持的Zend SQL Query Editor,到被链接服务器上进行写和执行程序的访问。用 Zend SQL Explorer 观看数据库结构和管理内容。 3.PHP完整的调试环境先进的调试特征优势,包括:Conditional Breakpoints, Stack Trace View, Advanced Watches, Variables and Output Buffer利用最强大的PHP调试器在本地或远程调试本地的环境。对于本地调试或者是基于互联网的远程调试都能够确保安全连接用“一次点击浏览器调试”从浏览器直接调试和分析编码。 4.强有力的团队开发和管理工具从 Zend Studio 内直接应用 CVS,通过有效地管理源代码 ,容易进行团队的开发与合作。利用综合性能编辑器,监视访问功能,优化应用程序的总体性能。Zend Studio 与 Zend Platform 结合使用时,可以实时获得代码和脚本性能的反馈。ZEND STUDIO 为流行的 SQL 数据库包括 […]
View DetailsZend Framework
Zend Framework (简写ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP开发框架,可用于开发 Web 程序和服务,ZF采用 MVC(Model–View-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。 Zend Framework 是用于 PHP 开发 Web 应用程序和 Web Service 程序的高品质开源框架。 利用 PHP 自身特性,Zend Framework 有很高的易用性和强大的功能。它提供了先进、健壮和安全的开发网站的解决方案。 ZF中的组件可以独立使用,但如果将它们组合起来,就形成了一个强大而可扩展的web开发框架。 ZF 提供了强壮而高效的 MVC实现,易于使用的数据库摘要和实现 HTML 表单解析、校验和过滤的表单组件,这样 开发者可以通过这些易用的、面向对象的接口联合所有这些操作。其它组件如 Zend_Auth和 Zend_Acl通过通用 的证书(credential)存储提供用户认证和授权。还有其它实现的客户库来简化访问最流行的可用的 web 服务。 不论你的程序需要什么,你都可能从 Zend Framework 中找到经过全面和严格测试的组件来使用,可以极为有效地减少开发时间。 Zend Framework 项目的主要赞助者是 Zend Technologies,但许多 其它公司也贡献了组件或重大功能。例如 Google、 Microsoft 和 StrikeIron 作为伙伴提供了 web 服务接口和其它 希望给 Zend Framework 开发者使用的技术。 没有活跃的 ZF 社区,Zend Framework 就不能交付和支持所有这些功能。社区成员包括贡献者都可以在这些地方找到: mailing lists, IRC channels 和其它论坛。无论你有什么关于 ZF 的问题,在社区里总能找到答案。 代码完全采用PHP5 面向对象编写;丰富完善的组件支持;良好的 Ajax 支持; 模块化的结构设计,易于扩展;完善的文档资料;灵活的架构设计; MVC是提高程序的可维护性的方法:将这个程序代码分为MVC三个部分 模型 关心的是欲显示的数据细节。关注的应用程序的业务逻辑部分,关注的是如何使用数据库来读取和保存数据。 […]
View Details十天学会PHP之第一天
以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。 至于表单设计什么的,我这里也不想多说了,在《十天学会ASP》中已经有介绍。 下面简单介绍一下PHP的语法。 1、嵌入方法: 类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。 2、引用文件: 引用文件的方法有两种:require 及 include。 require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。 include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 3、注释方法: <?php echo "这是第一种例子。\n" ; // 本例是 C++ 语法的注释 /* 本例采用多行的 注释方式 */ echo "这是第二种例子。\n" ; echo "这是第三种例子。\n" ; # 本例使用 UNIX Shell 语法注释 ?> 4、变量类型: $mystring = "我是字符串" ; $NewLine = "换行了\n" ; $int1 = 38 ; $float1 = 1.732 ; $float2 = 1.4E+2 ; $MyArray1 = array( "子" , "丑" , "寅" , "卯" ); 这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。 5、运算符号: 数学运算: 符号 意义 + 加法运算 – 减法运算 * 乘法运算 / 除法运算 % 取余数 ++ 累加 — 递减 字符串运算: 运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的& <? $a = "PHP 4" ; $b = "功能强大" ; echo […]
View Details.NET Framework 4.0的新特性
本文将揭示.NET 4.0中的3个新特性:图表控件、SEO支持以及ASP.NET 4可扩展的输出缓存。 图表控件 微软向开发者提供了大量可免费下载的图表控件,可以在.NET 3.5 ASP.NET或WinForms项目中使用这些控件。要想在Visual Studio 2008中使用这些控件则需要安装一个插件,该插件提供了VS工具箱及智能集成功能。现在这些控件已经集成到了.NET 4.0中,这样就无需再去下载额外的插件了。Samples Environment for MS Chart Controls提供了这些控件的使用示例。下图是示例的运行截图: ASP.NET 4.0 SEO 微软发布了一个SEO Toolkit并集成到了IIS 7中,同时可以在IIS Manager中运行。除了可以创建站点地图和地图索引外,该工具集还能够从SEO的视角分析站点情况,在出现SEO规则违例时生成报告:创建错误描述并给出进一步的改进提示。这些规则有:重复的文件、重复的标题、没有内容、过多的内容等等。该工具集会从性能视角分析站点,识别出运行缓慢或是会访问很多资源的页面。我们还可以通过增加自定义规则来扩展该工具集。 虽然该SEO Toolkit需要运行在IIS Manager上,但并不需要在服务器上安装别的东西。此外,它还可以对所有操作系统上的所有Web服务器进行分析。Scott Guthrie总结了可以进一步提升SEO的ASP.NET 4.0中的新特性,如下: ◆Page.MetaKeywords与Page.MetaDescription; ◆ASP.NET Web Forms的URL Routing支持; ◆Response.RedirectPermanent()。 我们可以通过Page类的MetaKeywords和MetaDescription属性以编程的方式设定站点的关键词和描述。Guthrie阐述了这么做的意义所在: ASP.NET 4.0的<head>服务器端控件会在输出页面的<head>部分时使用到他们,这对于使用了母板页的站点非常有用——<head>部分位于.master文件中,这就与包含了具体页面内容的.aspx文件独立开来,现在可以在.aspx页面中设定新的MetaKeywords和MetaDescription属性并通过母板页中的<head>控件自动生成其值。URL Routing会将外部URL转换为内部的。通过这种方式,站点可以公开SEO友好的URL,但却可以在内部使用不同的链接。这对于遗留站点来说非常有用。 我们应该使用Response.RedirectPermanent()方法而非Response.Redirect(),因为后者会生成一个临时的重定向,这导致搜索引擎在多个重定向之间跳跃,降低了页面的等级。Guthrie解释了RedirectPermanent()的工作方式: ASP.NET 4.0引入了一个全新的Response.RedirectPermanent(string url)辅助方法,可以通过HTTP 301(moved permanently)响应进行重定向。这样,搜索引擎和其他能够识别出永久重定向的user agents就会存储并使用与内容关联的新URL。这么做会为页面内容加上索引,同时提升搜索引擎对页面的PR(Page Ranking)值。 ASP.NET 4.0输出缓存 自从1.0开始,ASP.NET就拥有了一个输出缓存来存储页面和资源以提供更快的响应速度,但存储位置只能在内存中。ASP.NET 4.0提供了一个扩展点,可以在本地/远程磁盘、数据库、分布式缓存引擎(如velocity、memcached)甚至是云中增加多个缓存。 转自:51cto.com 原文标题:三方面诠释.NET 4.0的新特性
View DetailsC#进制转换
//十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));//十进制转十六进制Console.WriteLine("十进制166的十六进制表示: "+Convert.ToString(166, 16)); //二进制转十进制Console.WriteLine("二进制 111101 的十进制表示: "+Convert.ToInt32("111101", 2));//八进制转十进制Console.WriteLine("八进制 44 的十进制表示: "+Convert.ToInt32("44", 8));//十六进制转十进制Console.WriteLine("十六进制 CC的十进制表示: "+Convert.ToInt32("CC", 16));
View DetailsC#里WinForm程序启动时不显示主窗体的方法
注:转载的一篇文章,我用的是第三种方法,通过重载SetVisibleCore,实现窗体的启动就不显示,也不闪烁一下。 看了两篇文章(1和2),然后把文中的代码整理了以下,文中所述WinForm程序启动时不显示主窗体的实现方法主要有以下5种,个人觉得第五种最简单,而且效果也不错,第四种方法也值得推荐。 实现代码及简短解释如下: //隐藏窗体的方法1/5:不指定任何窗体为主窗体//注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。//但是在没有主窗体中,不行。//只能使用Application.Exit()才能关闭应用程序。//using可以保证Application结束前,关闭MyMainFormusing (new Form1()){ Application.Run();};//Application.Run(new Form1()); //隐藏窗体的方法2/5://通过close()关闭主窗口同时可以关闭应用程序 //隐藏窗体的方法4/5 part1/2: 推荐使用!!!//ApplicationContext实质上就是一个Application与主窗体之间的连接器, //掌管着二者之间的互动关系。其中最主要的,就是负责在主窗体//关闭时结束线程。既然如此,我们只要根据需要自定义一个ApplicationContext就可以了 this.mainFormInternal .Closed += new EventHandler(mainFormInternal_Closed);} protected override CreateParams CreateParams{get{Hide();return base.CreateParams;}}//隐藏窗体的方法3/5://这种方法仍然不能用Close主窗口的方式来关闭应用程序, 还得使用Application.Exit。protected override void SetVisibleCore( bool value){base.SetVisibleCore(false);}//注意:方法2和3 使用Show好像没办法调出主窗口,比较郁闷。internal class HideOnStartupApplicationContext : ApplicationContext{private Form mainFormInternal;// 构造函数,主窗体被存储在mainFormInternalpublic HideOnStartupApplicationContext( Form mainForm){this.mainFormInternal = mainForm;// 当主窗体被关闭时,退出应用程序void mainFormInternal_Closed(object sender, EventArgs e ){Application.Exit(); }}//在Main中作如下修改: HideOnStartupApplicationContext context = new HideOnStartupApplicationContext( new Form1());Application.Run(context );//隐藏窗体的方法5/5: 推荐使用!!!//在构造函数中或者直接设置form属性this.ShowInTaskbar = false;this.WindowState = FormWindowState.Minimized; 程序中配合notifyIcon 控件一起使用,效果很好! 以上代码在VS2005下编译通过。
View DetailsC#列表所有IIS站点以及相关站点属性
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Windows.Forms.Design; using System.DirectoryServices; using System.Reflection; using System.Text.RegularExpressions; int TotalServerCount=0; DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC"); //TotalServerCount=rootfolder.Children.SchemaFilter.Count; foreach (DirectoryEntry child in rootfolder.Children) { if (child.SchemaClassName == "IIsWebServer") { TotalServerCount+=1; } } //循环获取所有站点详细属性写入数组中 string [] arrayServerID = new string[TotalServerCount];//站点标识符 string [] arrayServerIP = new string[TotalServerCount];//站点主机头 string [] arrayServerPort = new string[TotalServerCount];//站点主机头 string [] arrayServerHeader = new string[TotalServerCount];//站点主机头 string [] arrayServerPath = new string[TotalServerCount];//站点主机头 string [] arrayServerComment = new string[TotalServerCount];//站点主机头 string [] arrayServerBinds = new string[TotalServerCount];//站点主机头 string currentServerBindings;//绑定主机头IP端口字符串 char[] a=":".ToCharArray(); string […]
View Detailsc#中Dictionary、ArrayList、Hashtable和数组的区别是什么?
C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小, 但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的 2.数组要声明元素的类型,集合类的元素类型却是object. 3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。 4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。 很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问! //数组 int[] intArray1; //初始化已声明的一维数组 intArray1 = new int[3]; intArray1 = new int[3]{1,2,3}; intArray1 = new int[]{1,2,3}; //ArrayList类对象被设计成为一个动态数组类型,其容量会随着需要而适当的扩充 方法 1:Add()向数组中添加一个元素, 2:Remove()删除数组中的一个元素 3:RemoveAt(int i)删除数组中索引值为i的元素 4:Reverse()反转数组的元素 5:Sort()以从小到大的顺序排列数组的元素 6:Clone()复制一个数组 //List 可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法 在决定使用 List 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List 类在大多数情况下执行得更好并且是类型安全的。如果对 List 类的类型 T 使用引用类型,则 两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。 如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List 类的实现。这意味着不必对 List 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表 元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。 //Dictionary 表示键和值的集合。Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同 //SortedList类 与哈希表类似,区别在于SortedList中的Key数组排好序的 //Hashtable类 哈希表,名-值对。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。 GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。 //Stack类 栈,后进先出。push方法入栈,pop方法出栈。 Queue类 队列,先进先出。enqueue方法入队列,dequeue方法出队列。 ————————————————————- //Dictionary System.Collections.DictionaryEntry dic=new System.Collections.DictionaryEntry("key1","value1"); Dictionary<int, string> fruit = new Dictionary<int, […]
View Details