在许多用户看来,一个Web网站的成败主要在于它所提供的内容和功能,殊不知支持这些内容和功能的Web服务器才是真正的幕后英雄。据统计,全世界已有500多万个网站。每个网站的后面都运行着一个Web服务器,那么什么是Web服务器?它是怎样工作的?......
从C/S到Web
最早的网络系统是简单的主机/终端系统,所有的应用程序都由主机完成,终端只是运行服务器上相应的程序。PC时代的到来,使计算机网络和计算机应用得到了很大的发展,由于PC价格的不断下降和性能的不断提高,面向终端的大型主机的应用领域越来越少。特别是网络操作系统如NetWare和Windows NT的兴起,以及网络数据库系统的出现,开辟了网络应用的新模式——C/S(Client/Server-客户/服务器)模式。C/S模式是一种两层结构的系统,第一层是在客户机上处理表示逻辑与业务逻辑,第二层则是通过网络运行的数据库等服务器系统。C/S模式将事务分开进行处理,实现了网络的分布式计算,很长时间里也帮助企业实现了局域网建设,完善了企业内部业务管理,提高了工作效率。然而C/S模式在系统的集成与维护、操作界面一致性、系统的扩展性等方面都存在明显的局限性,所以就象主机/终端式网络被C/S模式的网络系统所取代一样,在Internet/Intranet技术环境里,也会出现更新的系统模式。
基于Web技术的Internet/Intranet近年来已经得到了广泛的应用,Intranet是以TCP/IP协议为基础、以Web为核心的企业内部网,用户通过低成本、简单易用的客户浏览器就能随时随地到企业的Web站点上查阅自己所需的数据。浏览器客户端操作界面的一致性避免了C/S模式客户端程序的多样性,而服务器端的开放和基于标准的连接方案使企业很方便地通过Internet同外界联系;同时,Web信息动态的、交互式的发布方式从根本上改变了企业的服务质量,增加了企业的商业机会。
图1 Web三层结构
在三层结构的Web技术中,数据库不是直接向每个客户机提供服务,而是与Web服务器沟通,实现了对客户信息服务的动态性、实时性和交互性。这种功能是通过诸如CGI、ISAPI、NSAPI以及Java创建的服务器应用程序实现的。如图1所示。
什么是Web服务器(Web Server)
Web技术的独特之处是采用超链接和多媒体信息。Web服务器使用超文本标记语言(HTML-HyperText Marked Language)描述网络的资源,创建网页,以供Web浏览器阅读。HTML文档的特点是交互性。不管是一般文本还是图形,都能通过文挡中的链接连接到服务器上的其他文档,从而使客户快速地搜寻他们想要的资料。HTML网页还可提供表单供用户填写并通过服务器应用程序提交给数据库。这种数据库一般是支持多媒体数据类型的。
Web服务器的趋势
(作者:曹文龙、李维森)
目前,Web服务器的发展有三个主要趋势:
1.从HTML到XML(Extensible Markup Language-可扩展标记语言)
HTML被称为“第一代Web语言”,如前面的介绍,HTML作为Web的开发语言,对Web应用的发展起到了关键性的作用。但是HTML有一个致命的缺点:只适合于人与计算机的交流,不适合计算机与计算机的交流。HTML通过大量的标记来定义文档内容的表现方式,它仅仅描述了应如何在Web浏览器页面上布置文字、图形,并没有对Internet的信息含义本身进行描述,而信息又是Web应用中最重要的内容。通过HTML表现出来的文字、图形内容很容易被人理解,但却不利于计算机程序去理解。另外,HTML的另一个问题就是它的标记集合是固定的,用户不能根据自己的需要增加标记;而且各种浏览器的规格不尽相同,要使我们用HTML做的网页能够被所有浏览器正常显示,我们只能够使用W3C(万维网协会)规定的标记来创建网页。
正如前面所说,Web服务器向Web浏览器提供的信息都是来自有一定结构的数据库,在数据库里,为了检索和管理的方便,信息按照它本身的意义(如姓名、年龄、工作单位等)被存放在相应的字段里,一旦这些数据被调出来,经过CGI、ASP、JSP、PHP等转换成HTML后,其原来的意义无法转移到HTML标记中来,用户也就无法按照信息本来的意义去阅读。并且,由于操作系统以及数据库的不同,不同的系统及应用层面之间要想互相理解对方的数据格式是相当困难的。这就需要一种新技术或标准能够将最初保存在数据库服务器中的原始数据结构在不同的系统层面共享。这种新技术就是XML。
使用XML可以解决上述的难题。W3C对XML作了如下描述:“XML描述了一类被称为XML文档的数据对象,并部分描述了处理它们的计算机程序的行为。XML是SGML的一个应用实例。从结构上说,XML文档遵从SGML文档标准。”同HTML一样,XML也是一种基于文本的标记语言,都是从SGML(Standard Generalize Markup Language,标准通用标记语言)发展而来,二者的不同在于:XML可以让我们根据要表现的文档,自由地定义标记来表现具有实际意义的文档内容,例如,我们可以定义〈文档名称〉〈/文档名称〉这样具有实际意义的标记。而且XML不像HTML那样具有固定的标记集合,它实际上是一种定义语言的语言,也就是说使用XML的用户可以定义无穷的标记来描述文档中的任何数据元素,将文档的内容组织成丰富的完整的信息体系。总起来说,XML具有四大特点:便于存储的数据格式、可扩展性、高度结构化以及方便的网络传输,这些特点为我们创建开放、高效、可扩展、个性化的Web应用提供了一个崭新的起点。
Application Access Violation or Hang After Applyin
Application Access Violation or Hang After Applying SP4
This article discusses a Beta release of a Microsoft product. The information in this article is provided as-is and is subject to change without notice.
No formal product support is available from Microsoft for this Beta product. For information about obtaining support for a Beta release, please see the documentation included with the Beta product files, or check the Web location from which you downloaded the release.
--------------------------------------------------------------------------------
The information in this article applies to:
Microsoft Windows NT Server version 4.0
Microsoft Windows NT Workstation version 4.0
Microsoft Windows NT Server, Enterprise Edition version 4.0
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Professional
Microsoft Windows 2000 Server
--------------------------------------------------------------------------------
IMPORTANT: This article contains information about editing the registry. Before you edit the registry, make sure you understand how to restore it if a problem occurs. For information about how to do this, view the "Restoring the Registry" Help topic in Regedit.exe or the "Restoring a Registry Key" Help topic in Regedt32.exe.
SYMPTOMS
After applying Windows NT 4.0 Service Pack 4 (SP4) or Windows 2000, you encounter lockups or access violation (Dr. Watson) errors in an application that appeared to be working fine previously.
NOTE: You might encounter other symptoms or errors in an application that relate to the below-mentioned cause.
CAUSE
The application in question is errantly trying to access a block of memory that it had previously freed or deallocated. With Windows NT 4.0 Service Pack 3 (SP3) and earlier, such a reallocation is more likely to succeed, since the same memory location is more likely to still be available for reallocation. SP4 and later, however, introduces a change in the heap manager allocation patterns that can result in a failure of such a reallocation request. For more information on this change, please see the following article in the Microsoft Knowledge Base:
References and Aliases are Different Mechanisms (z
References and Aliases are Different Mechanisms
Author: zkarakaya
用PHP和MySQL构建一个数据库驱动的网站(四)
摘要
在这一章中,我们将介绍PHP这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与MySQL数据库的通信。
(2002-08-29 14:10:52)
--------------------------------------------------------------------------------
By Wing, 出处:Linuxaid
第三章:PHP入门
在上一章中,我们学习了如何使用MySQL数据库引擎在一个简单的数据库(只包含一个叫Jokes的数据表)中存储一个笑话的列表。当时,我们是通过在MySQL客户端的命令行来输入SQL命令(查询语句)来完成的。在这一章中,我们将介绍PHP这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与MySQL数据库的通信。
PHP简介
正如我们在前面提到的,PHP是一个服务器端的脚本语言。这个概念可能很难理解,特别是如果你以前只用过HTML和JavaScript来设计过网页时更是如此。一个服务器端的脚本程序与JavaScript在许多地方有点相像,两者都允许你在Web页面的HTML中插入一些程序(脚本)。其结果就是,这些脚本使你可以控制在浏览器窗口内会显示什么,这显然要比直接使用HTML要来得灵活得多。
JavaScript和PHP的关键的不同点是:当Web浏览器解释JavaScript时,包含这个脚本的Web页面已经被下载了,而对于象PHP这样的服务器端脚本程序来说,解释的工作是由服务器在将页面发出到浏览器之前完全的。解释工作完成后,Web页面中的PHP的代码将由脚本运行的结果所代替,浏览者看到的完全是标准的HTML文件。脚本是完全由服务器来处理的。这也就是它的命名的由来:服务器端脚本程序。
让我们再回头看看我们在第一章里建立的示例today.php:
用include和require进行模块化
PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。
第1次亲密接触PHP5(1)
原作者:Luis Argerich
翻译:erquan
中文注释的php.ini ( darkwings翻译 )
[PHP] ;;;;;;;;;;;;;;;;;;; ;关于这个文件; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 ; php.ini。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC ; 指明的路径;编译时指定的路径。 ;
基于HTTP验证
6. 密码验证
也许你想在自己的网站放上你的照片集,而且只想给自己知心的朋友看,这时你需要一个密码验证的程序。
6.1 基于HTTP验证
如何用PHP来实现密码验证的功能呢?我们可以使用简短的PHP代码,使用函数header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。在PHP中,客户端用户输入的信息传送到服务端之后自动保存在$PHP_AUTH_USER, $PHP_AUTH_PW, 以及 $PHP_AUTH_TYPE这三个全局变量中。利用这些变量,我们就可以根据实现保存在数据文件或数据库中的用户帐号信息验证用户身份。
不过在这里需要提醒使用者注意的一点是:只有在Apache模块方式运行的时候,PHP脚本才能使用$PHP_AUTH_USER, $PHP_AUTH_PW, 以及 $PHP_AUTH_TYPE这三个变量。如果用户使用的是CGI模式的PHP则无法实现基于HTTP的验证功能。
6.2 下面,我们就来详细介绍一下如何使用PHP对用户身份进行验证。
在下例中,我们是使用$PHP_AUTH_USER和$PHP_AUTH_PW这两个变量来验证进入者是否合法并允许进入。在本例中被允许登录的用户名称和密码对分别为tnc和nature:
<?
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel buttonn";
exit;
}
else
{
if ( !($PHP_AUTH_USER=="tnc" && $PHP_AUTH_PW=="nature") )
{
// 如果是错误的用户名称/密码对,强制再验证
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.";
exit;
}
else
{
echo "Welcome tnc!";
}
?>
事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。
6.3 根据指定的验证信息核实用户身份
首先,我们可以使用以下代码确定用户是否已经输入了用户名和密码,并显示出用户输入的信息。
<?php
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="My Private Stuff"');
PHP脚本数据库功能详解(3)
用类加快PHP的数据库开发
数据库的访问函数较多,使用不当会降低效率,甚至导致错误。而PHP的本身就是开放的和可扩充的,很多人为它开发各种功能的源代码。每一个PHP程序员都应该善于继承他人的成果,节省时间和精力。站在巨人的肩膀上,才能看得更远。当然,你也可以把你的代码共享出来,体会自己的劳动被承认和创造价值而带来的成就感。
Session是否必须依赖Cookie
PHP中的session可以默认情况下是使用客户端的Cookie(以便和普通意义上的Cookie区别,我称之为session cookie,普通意义上的Cookie为Cookie)来保存session id的,但是PHP中的session是否只能使用session cookie呢?当然不是,否则何必还弄个session出来,不如直接用Cookie算了.Session的一大优点就是当客户端的Cookie被禁用时会自动把session id附在URL中,这样再通过session id就能记住session变量了.
PHP的面向对象编程:开发大型PHP项目的方法(三)(转载)
PHP的面向对象编程:开发大型PHP项目的方法(三)
作者:Luis Argerich 译者:limodou