您的位置:

首页 >

腾博会官网9888 >

腾博会官网9888:在Windows系统上安装PHP运行环境文字教程 >

腾博会官网9888:在Windows系统上安装PHP运行环境文字教程

2016-05-14 11:17:15

分类:腾博会官网9888

一.下载相关软件 软件 下载地址 httpd-2.2.15-win32-x86-no_ssl.msi http://httpd.apache.org/download.cgi mysql-5.1.46-win32.msi http://dev.mysql.com/downloads/ php-5.2.13-Win32.zip http://www.php.net/downloads.php phpMyAdmin-3.3.3-all-languages.zip http://www.phpmyadmin.net/home_page/downloads.php ZendOptimizer-3.3.3-Windows-i386.exe http://www.zend.com/en/downloads/ 在Windows系统的C盘上创建一个名为lamp的文件夹,作为Web环境的安装位置,将环境需要的所有软件都安装到这个文件夹下面。 二.安装Apache 1“设置系统信息”对话框,要求输入几个基本的配置参数。这三条信息均可任意填写,无效的也行。 在第一个输入框中输入“lampbrother.net”域名。 在第二个输入框中添入www.lampbrother.net服务器名称。 其中第三个要添入的是联系电子邮件地址,会在系统出现故障时提供给访问者, 是这个Web服务器管理员的电子邮件地址,这里输入[email protected]。 最后要选择Web服务器的端口,使用默认的80端口,并作为系统服务自动启动(第一项)。 2 弹出选择安装类型对话框,“Typical”为默认安装,“Custom”为用户自定义安装,我们这里选择“Typical”类型。 3 弹出选择安装位置对话框,将Apache安装的位置设置为“d:\lamp\apache2”下。 4 弹出确认安装对话框。如果需要再检查一遍,可以单击“<Back”按钮一步步返回检查。确保选项无误,单击“Install”开始按前面设定的安装选项安装。 5 弹出正在安装界面,安装向导成功完成,这时右下角状态栏应该出现Apache的绿色小图标管理工具,表示Apache服务已经开始运行 6 Apache按照以上步骤安装完成以后,它的安装目录被指定到“C:\lamp\apache2”下面。 Apache的配置文件是“C:\lamp\apache2\conf\httpd.conf”文件, Apache存放网页的地方是“C:\lamp\apache2\htdocs”文件夹。 7 在Windows系统里启动和停止Apache,有多种方式,以下示例都可以做到。 单击开始菜单->所有程序->Apache HTTP Server 2.2->Control Apache Server下面的Stop停止、Start开启或者Restart重新启动。 单击我的电脑->管理->服务和应用程序->服务->Apache2.2选项,单击停止、开启或者重新启动。 通过Windows系统右下角状态栏上Apache的绿色小图标管理工具来开启、停止或者重新启动Apache服务器。 8 Apache如果启动成功,就可以通过浏览器测试。开启浏览器并在地址栏中输入http://localhost/的网址, 可以看到 It works ! 这说明Apache安装成功,并可以使用了。 三.安装MySQL 安装MySQL数据库服务器可以分为两部分: 一部分是程序的安装;另一部分是使用MySQL配置助手创建MySQL配置文件、一些详细配置选择,以及给MySQL服务器设置一个密码等内容。 MySQL配置助手是在第一部分安装结束后自动运行的,也可以在MySQL安装完成以后手工启动。 1 安装“mysql-5.1.46-win32.msi”的文件。 2 弹出安装类型选择对话框,有三个选项,分别是典型安装(Typical)、完全安装(Complete)和用户自定义(Custom)三种类型。 这里选择“Custom”,得到更多的选项,方便我们指定安装位置。单击“Next>”按钮即可到下一步安装。 3 弹出用户自定义设置页面,在“Developer Components”选项上单击左键, 再选择第二项“This feature, and all subfeatures, will be installed on local hard drive.”, 即“此部分,及下属子部分内容,全部安装在本地硬盘上”。 4 指定安装位置。单击“Change…”按钮改变安装位置,指定到“C:\lamp\mysql5”文件夹下面。 不仅这个选项要改变安装位置,前面几个选项包括MySQL服务器选项(MySQL Server)、 MySQL客户端程序选项(Client Programs)、文件选项(Documentation),都要改变安装位置,操作都是一样的。 单击“Change…”按钮,手动改变安装位置,可以把这几个选项的安装位置都指向“C:\lamp\mysql5”文件夹下。 建议服务器数据文件“MySQL Server Datafiles”选项不要指定与操作系统在同一分区下。这样可以防止系统备份还原的时候,数据被清空。 这里将其指定到D:\datafiles\文件夹中。设置完成以后单击“Next>”按钮即可到下一步安装。 5 弹出安装位置确认对话框,需要等待几秒进行安装。到这里MySQL数据库软件就安装完成了,出现界面, 勾选“Configure the MySQL Server now”,单击“Finish”按钮结束软件的安装并启动MySQL配置向导。 6 然后自动运行MySQL配置助手,到了安装的第二部分MySQL配置阶段。 7 弹出配置类型选择对话框,有两个选项“Detailed Configuration(详细配置)”和“Standard Configuration(标准配置)”。选择第一项“Detailed Configuration”。 以后几步配置都是在选择这一项时,MySQL配置助手需要设置的一些内容。选好类型之后,单击“Next>”按钮继续下一步配置。 8 弹出服务器类型(Server Type)选择对话框,它们决定着MySQL服务器将试图保留多少主内存。主内存越大,服务器的速度就越快,但对其他程序的影响也会越大。 这里有三种选择: Developer Machine选项是开发测试类,MySQL占用很少资源; Server Machine选项是服务器类型,MySQL占用较多资源; Dedicated MySQL Server Machine选项是专门的数据库服务器,MySQL占用所有可用资源。 择不同的类型,对于Web开发者来说,第一个Developer选项是最佳选择,其他两项最适合用于大数据库。选好类型之后,单击“Next>”按钮继续下一步配置。 9 弹出数据库用途(Database Usage)对话框。它们决定MySQL服务器将支持哪几种数据表类型。 这里也有三个选项: “Multifunctional Database”选项是通用多功能型,比较好的类型,是默认选择的类型; “Transactional Database Only”选项是服务器类型,专注于事务处理; “Non-Transactional Database Only”选项是非事务处理型,比较简单,主要做一些监控、记数用。 用户可以根据实际数据库的用途进行改变,我们这里使用默认的选择,单击“Next>”按钮继续下一步配置。 10 弹出InnoDB表空间设置(InnoDB Tablespace Setting)对话框,应该在这里为InnoDB数据库文件指定一个存放地点。默认存放地点是MySQL安装目录, 这里使用默认的存放位置,单击“Next>”按钮继续下一步配置。 11 弹出并发连接(Concurrent Connections)选择对话框,这里的选项决定了同时打开的数据库连接的数量。 共有三个选项: 第一个“Decision Support(DSS)/OLAP”选项可以有20个连接; 第二个“Online Transaction Processing(OLTP)”选项可以有500个连接; 第三个“Manual Setting”选项手动设置一个连接数目。 对于运行在一台用于软件开发的计算机上的MySQL服务器来说,不需要太多的连接,这个时候选择第一个“Decision Support(DSS)/OLAP”应该没什么问题。 但是对一些热门的网站上全速工作的MySQL服务器来说,并发连接的个数可能非常大,这时应该选第二个“Online Transaction Processing(OLTP)”选项。 这里使用默认的第一个选项,单击“Next>”按钮继续下一步配置。 12 弹出激活TCP/IP组网功能(Enable TCP/IP Networking)对话框。在Windows系统环境里,MySQL服务器与应用程序的通信有两种方式: 一是通过命名管道(named pipe); 二是通过网络协议TCP/IP。 MySQL配置助手给出的推荐配置是激活TCP/IP并使用3306号端口。选中多选框(加入防火墙不对这个端口阻止),使用默认推荐的配置。单击“Next>”按钮继续下一步配置。 13 弹出默认字符集设置(Default Character Set)对话框,在把文本数据保存到数据库里时,MySQL支持现有的各种字符集。 这里我们选择第三项,为了更好地处理中文字符集,在Character Set那里选择或填入“utf8”,单击“Next>”按钮继续下一步配置。 14 弹出安装为Windows服务(Install as Windows Service)对话框。这里可以选择是否将MySQL服务安装为Windows系统服务, 这样就可以通过Windows系统服务管理来管理MySQL服务器了。还可以指定Service Name(服务标识名称), 另一个选项是选择是否将MySQL的bin目录加入到Windows PATH里(加入后,就可以直接使用bin目录下的文件,而不用指出目录名了)。(请选中) 这里接受MySQL配置助手推荐的默认设置,单击“Next>”按钮继续下一步配置。 15 弹出安全选项(Security Options)对话框。这是最重要的一个配置,需要决定允许哪些人来可以连接MySQL服务器,以及是否必须输入一个密码才能建立连接。 设置为最安全的设置,因为root是唯一的用户又是MySQL系统管理员用户,所以应该让root用户正确输入密码才能连接数据库,并且只允许他在本地登录。 不要勾选第二个选项,这里不创建任何匿名账号,所谓的匿名账号指的是无须密码就可连接数据库的账号。单击“Next>”按钮继续下一步配置。 16 弹出确认执行对话框。确认所做的配置设置是否正确,如果有误,单击“<Back”按钮返回检查。如果确认无误,单击“Execute”使设置生效,单击“Finish”按钮结束MySQL的安装与配置。 17 MySQL安装后环境,按照以上步骤安装和配置完成以后,MySQl的安装目录是“C:\lamp\mysql5\”下面; MySQL的配置文件是“C:\lamp\mysql5\my.ini”文件;MySQL数据文件存放的地方是“D:\datafiles\data”文件夹。 18 Windows系统中启动和停止MySQL,右击我的电脑->管理->服务和应用程序->服务->MySQL选项,单击停止、开启或者重新启动。 19 测试MySQL数据库安装是否成功,可以开启一个MySQL客户端去登录MySQL服务器进行测试。 使用开始菜单->所有程序->MySQL->MySQL Server 5.1->MySQL Command Line Client启动MySQL的命令行解释器程序mysql.exe, 然后输入在配置MySQL时输入的密码。如果一切顺利,应该在输入窗口里看到MySQL的输入提示符。接下来执行status命令,结果表示MySQL服务器成功安装。 解决方案: 安装MYSQL时出现的问题及解决方法:安装MySQL 时,系统提示:Cannot create windows service for mysql.error:0 原因是系统里有旧的mysql服务存在,解决办法如下: 要永久删除旧的mysql服务,需要用户以管理权限在命令行上执行下列命令: C:\>sc delete mysql [SC] DeleteService SUCCESS 在安装服务时,如果有类似情况发生,察看服务里是不是遗留的服务程序,解决方法,删除旧的服务后,安装新的服务。 三.安装PHP 安装PHP服务器时,有两个任务必须完成。 PHP属于Apache服务器的一个模块,要外挂到Apache上协助它来处理PHP文件,所以第一个任务就是在Apache里加载PHP模块。 在开发时还要使用PHP程序连接数据库并对数据库操作,所以第二个任务就是配置PHP的MySQL扩展接口。 (1)将PHP安装为Apache服务器的一个扩展模块。 步骤一:“php-5.2.13-Win32.zip”的文件。把这个ZIP文档的内容解压缩到选定的某个子目录里即可,我们这里将它解压到“C:\lamp\php5”目录下。 步骤二:将PHP以模块的方式加载到Apache中去。 加载的方式是在Apache配置文件httpd.conf里写入三行内容:第一行加载PHP模块; 第二行告诉Apache服务器后缀名是.php或指定其他后缀名的文件使用PHP解析;第三行指定PHP配置文件的位置。 我们这里把下面三行内容插入到Apache配置文件C:\lamp\apache2\conf\httpd.conf中的某个位置即可。 LoadModule php5_module "C:/lamp/php5/php5apache2_2.dll" #加载PHP模块 AddType application/x-httpd-php .php .phtml #PHP模块解析哪种后缀文件 PHPIniDir "C:/lamp/php5" #指定PHP配置文件的位置 注意: 第一行,是指以module方式加载PHP 5,将这一行插入到Apache配置文件httpd.conf中的“#LoadModule vhost_alias_module modules/mod_vhost_alias.so”行下面即可。其中C:/lamp/php5/ php5apache2_2.dll是安装PHP的相应路径下文件。注意不要把php5apache2_2.dll、php5apache2.dll和php5apache.dll混淆,php5apache.dll只适用于Apache 2.0以前的版本,PHP 5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,必须使用php5apache2_2.dll。否则就可能会出现一些加载错误。 第二行,是添加PHP的支持。告诉Apache将哪些后缀作为PHP解析。例如,让Apache把.php或.phtml后缀的文件解析为PHP。在Apache配置文件中找到“AddType application/x-gzip .gz .tgz”项,在其下方添加“Addtype application/x-httpd-php .php .phtml”行即可。可以将任何后缀的文件解析为PHP,只要在添加的语句中加入并用空格分开,这里以多添加一个.phtml来示例。 第三行,是指定PHP配置文件php.ini的位置,在第二行“Addtype application/x-httpd-php .php .phtml”下面添加就可以了,其中“C:/lamp/php5”指定的是先前选择的PHP解压缩的目录。 步骤三:建立PHP的配置文件。直接把PHP解压缩目录C:/lamp/php5下面的php.ini-recommended文件改名为php.ini即可。 也可以把C:/lamp/php5目录下的文件php.ini-dist改名为php.ini,但该配置文件自动给所有添加内容加上“//”,增加安全,同时也增加了麻烦;如果把php.ini-recommended改名为php.ini,该配置文件不给所添加内容加上“//”,减少了安全,但更加便利。这里把php.ini-recommended文件改名为php.ini文件。 步骤四:重新启动Apache服务器。只要对Apache的配置文件httpd.conf或者PHP的配置文件php.ini进行了改动,就应该重新启动Apache服务器。Apache服务器是在启动的时候加载配置文件httpd.conf,使配置文件改动的内容生效。 PHP作为Apache服务器的一个工作模块,也是在Apache启动时加载配置文件php.ini使修改内容生效。 步骤五:测试PHP安装是否成功。以上步骤已经将PHP安装为Apache的一个扩展模块,并随Apache服务器一起启动。 如果想检查一下PHP是否安装成功,可以在Apache服务器存放网页的文件夹C:\lamp\apache2\htdocs下,使用文本编辑器创建一个名为test.php的文件 <?php //PHP脚本开始标记 phpinfo();//PHP内部函数,用于打印PHP的状态信息 ?> //PHP脚本结束标记 然后使用Web浏览器打开http://localhost/test.php页面。出现一个PHP测试页说明PHP安装成功。 (2)配置PHP的MySQL扩展接口 步骤一:经过以上的配置,PHP5已经安装成功。但PHP现在还不能够访问MySQL数据库服务器,所以PHP必须找到随PHP一起安装的两个和MySQL有关的DLL文件。 在这之前首先要把PHP安装目录C:\lamp\php5\下的libmysql.dll文件复制到Windows安装目录下。 该目录通常是C:\Windows,有的Windows服务器版本是C:\Winnt目录。也可以设置Windows系统的环境变量,将PHP的解压缩目录C:\lamp\php5\加到PATH环境变量里。 我们这里将C:\lamp\php5\libmysql.dll文件复制到C:\Windows下面。 步骤二:在PHP配置文件中开启MySQL功能。使用文本编辑器打开PHP的配置文件C:\lamp\php5\php.ini。 插入下面三项就可以开启mysql和mysqli扩展接口。也可以在PHP配置文件中找到下面三行,将前面用于注释的分号去掉。 extension_dir="c:/lamp/php5/ext" #指定PHP的扩展接口目录,目录分隔符是”/” extension=php_mysql.dll #开启MySQL扩展接口 extension=php_mysqli.dll #开启MySQLi扩展接口 步骤三:重新启动Apache服务器,使用PHP配置文件做出的修改生效。 步骤四:查看PHP测试页面里的内容,检查是否有对mysql和mysqli接口参数的描述信息。如果看到如图2-46显示的信息表示PHP的mysql和mysqli扩展接口加载成功,同样打开Web浏览器访问http://localhost/test.php页面进行测试。 经过以上的配置,我们完成了PHP的MySQL和MySQLi扩展接口的配置,如果需要配置其他的扩展接口也是同样的方法。 4.安装Zend加速器 步骤一:“ZendOptimizer-3.3.3-Windows-i386.exe”的文件。这个直接就是一个安装文件,双击就可以启动安装程序。 步骤二:通过上一步的安装出现以下界面,确认同意软件安装使用许可条例,选择“I accept the terms in the license agreement”,单击“Next>”按钮继续。 步骤三:弹出选择安装位置对话框,这里可以选择你喜欢的位置,我们这里将Zend Optimizer安装的位置设置为“C:\lamp\ZendOptimizer\”下,单击“Next>”按钮继续安装。 步骤四:弹出如下选择Web服务器种类的画面,选择Apache2.x选项。单击“Next>”按钮继续安装。 步骤五:弹出选择PHP配置文件php.ini位置对话框。在安装PHP时我们将php.ini指定到了PHP的安装目录C:\lamp\php5\下面,所以这里选择的位置也是C:\lamp\php5文件夹。 步骤六:弹出如下选择网站根目录的对话框,选择网站内容的根目录路径。在安装Apache时我们将网站根目录指定到了Apache的安装目录C:\lamp\apache2\下面, 所以这里选择的位置也是C:\lamp\apache2\文件夹,单击“Next>”按钮继续安装。 步骤七:弹出确认安装对话框。如果需要再检查一遍,可以单击“<Back”按钮一步步返回检查,确保选项无误,单击“Install”按钮开始按前面设定的安装选项安装。 步骤八:如果弹出下面的提示,要先关闭Web服务器,然后单击“确定”按钮继续安装。 步骤九:如果一切安装顺利将弹出下面的结束安装对话框,单击“Finish”按钮结束安装,这时安装完成。 步骤十:检查安装结果。启动Apache服务器,打开Web浏览器访问http://localhost/test.php页面,通过phpinfo()函数进行测试。如果出现以下内容说明安装成功。 This program makes use of the Zend Scripting Language Engine: Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies 5.phpMyAdmin的安装 步骤一: 把phpMyAdmin-3.3.3-all-languages.zip解压到/apache2/htdocs/,并创建一个叫phpmyadmin文件夹,把压缩完的文件放进去即安装完成。 步骤二:配置phpMyAdmin顶层目录下的config.inc.php,默认不存在config.inc.php文件,我们需要手工创建一个,也可以复制config.sample.inc.php模板得到最低限度的配置文件。 下面的示例是对config.inc.php文件配置,只给出了必须要修改的部分,根据实际情况,也许还需要其他一些选项做出修改。 我们通过身份验证模式的要求,可以有两种配置方案,一种是HTTP和cookie身份验证模式。 在这两种模式下,用户必须先在一个登录窗口里输入MySQL数据库的有效用户名和密码,才能使用phpMyAdmin程序。 这种做法有两个明显的好处:首先,因为MySQL数据库的密码没有出现在config.inc.php文件里,所以身份验证过程更加安全; 其次,允许以不同的用户身份登录对自己的数据库进行管理。这两种身份验证模式尤其适合数据库中多个用户账号的情况。 第二种方案是,config身份验证模式。这种模式下,密码以明文形式保存在config.inc.php文件里。只需要把MySQL用户名和密码直接写入到config.inc.php文件即可。 这样,在登录phpMyAdmin时就不会提示输入用户名和密码了,而只直接用config.inc.php文件里写入的用户登录。 如果只是在一个本地测试系统上使用phpMyAdmin,可以使用这种模式。 (1)HTTP身份验证模式 如果想让phpMyAdmin使用HTTP身份验证模式,首先需要在config.inc.php文件里黑体部分做出如下所示的修改。具体内容如下: $cfg['Servers'][$i]['auth_type'] = 'http' ; //只将这一行修改成HTTP身份验证模式即可 当完成设置之后,我们启动phpMyAdmin时,屏幕上将弹出一个Web浏览器对话框,需要在这个对话框里输入MySQL用户名和密码,才能进入phpMyAdmin操作界面。在Windows客户端使用IE浏览器,访问Web服务器的phpMyAdmin目录下的index.php文件,即启动了phpMyAdmin。 (2)cookie身份验证模式 cookie身份验证模式是HTTP身份验证模式的补充,不能使用HTTP身份验证模式的场合都可以使用它。cookie身份验证模式要求用户必须允许来自phpMyAdmin的cookie进入自己的计算机。即用户需要在浏览器中开启客户端的cookie功能。 如果想让phpMyAdmin使用cookie身份验证模式,除了必须修改config.inc.php文件里的auth_type语句外,还必须向blowfish_secret参数提供一个字符串。这个字符串可以是任意的,目的是在把登录时使用的用户和密码存储在客户端电脑上的cookie之前,系统将会使用这个字符串对它们进行加密。在config.inc.php中修改的内容如下: $cfg['blowfish_secret'] = ''xxxxxxx''; //这里需要一个任意的字符串 $cfg['Servers'][$i]['auth_type'] = 'cookie' ; //这条修改成cookie身份验证模式 和上面启动phpMyAdmin的方式一样,我们在Windows客户端使用IE浏览器,访问Web服务器上的phpMyAdmin目录下的index.php文件,需要提供MySQL的用户名和密码才能登录。 (3)config身份验证模式 如果想让phpMyAdmin使用config身份验证模式,首先需要在config.inc.php文件里做出如下所示的修改。把MySQL数据库的用户名和密码以明文的方式写入,具体修改内容如下: $cfg['Servers'][$i]['auth_type'] = 'config' ; //这条修改成config身份验证模式 $cfg['Servers'][$i]['user'] = 'root'; //使用你MySQL数据库的用户名 $cfg['Servers'][$i]['password'] = '111111'; //使用你MySQL数据库的密码 和上面启动phpMyAdmin的方式一样,我们在Windows客户端使用IE浏览器,访问Web服务器上的phpMyAdmin目录下的index.php文件。但不用提供MySQL的用户名和密码就以可登录,它是使用config.inc.php中以明文方式写入的用户名和密码登录的。 注意:

获得当前日期+时间(date + time)1.1    函数:now() 相关函数:current_timestamp(),localtime(),localtimestamp() 举例说明:    2. 获得当前日期(date) 函数:curdate() 相关函数:current_date(),current_date 举例说明:    3. 获得当前时间(time)函数:curtime() 相关函数:current_time(),current_time举例说明     4. MySQL dayof… 函数:dayofweek(), dayofmonth(), dayofyear()分别返回日期参数,在一周、一月、一年中的位置。举例说明set @dt = '2008-08-08';select dayofweek(@dt); -- 6select dayofmonth(@dt); -- 8select dayofyear(@dt); -- 221日期‘2008-08-08′ 是一周中的第6 天(1 = Sunday, 2 = Monday, …,

PHP能打开远程或本地主机上的Socket端口。本文是一个使用Socket的小例子:连接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章。 在php中打开一个socket使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用。函数声明是这样的: int fsockopen (string hostname, int port _[, int errno [, string errstr [, double timeout]]])  这个函数将打开一个连接到主机hostname的port端口的TCP连接。hostname可以是一个有效的域名,或者是一个ip地址。对于udp连接,你必须指定协议:udp://hostname. 对于unix域,主机名使用到socket的路径,这种情况下,端口port必须置为0。可选的timeout参数用来设定等待打开一个socket的时间,单位为秒。关于fsockopen()的更多信息,请参考:http://www.php.net/manual/function.fsockopen.php网络新闻传输协议    访问新闻组服务器需要通过称为NNTP(网络新闻传输协议)的协议来进行。这个协议在rfc977中有详细的细节,可以在http://www.w3.org/Protocols/rfc977/rfc977.html得到。这个文档分别描述了怎样连接到NNTP服务器,怎样同服务器对话,以及完成这些任务的不同命令。 连接    连接到一个NNTP服务器需要知道它的主机名(或者是ip地址)和它侦听的端口。为了避免一个连接企图失败导致程序挂起,你应该使用timeout参数。     <?php       $cfgServer   = "your.news.host";       $cfgPort     = 119;       $cfgTimeOut  = 10;       //open a socket       if(!$cfgTimeOut)          // without timeout          $usenet_handle = fsockopen($cfgServer, $cfgPort);       else          // with timeout          $usenet_handle = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut);       if(!$usenet_handle) {           echo "Connection failed.\n";           exit();       }       else {           echo "Connected.\n";           $tmp = fgets($usenet_handle, 1024);       } ?> 与服务器对话 现在我们已经连接到了服务器,可以通过前面打开的socket同服务器对话了。比如说我们要从某个新闻组得到最近的10篇文章。RFC977指出,第一步要用GROUP命令选择正确的新闻组: GROUP ggg 参数ggg是要选择的新闻组的名字(比如说是"net.news"),这是必需的。可用的新闻组的列表可以用LIST命令得到。选择新闻组的命令成功后,返回组中第一篇和最后一篇文章的文章编号,以及组中文章的数目。     下面是一个例子:     chrome:~$ telnet my.news.host 119     Trying aa.bb.cc.dd...     Connected to my.news.host.     Escape character is '^]'.     200 my.news.host InterNetNews NNRP server INN 2.2.2 13-Dec-1999 ready (posting ok).     GROUP alt.test     211 232 222996 223235 alt.test     quit     205 .     接收到命令 GROUP alt.test 后,服务器返回"211 232 222996 223235 alt.test". 211是RFC中定义的返回码,指示命令已成功执行。返回信息还指出,现在有232篇文章,最早的文章的编号是222996,最新的文章的编号是223235。我们看到,222996+232并不等于223235。丢失的7篇文章因为某种原因被从服务器删除了,可能是因为被它的合法作者取消了(这是可能的,而且很容易做到),或者因为是灌水文章而被删。     需要注意的事,有些服务器在选择新闻组之前可能要求身份认证,这取决于这是一个公共的或者是私用的服务器。也有可能服务器允许任何人读取文章,但发表文章需要身份验证。     <?php       //$cfgUser    = "xxxxxx";       //$cfgPasswd  = "yyyyyy";       $cfgNewsGroup = "alt.php";       //identification required on private server       if($cfgUser) {           fputs($usenet_handle, "AUTHINFO USER ".$cfgUser."n");           $tmp = fgets($usenet_handle, 1024);           fputs($usenet_handle, "AUTHINFO PASS ".$cfgPasswd."n");           $tmp = fgets($usenet_handle, 1024);           //check error           if($tmp != "281 Okrn") {               echo "502 Authentication errorn";               exit();           }   }   //select newsgroup   fput($usenet_handle, "GROUP ".$cfgNewsGroup."n");   $tmp = fgets($usenet_handle, 1024);   if($tmp == "480 Authentication required for commandrn") {      echo $tmp;      exit();   }   $info = split(" ", $tmp);   $first= $info[2];   $last = $info[3];   printf("First : %sn", $first);   printf("Last : %lastn", $last); ?

gb2312 和 unicode 间的编码转换 下面的例子是将 gb2312 转换为 "全"这种形式 php4.3.1以后的iconv函数很好用的,只是需要自己写一个uft8到unicode的转换函数 查表(gb2312.txt)也行 复制代码 代码如下: <? $text = "脚本之家"; preg_match_all("/[\x80-\xff]?./",$text,$ar); foreach($ar[0] as $v) echo "".utf8_unicode(iconv("GB2312","UTF-8",$v)).";"; ?> <? // utf8 -> unicode function utf8_unicode($c) { switch(strlen($c)) { case 1: return ord($c); case 2: $n = (ord($c[0]) & 0x3f) << 6; $n += ord($c[1]) & 0x3f; return $n; case 3: $n = (ord($c[0]) & 0x1f) << 12; $n += (ord($c[1]) & 0x3f) << 6; $n += ord($c[2]) & 0x3f; return $n; case 4: $n = (ord($c[0]) & 0x0f) << 18; $n += (ord($c[1]) & 0x3f) << 12; $n += (ord($c[2]) & 0x3f) << 6; $n += ord($c[3]) & 0x3f; return $n; } } ?> 下面的例子是利用php将"全"这中编码转换为gb2312. 复制代码 代码如下: <?php $str = "TTL全天候自动聚焦"; $str = preg_replace("|([0-9]{1,5});|", "\".u2utf82gb(\\1).\"", $str); $str = "\$str=\"$str\";"; eval($str); echo $str; function u2utf82gb($c){ $str=""; if ($c < 0x80) { $str.=$c; } else if ($c < 0x800) { $str.=chr(0xC0 | $c>>6); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x10000) { $str.=chr(0xE0 | $c>>12); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x200000) { $str.=chr(0xF0 | $c>>18); $str.=chr(0x80 | $c>>12 & 0x3F); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } return iconv('UTF-8', 'GB2312', $str); } ?> 或者是 复制代码 代码如下: function unescape($str) { $str = rawurldecode($str); preg_match_all("/(?:%u.{4})|.{4};|\d+;|.+/U",$str,$r); $ar = $r[0]; print_r($ar); foreach($ar as $k=>$v) { if(substr($v,0,2) == "%u") $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4))); elseif(substr($v,0,3) == "") $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,3,-1))); elseif(substr($v,0,2) == "") { echo substr($v,2,-1)."<br>"; $ar[$k] = iconv("UCS-2","GB2312",pack("n",substr($v,2,-1))); } } return join("",$ar); } $str = "TTL全天候自动聚焦"; echo unescape($str); //out TTL全天候自动聚焦 利用javascript来转换 复制代码 代码如下: <style> BODY { FONT-SIZE: 9pt; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; } input { FONT-SIZE: 9pt; height: 13pt; } </style> <script language="JavaScript1.2"> /* This following code are designed and writen by Windy_sk [email protected]> You can use it freely, but u must held all the copyright items! */ function Str2Unicode(str){ var arr = new Array(); for(var i=0;i<str.length;i++){ arr[i]="" + str.charCodeAt(i) + ";"; } return(arr.toString().replace(/,/g,"")); } function Unicode2oStr(str){ var re=/[\da-fA-F]{1,5};/ig; var arr=str.match(re); if(arr==null)return(""); for(var i=0;i<arr.length;i++){ arr[i]=String.fromCharCode(arr[i].replace(/[]/g,"")); } return(arr.toString().replace(/,/g,"")) } function modi_str(){ if(document.all.text.method.checked){ if(document.all.text.decode.value!=""){ document.all.text.encode.value = Str2Unicode(document.all.text.decode.value); }else{ document.all.text.decode.value = Unicode2oStr(document.all.text.encode.value); } }else{ if(document.all.text.encode.value!=""){ document.all.text.decode.value = Unicode2oStr(document.all.text.encode.value); }else{ document.all.text.encode.value = Str2Unicode(document.all.text.decode.value); } } } </script> <title>Unicode</title> <form name=text> 文本原型:<br> <textarea name="decode" cols="100" rows="10"></textarea> <br> 转换代码:<br> <textarea name="encode" cols="100" rows="10"></textarea> <br> <input type="checkbox" name="method" checked> 正向转换 <input type=button onclick="modi_str()" value=" 确 定 "> <input type=reset value=" 清 空 "> <input type=button onclick="document.all.text.method.checked?document.all.text.encode.select():document.all.text.decode.select()" value=" 全 选 "> </form> 下面是一个显示所有全角半角的字体的查看例子 复制代码 代码如下: <style> BODY { FONT-SIZE: 9pt; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; } input { FONT-SIZE: 9pt; height: 13pt; } </style> <script> function showUni(min,max){ show.document.open(); show.document.writeln("<style>body{font-size:9pt;word-break:break-all;}</style>"); show.document.writeln(min + " - " + max + "<br><br>"); var i=0; for(i=min;i<=max;i++){ show.document.write("" + i + ";"); } show.document.close(); } </script> <input type=button value="半角" onclick=showUni(32,126)> <input type=button value="全角" onclick=showUni(65281,65374)> <input type=button value="中文1" onclick=showUni(19968,40869)> <input type=button value="中文2" onclick=showUni(63744,64045)> <input type=button value="日文平" onclick=showUni(12353,12435)> <input type=button value="日文片" onclick=showUni(12449,12534)> <input type=button value="韩文" onclick=showUni(44032,55203)> <br>自定义:<input name=min> - <input name=max> <input type=button value="察看" onclick=showUni(parseInt(document.all.min.value),parseInt(document.all.max.value))> <br> <iframe src="about:blank" id=show width=100% height=70% scroll=no></iframe> 下面是一个查表(gb2312),转换gb2312到utf8的例子, 现在有iconv函数,这个已经没有太大的意义了, 复制代码 代码如下: <? function gb2utf8($gb){ if(!trim($gb)) return $gb; $filename="gb2312.txt"; $tmp=file($filename); $codetable=array(); while(list($key,$value)=each($tmp)) $codetable[hexdec(substr($value,0,6))]=substr($value,7,6); $utf8=""; while($gb) { if (ord(substr($gb,0,1))>127) { $this=substr($gb,0,2); $gb=substr($gb,2,strlen($gb)-2); $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080])); }else{ $this=substr($gb,0,1); $gb=substr($gb,1,strlen($gb)-1); $utf8.=u2utf8($this); } } return $utf8; } function u2utf8($c){ $str=""; if ($c < 0x80) { $str.=$c; } else if ($c < 0x800) { $str.=chr(0xC0 | $c>>6); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x10000) { $str.=chr(0xE0 | $c>>12); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x200000) { $str.=chr(0xF0 | $c>>18); $str.=chr(0x80 | $c>>12 & 0x3F); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } return $str; } ?

网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特色),学php的人都知道文件上传怎么做,但很多人在编程中却可能忽视了一些细节问题,那就是文件的类型(MIME)。在表单将文件提交给php做处理之前,浏览器会先解析识别一边是什么类型的文件,之后进入php处理环节,php又会去识别解析此文件的原始类型(并不是说你改成什么后缀就是什么文件)。在这个过程中会有一些浏览器兼容,更准确来说是文件类型解析标识不一致的问题。这样在php处理Post过来的文件类型时就需要根据不同浏览器做更多的判断,最典型的就是IE和火狐下的区别。   php上传图片文件(gif,jpg,bmp,png,psd,ico) 史上最完全oophper亲测版php文件上传之文件类型对应表,ie,火狐各一份。 ie火狐id后缀名php识别出的文件类型0gifimage/gif1jpgimage/jpeg2pngimage/png3bmpimage/bmp4psdapplication/octet-stream5icoimage/x-icon6rarapplication/octet-stream7zipapplication/zip87zapplication/octet-stream9exeapplication/octet-stream10avivideo/avi11rmvbapplication/vnd.rn-realmedia-vbr123gpapplication/octet-stream13flvapplication/octet-stream14mp3audio/mpeg15wavaudio/wav16krcapplication/octet-stream17lrcapplication/octet-stream18txttext/plain19docapplication/msword20xlsapplication/vnd.ms-excel21pptapplication/vnd.ms-powerpoint22pdfapplication/pdf23chmapplication/octet-stream24mdbapplication/msaccess25sqlapplication/octet-stream26conapplication/octet-stream27logtext/plain28datapplication/octet-stream29iniapplication/octet-stream30phpapplication/octet-stream31htmltext/html32htmtext/html33ttfapplication/octet-stream34fonapplication/octet-stream35jsapplication/x-javascript36xmltext/xml37dllapplication/octet-stream38dllapplication/octet-streamid后缀名php识别出的文件类型0gifimage/gif1jpgimage/pjpeg2pngimage/x-png3bmpimage/bmp4psdapplication/octet-stream5icoimage/x-icon6rarapplication/octet-stream7zipapplication/x-zip-compressed87zapplication/octet-stream9exeapplication/octet-stream10avivideo/avi11rmvbapplication/vnd.rn-realmedia-vbr123gpapplication/octet-stream13flvapplication/octet-stream14mp3audio/mpeg15wavaudio/wav16krcapplication/octet-stream17lrcapplication/octet-stream18txttext/plain19docapplication/msword20xlsapplication/vnd.ms-excel21pptapplication/vnd.ms-powerpoint22pdfapplication/pdf23chmapplication/octet-stream24mdbapplication/msaccess25sqltext/plain26conapplication/octet-stream27logtext/plain28dattext/plain29iniapplication/octet-stream30phpapplication/octet-stream31htmltext/html32htmtext/html33ttfapplication/octet-stream34fonapplication/octet-stream35jstext/html36xmltext/xml37dllapplication/octet-stream38classapplication/java* application/octet-stream //应用程序 323 text/h323 acx application/internet-property-stream ai application/postscript aif audio/x-aiff aifc audio/x-aiff aiff audio/x-aiff asf video/x-ms-asf asr video/x-ms-asf asx video/x-ms-asf au audio/basic avi video/x-msvideo axs application/olescript bas text/plain bcpio application/x-bcpio bin application/octet-stream bmp image/bmp c text/plain cat application/vnd.ms-pkiseccat cdf application/x-cdf cer application/x-x509-ca-cert class application/octet-stream clp application/x-msclip cmx image/x-cmx cod image/cis-cod cpio application/x-cpio crd application/x-mscardfile crl application/pkix-crl crt application/x-x509-ca-cert csh application/x-csh css text/css dcr application/x-director der application/x-x509-ca-cert dir application/x-director dll application/x-msdownload dms application/octet-stream doc application/msword dot application/msword dvi application/x-dvi dxr application/x-director eps application/postscript etx text/x-setext evy application/envoy exe application/octet-stream fif application/fractals flr x-world/x-vrml gif image/gif gtar application/x-gtar gz application/x-gzip h text/plain hdf application/x-hdf hlp application/winhlp hqx application/mac-binhex40 hta application/hta htc text/x-component htm text/html html text/html htt text/webviewhtml ico image/x-icon ief image/ief iii application/x-iphone ins application/x-internet-signup isp application/x-internet-signup jfif image/pipeg jpe image/jpeg jpeg image/jpeg jpg image/jpeg jpg image/pjpeg js application/x-javascript latex application/x-latex lha application/octet-stream lsf video/x-la-asf lsx video/x-la-asf lzh application/octet-stream m13 application/x-msmediaview m14 application/x-msmediaview m3u audio/x-mpegurl man application/x-troff-man mdb application/x-msaccess me application/x-troff-me mht message/rfc822 mhtml message/rfc822 mid audio/mid mny application/x-msmoney mov video/quicktime movie video/x-sgi-movie mp2 video/mpeg mp3 audio/mpeg mpa video/mpeg mpe video/mpeg mpeg video/mpeg mpg video/mpeg mpp application/vnd.ms-project mpv2 video/mpeg ms application/x-troff-ms mvb application/x-msmediaview nws message/rfc822 oda application/oda p10 application/pkcs10 p12 application/x-pkcs12 p7b application/x-pkcs7-certificates p7c application/x-pkcs7-mime p7m application/x-pkcs7-mime p7r application/x-pkcs7-certreqresp p7s application/x-pkcs7-signature pbm image/x-portable-bitmap pdf application/pdf pfx application/x-pkcs12 pgm image/x-portable-graymap pko application/ynd.ms-pkipko pma application/x-perfmon pmc application/x-perfmon pml application/x-perfmon pmr application/x-perfmon pmw application/x-perfmon png image/x-png pnm image/x-portable-anymap pot, application/vnd.ms-powerpoint ppm image/x-portable-pixmap pps application/vnd.ms-powerpoint ppt application/vnd.ms-powerpoint prf application/pics-rules ps application/postscript pub application/x-mspublisher qt video/quicktime ra audio/x-pn-realaudio ram audio/x-pn-realaudio ras image/x-cmu-raster rgb image/x-rgb rmi audio/mid roff application/x-troff rtf application/rtf rtx text/richtext scd application/x-msschedule sct text/scriptlet setpay application/set-payment-initiation setreg application/set-registration-initiation sh application/x-sh shar application/x-shar sit application/x-stuffit snd audio/basic spc application/x-pkcs7-certificates spl application/futuresplash src application/x-wais-source sst application/vnd.ms-pkicertstore stl application/vnd.ms-pkistl stm text/html sv4cpio application/x-sv4cpio sv4crc application/x-sv4crc t application/x-troff tar application/x-tar tcl application/x-tcl tex application/x-tex texi application/x-texinfo texinfo application/x-texinfo tgz application/x-compressed tif image/tiff tiff image/tiff tr application/x-troff trm application/x-msterminal tsv text/tab-separated-values txt text/plain uls text/iuls ustar application/x-ustar vcf text/x-vcard vrml x-world/x-vrml wav audio/x-wav wcm application/vnd.ms-works wdb application/vnd.ms-works wks application/vnd.ms-works wmf application/x-msmetafile wps application/vnd.ms-works wri application/x-mswrite wrl x-world/x-vrml wrz x-world/x-vrml xaf x-world/x-vrml xbm image/x-xbitmap xla application/vnd.ms-excel xlc application/vnd.ms-excel xlm application/vnd.ms-excel xls application/vnd.ms-excel xlt application/vnd.ms-excel xlw application/vnd.ms-excel xof x-world/x-vrml xpm image/x-xpixmap xwd image/x-xwindowdump z application/x-compress zip application/zip -firefox application/x-zip-compressed -IE   php上传压缩文件(rar,7z,zip)   php上传可执行文件(exe)   php上传视频文件,音乐文件,歌词文件(avi,rmvb,3gp,flv,mp3,wav,krc,lrc)   php上传文本文件和文档文件(word->doc,excel->xls,幻灯片->ppt,pdf,chm)   php上传数据库文件(access文件,sql文件,con文件,日志文件log, dat文件)   php上传网页文件,脚本文件,字体文件(ini,php,html,htm,字体文件:ttf,fon, js ,xml)   php上传其他文件(class类文件,

焦点访谈

最新最热的文章

更多 >

COPYRIGHT (©) 2017 Copyright ©2017 腾博会官网 网站地图

联系我们

827570882

扫描二维码分享到微信