php入门篇

WEB开发介绍

l  WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源,即供浏览器访问的资源。
l  Internet上供外界访问的Web资源分为:
•静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
•动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
l  静态web资源开发技术
•Html
l  常用动态web资源开发技术:
•PHP、 JSP/Servlet、ASP、asp.net 等
•我们课程的重点也是教大家如何使用php技术开发动态的web资源,即动态web页面。

动态网页技术的发展                 

为什么会出现 动态网页(web)技术

                 请思考: 请用你现有的技术,开发如下网页

                   (1) 网页可以让用户留言,其他人可以回复

                   (2) 可以网上支付

                   (3) 可以发送电子邮件

•当www网初现江湖时,当时主要是html(1993),由于html只支持静态的文字和图片,不能与用户进行交互,为弥补这个不足,陆续出现了下列网页技术:
• (1)cgi(common gateway interface)特点
•  a: cgi技术是早期动态技术使用最多的,发展的比较成熟并且功能强大
•  b: 效率比较低,编程比较困难
•  c: cgi可以用不同的语言编写(vb,delphi,c/c++,perl)常用的是c/c++和perl语言
•  d: 现在使用cgi做动态网页比较少,但是还是有,主要用linux/unix操作系统中
 
•(2) asp
• asp 是html  + javascrip(vbscript) + com组件的形式asp的功能强大不在于能使用相关的脚本语言而是com组件,但是com组件的开发是比较困难的
•asp的优势:
•1.简单易学。
•2. 安装使用方便 (windows + iis )
•3.效率比cgi要高。
•asp 的不足:
•1.功能扩张比较困难,因为asp的功能扩展在com组件,而开发com组件是比较困难的
•2.安全性,因为asp是与windows系统和iis一起工作的(),所以windows和iis的安全漏洞会对asp造成影响
•3.跨平台性
•4.实现企业级的功能困难:如服务器的集群,负载均衡
•(3) jsp
•  jsp=html+java片段+jsp语法+js
•jsp优势:
•  1. 一次编写,到处运行 (java)
•  2.良好的跨平台性
•  3. 多种开发工具支持
•  4. 强大的可伸缩性(jsp+javabean)的方式
•jsp的不足:
•  1. jsp产品的复杂度高(jsp入门比asp难)
•  2. jsp要求运行的机器配置要高,因为jsp是用class常驻内存的方式运行的,效率高,但是需要占用更多的内存
 
•(4) Php
•  官方网站:www.php.net
•Php的优势:
•   1. 跨平台(操作系统[windows linux(redhat suse ubunte...) unix[solaris hp unix aix freebsd ] mac])性良好,多种数据库(mysql oracle  db2 )支持
•   2. 效率比较高,具有良好的安全性
•  3. 免费使用(成本低) lamp  

     4. 开放的源代码,所有的PHP源代码都可以得到

       5. 上手快,PHP 相对于其他语言,编辑简单,实用性强,更适合初学者

       6. 面向对象:在php4,php5 中,面向对象方面都有了很大的改进,现在php完全可以用来开发大型商业程序 

•不足:
•   1. 安装复杂(php的很多功能需要安装相应的应用库如要更好的支持图形就要安装gd库)

   2. 灵活,对程序员的约束太少,php是解释运行机制,所有很多问题在运行阶段才会发现.     

 初识php—创始人         

php创始人

PHP之父Rasmus Lerdorf出生在1968922.

Rasmus Lerdorf 为了要维护个人网页,用c语言开发了一些CGI工具程式集,来取代原先使用的 Perl 程式。最初这些工具程式用来显示 Rasmus Lerdorf的个人履历,以及统计网页流量。他将这些程式和一些表单直译器整合起来,称为 PHP/FI。PHP/FI可以和数据库连接,产生简单的动态网页程式。

 

php的基本概念

PHP最开始是lerdorf 用于维护个人主页“Personal HomePage”,而用c语言开发的cgi工具程序集,用于替代perl程序。

PHP,是英文超文本预处理语言php Hypertext

Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。

php目前的开发和商业化由zend公司负责.

 

php的发展历程

PHP 最初是1994Rasmus Lerdorf创建的,刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他自己网站的访问者。后来又用C语言重新编写,包括可以访问数据库。在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0

           

 

php常见开发工具

  ① Editplus

  ② Zend Studio

  ③ PHP Coder

  ④ phpedit

  ⑤ easyecpilse

  ⑥ dw  

 

bs 与 cs的介绍   

•b/s的优势:
•  1.  开发成本低
•   2.  管理维护简单
•  3.   产品升级便利
•      4.   对用户的培训费用低
•  5.    用户使用方便,出现故障的概率小
•b/s的不足:
•       1.  安全性不足
•       2.   客户端不能随心变化,受浏览器的限制
l

                   

WEB服务器   

l学习web开发,需要先安装一台web服务器(在某机器上运行web服务程序(软件),我们把这台机器称为web服务器.),然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。
l疑问:学习web开发,为什么必须要先装一个WEB服务器

iis 服务器   

Internet Information ServicesIIS,互联网信息服务),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。

         

php也可以用iis,而实际上iis是给asp或者asp.net用的

 

lighttpd

nLighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。缺点是成熟度往往要低于Apache,通常只能用于某些特定场合

apache WEB服务器    

lApache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

 

 

下载相关软件:

1.apache  httpd-2.2.17-win32-x86-no_ssl.msi

地址: http://httpd.apache.org

安装

 

 

最后在浏览器中输入http://localhost之后出现

则表示安装成功

我们可以通过几种方式来控制apache的开启和关闭

第一种通过服务来开启和关闭apache

第二种通过apache monitor来开启和关闭

 

第三种通过命令行开启和关闭,但是注意需要cd到apache的bin目录下

开启的命令

 

更多的细节可以参考

   

如果你觉得调用命令行麻烦,我们可以在环境变量去设置httpd.exe的执行环境  

我们将httpd.exe的目录加入到环境变量PATH路径下去          

 

apache 服务器—无法启动故障       

一个机器可以有1到65535号端口
apache默认端口是80端口
1.在实际开发中,我们经常用netstat -an 命令开查看开启的端口
2.在生活中端口开的越少越好,防止被人攻击你,如果发现有异常端口,我们可以通过netstat -anb来关详细查看端口
通过上面我们详细的看见每个端口是哪个程序在占用,如果发现有异常程序可以通过通过kill命令开关闭端口
3.还有一点一个端口被一个程序占用之后就不能被其它程序监听了
4.端口分为有名端口1-1024号,这些端口都是名花有主了,其它端口可以自己分配

5.apache如何去设置端口

首席那我们要知道apache软件的配置文件在http.conf下,这个文件在conf目录中        

在httpd.conf的这里可以自己该端口,注意,修改完端口后必须重启apache才能访问

另外还有点,这个apache可以监听多个端口

我们可以子啊httpd.conf中设置如下

然后命令行中查询一下nestat -an,我们可以看见apache同时监听多个端口

 ——————————————————————————————————————————————————————————————————————

第27讲 apache服务器使用及配置 apache目录结构

apache 目录结构       

 对于模块二进制文件可以到去找

apache是通过模块来管理功能的

 

 第28讲 apache服务器使用及配置 apache虚拟目录

apache 概述       

Apache是目前世界上使用最为广泛的一种Web Server,它以跨平台、高效和稳定而闻名。按照去年官方统计的数据,Apache服务器的装机量占该市场60%以上的份额。尤其是在XUnix/Linux)平台上,Apache是最常见的选择。其它的Web Server产品,比如IIS,只能运行在Windows平台上,是基于微软.Net架构技术的不二选择

Apache并不是没有缺点,它最为诟病的一点就是变得越来越重,被普遍认为是重量级的WebServer。所以,近年来又涌现出了很多轻量级的替代产品,比如lighttpd, nginx等等,这些WebServer的优点是运行效率很高,但缺点也很明显,成熟度往往要低于Apache,通常只能用于某些特定场合。

nginx这个是俄罗斯开发的

 

 apache—逻辑组件与操作系统关系     

Apache是基于模块化设计的,总体上看起来代码的可读性高于php的代码,它的核心代码并不多,大多数的功能都被分散到各个模块中,各个模块在系统启动的时候按需载入。你如果想要阅读Apache的源代码,可以从main.c文件读起

 

 

apache—生命周期                  

apache—启动阶段                  

可以查看一下httpd.conf配置文件中的关于加载静态/动态模块的设置.

 配置虚拟目录—请考虑一个问题   

我们把web应用放在apache默认的hdocs目录下,apache就会自动的管理,但是大家考虑一个问题: 假设apache所在磁盘(比如c:分区)空间的问题,我们能不能把web应用放在另外一个分区(比如d:分区),同样让apache去管理呢?

 apache配置虚拟目录               

n配置虚拟目录在apacheconf目录下httpd.conf

<IfModule dir_module>节点后添加如下代码:

 

 第一步:配置虚拟目录的节点,也就是在httpd.conf中添加如下

#配置虚拟目录
<IfModule dir_module>
#这个DirecttoryIndex相当于欢迎页面
DirectoryIndex index.html index.htm index.php
#你的站点别名,这里注意如果你的路径用\者需要转义则必须写成D:\\myblog,如果用的是/则不需要转义
Alias /myblog "D:/myblog"
#下面这个是访问权限,这个要单独详解
<Directory d:/myblog>
Order allow,deny
Allow from all
</Directory>
</IfModule>

 

 

 第二步:修改server主目录,也就是服务器原来的默认站点注销,我们同样在httpd.conf修改,其实这里我们可以不注销

如果注销,默认的站点还是htdocs文件夹,如果注销,直接访问http://localhost则会出错

然后我们重启Apache Service就可以访问D:/myblog中的资源了

我们在浏览器中输入http://localhost/myblog/news.html就可以看见我们的资源new.html

如果我想直接输入http://localhost/myblog就可以直接方法news.html则我们必须在配置虚拟目录处的欢迎页面添加一个new.html

这里的意思是,当输入http://localhost/myblog时服务器会试着在myblog页面找news.html,如果找不到则找index.html,在找不到则找index.htm,如果在找不到

则找index.php

关于权限的设置,开始在配置虚拟目录最后一部分就是设置权限的

 

 

这里一定要注意Order后面的allow,deny的顺序,下面我们有几个练习来熟悉

  //关于安全设置的课堂练习题

  order deny,allow      //这个读的顺序是deny先,allow后,所以在这两个读取完毕之后要先去读取deny from 218.20,然后再读取allow from 218.20.253.2
allow from 218.20.253.2
deny from 218.20

  #代表拒绝218.20开头的IP,但允许218.20.253.2通过;而其它非218开头的IP也都允许通过。

 


-------------------------------
order allow,deny    //先读取到allow表示允许所有,然后deny表示禁止所有,然后由于allow在前面所以先读取allow from218.20.253.2表示只允许这一个ip访问,然后接着读取deny from 218.20表示禁止以218.20开头的读取,所以最后的结果就是禁止所有访问
allow from 218.20.253.2
deny from 218.20

 ————————————————————————————————————————————————————————————————————————

 第29讲 apache服务器使用及配置4 apache虚拟主机 web访问时序图

 虚拟主机的配置

在一台apache 服务器中配置网站   

也就是将http://localhost/news.html配置成像http://www.sohu.com这样好记忆的网站名

上节课我们配置了httpd.conf,我们可以用http://localhost/myblog就可以访问我们的网站,但是现在我们想改成http://www.sohu.com访问我们的

网站

 配置虚拟主机的的步骤如下

第一步:启动 httpd-vhosts.conf文件,在httpd.conf文件中启用

第二步:在conf/extra/httpd-vhosts.conf配置文件中作配置

第三步:修改我们的hosts文件

讲到这里我们需要详细讲解一下网页访问流程(这里包括php/jsp/asp/asp.net)

 当我们在浏览器中输入http://www.sohu.com/news.html回车之后,电脑会先解析主机名然后自动先去本地的hosts文件中去查找对应的ip地址和域名,

如果在本地hosts文件中查找不到相应的ip地址和域名就会到外网的dns(域名服务器)中去查找,如果在dns中找不到则跳转到提示页面或者报错

如果找到了就先向这个ip地址的服务器发送一个数据请求包,服务器端拿到这个数据请求包之后会解析主机,会解析网站名以确定,还会解析资源名称等,

然后取出资源返回给浏览器(apache默认情况下是不会解析php或者asp或则jsp的)

 

 现在我们在hosts文件中配置

127.0.0.1  www.ysfox.com

然后再将讲配置虚拟主机中的欢迎页面加上news.html则我们就可以通过在浏览器中直接输入www.ysfox.com访问d:/myblog/news.html了

——————————————————————————————————————————————————————————————————————

 第30讲 apache服务器使用及配置5 作业点评 提出apache和php整合的需求

 第一题:

1.先在httpd.conf文件,开启虚拟主机,就是是将Include conf/extra/httpd-vhosts.conf前面的#去掉

 

2.假设我们的虚拟主机在f:/myweb这里,然后我们在这个目录里面放上我们的web资源abc.html

3.设置http-vhost.conf

#配置我们自己的虚拟主机
#<VirtualHost 127.0.0.1:80>
# DocumentRoot "f:/myweb"    #这里要注意,如果你用的是"\"则需要两个\\,前一个是转义,如果用的是"/"则不需要转义
# #这里配置欢迎页面
# DirectoryIndex abc.html my.html index.html index.htm index.php
# <Directory />
# Options FollowSymLinks
# #禁止别人对文件覆盖修改我们的页面
# AllowOverride None
# #设置访问权限
# Order allow,deny
# Allow from all
# </Directory>
#</VirtualHost>

4.配置window系统中的host文件(c:/window/system32/drivers/etc/hosts)

 127.0.0.1    www.sohu.com

 

第二题和第三题和第四题不用写了

 

下面说几点注意项

首先我们在cmd命令窗口通过ping命令得到百度的ip:115.239.210.27

然后我们在hosts中却将百度的ip配置成淘宝的域名

115.239.210.27  www.taobao.com

此时我们在浏览器中访问淘宝则会访问不了,这个是因为我们在访问服务器的时候还是要经过DNS的,DNS就会过滤

 

另外注意一点apache在默认情况下是不回处理php页面的,如果让apache能够处理php呢?这个就是下一节课的内容了

 ------------------------------------------------------------------------------------------------------------------------------

第31讲 php环境的搭建和使用1 appserv套件安装

php开发环境搭建           

1.在window下搭建

apache(iis)+php+mysql+phpmyadmin=>wamp

2.在linux下搭建

linux+apache+mysql+php=>lamp

我们这里现在还没有学习linux所以这里我们先学习在window下搭建
在window下搭建可以有两种方式安装,一种是安装套件,另外是自定义安装
(1)安装套件
appserve
这个套件是一个泰国人贡献的,实际上这个软件只是将我们需要安装的软件打包安装
这个软件包中包含(apache+mysql+php+phpmyadmin)
安装好了appserve之后它是默认能够解析php的
使用appserver 或者wmap软件直接安装(套餐软件)
安装套机虽然很方便快捷,但是却不够灵活,因为有些时候我们开发需要不同版本的软件,而套件的版本已经固定了
所以作为开发人员两种都要会,尤其是自定义搭建php开发环境
 

 ————————————————————————————————————————————————————————————————————————

第32讲 php开发环境的搭建和使用2 自定义安装

php开发环境搭建—自定义安装     

自定义安装apache+php+mysql+phpmyadmin

 我们建议大家安装的时候,将这些软件安装到同一个文件夹下便于管理,而且这里一定要注意,文件夹不要带中文

第一步安装apache,安装完测试http://localhost

第二步安装php

我们这里有两个版本

这里要说明一下,VC6表示是用legecy Visual Studio 6 compiler这个编译器编译的

而VC9就是表示用the Visual Studio 2008 compiler这个微软的VS编辑器编译的

如果是在windows下使用Apache+PHP,则选用VC6版本

如果是在window下使用IIS+PHP,则选用VC9版本

另外一点VC6是线程安全的,而VC9是非线程安全

 我们将VC6的版本解压,修改一些名字就可以了,不需要安装,

第三步整合apache和php

前面我们讲过apache是以模块化载入的,所以我们只要找到apache的conf目录中的httpd.conf下的LoadModule处

然后添加如下代码

LoadModule php5_module ~php安装路径/php5apache2_2.dll   //这里的php5apache2_2.dll就是连接apache和php的文件,2_2表示支持apache2_2

PHPIniDir "~php模块安装路径"                  //这个用于指定php的ini(初始化)文件,该文件时对php的一些配置

AddType application/x-httpd-php .php .phtml      //这个配置表示当有一个资源名为*php就有PHP来处理

 

完成之后我们还要讲php文件夹中的php.ini.development改成php.ini,这个文件中涉及了php的一些初始化设置

改完了之后打开该文件,然后指定php扩展库路径,所谓的扩展库就是php的ext文件夹的路径,这个文件夹下放了很多扩展库的dll文件

我们只要在php.ini中找到extension_dir=php安装路径/ext,添加上php的扩展库文件夹,然后去掉前面的分号就可以了

 注意在写php的安装路径时要你管将"\"改为"/"

 最后配置好后我们要测试

只要在apache的htdoc文件下写一个测试php文件,然后访问这个php文件就可以知道配置成功与否

 

第三步:安装mysql数据库(注意这里我们只安装不讲解,mysql我们会在稍后学习)

这里不再讲解,在java中有详细的讲解

安装好之后,我们还要将php.ini中的支持mysql的扩展文件启用(这里只需要将前面的;去掉就可以了)

 

之后我们重启我们的apache,然后

我们要测试,我们写一段php代码来测试mysql安装是否成功

或者我们安装一个phpmyadmin来看看是否可以使用

<?php

  $conn=mysql_connect("localhost","root","root");

  if($conn){

  echo"连接MYSQL数据库成功!";

  }else{

  echo"连接MYSQL数据库失败!";

}

?>

我们还可以安装phpmyadmin来测试

我们只要将phpmyadmin的解压包直接放到apache的htdoc文件下就可以了,为了便于访问,我们可以将名字改为phpmyadmin

我们只要在浏览器中输入http://localhost/phpmyadmin/index.html,然后输入用户名root和密码就可以进入mysql了

以上就是自定义搭建php开发环境

第33讲 php开发环境的搭建和使用3 安装并配置discuz论坛

第一步:我们将discuz压缩包从官网下载下来

第二步:将其解压到htdocs目录下,并该名字discuz

第三步:将update中的数据剪切到update同一个目录,然后将update目录删除

第四步:在浏览器中安装discuz

 

第34讲 解答学生问题--一个ip绑定多个域名

思路1:通过端口来区分不同站点

首先还是按照绑定一个站点的方式做好准备

1.先开发好自己的网站d:/myblog

2.配置我们的httpd.conf文件,启动虚拟主机的配置(将前面的#号去掉)并注销默认的站点(其实可以不注销)

 注销默认站点

3.找到httd-vhosts.conf文件打开,在末尾添加如下代码

<VirtualHost 127.0.0.1:80>
DocumentRoot "d:/myblog"
DirectoryIndex news.html my.html index.html index.htm index.php
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

4.在hosts文件中添加ip和域名对应关系

C:/windows/system32/drivers/etc/hosts

127.0.0.1    www.ysfox.com

现在我们就可以访问第一个域名对应的网站了www.ysfox.com

现在我们来添加一个新的域名与该ip绑定

首先我们任然要开发开自己的站点

1.开发新的网站 "d/myweb"

2.配置httpd-vhosts.conf,添加一个新的虚拟主机,这个我们只修改改一些端口和新开发的网站路径就可以

<VirtualHost 127.0.0.1:81>
DocumentRoot "d:/myweb"
DirectoryIndex my.html index.html index.htm index.php
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

3.在httpd.conf文件总让apache监听81端口(apache可以同时监听多个端口)

也就是在httpd.conf文件中添加Listen 81,添加的位置在Listen 80下一行

4.在我们host中添加一个新的域名

127.0.0.1    www.hepan.com

5.此时我们重启服务器开始测试,测试时我们必须带上端口

http://www.hepan.com:81

这种配置的方案不好,因为每次访问都必须输入81端口,给用户带来很不好的体验

 

思路2:通过ServerName端来区分不同的域名

我们现在不监听81端口了,任然在hosts文件中配置了相同ip不同的两个域名

hosts中配置同一个ip不同连个域名

1.开发新的网站d:/myweb

2.在httpd-vhosts.conf文件中添加配置(这时的配置和以前不一样)

复制一份配置另外一个域名

3.现在我们重启服务器就可以测试了

现在就可以实现一个ip对应多个域名了,而且端口都是80端口

——————————————————————————————————————————————————————————————

 第35讲 php运行过程时序图 php书写规范

在web服务器中配置web站点    

这里我们在重申一道什么叫做web站点

•WEB站点是多个web资源的集合。简单的说,可以把web应用理解为硬盘上的一个目录,这个目录用于管理多个web资源。举例:news,blog
•Web站点通常也称之为web网站,或web项目/工程。
一个WEB站点由多个WEB资源或其它文件组成,包括html文件、css文件、js文件、php文件、配置文件等。在开发web站点时,应按规定的目录结构存放这些文件。否则,在把web站点交给web服务器管理时,将无法正常访问,甚至会导致web服务器不能正常启动

apache和php 在网络中位置     

php的运行过程                        

UML的时序图描述php 调用过程

 

第一个php程序—书写和调试           

PerlC一样,在PHP中用“;”来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。

php可以喝html代码混合,也可以再php代码块之间嵌入html代码

php的注释有//,/**/,还有嘴古老的#

 

 

 

 

posted @ 2013-11-23 21:10  ysfox  阅读(332)  评论(0)    收藏  举报