导图社区 PHP基础LAMP网站构建、HTML、CSS样式知识框架
LAMP网站构建.pptx,第1章PHP的应用与发展细说PHP第4版本章目录1.1 介绍Web给你认识1.2 动态网站开发所需的Web构件1.3 几种主流的Web应用程序平台1.4 HTTP.
编辑于2022-11-07 10:13:18 广东PHP基础LAMP网站构建、HTML、CSS样式知识框架
LAMP网站构建
Web,在网页设计中称为网页。网页组成网站,网站也是软件,隶属于B/S结构的Web系统开发类型
Web特点:
1.图形化
在一页上同时显示色彩丰富的图形和文本
2.与平台无关
无论Windows平台还是Linux/UNIX平台或者Mac平台以及其他平台
3.分布式
大量的图形,音频,视频可以放在不同的站点上,使物理并不一定在一个站点的信息逻辑上一体化,从用户角度来看,这些信息是一体的。
4.动态的
Web站点上的信息是动态的、经常更新的
5.交互的
用户可以通过“表单”的形式从服务器获得动态信息,也可以提出请求
Web的优势:
1.基于浏览器,具有统一的平台和UI体验
2.无须安装,只要有浏览器,随时随地可以使用
3.总是使用应用的最新版本,无须升级
4.数据持久存储云端,基本无须担心丢失
5.新一代Web技术提供更好的用户体验
脚本语言特点:
1.语法和结构通常比较简单
2.学习和使用通常比较简单
3.通常以容易修改程序的“解释”作为运行方式,而不需要“编译”
4.程序开发产能优于运行效能
Web构件:
1.客户端IE/Firefox/Safari等多种浏览器
2.超文本标记语言HTML
3.层叠样式表CSS
4.客户端脚本编程语言JavaScript
5.Web服务器Apache/Nginx/TomCat/IIS等中的一种
6.服务器端编程语言PHP/JSP/ASP等中的一种
7.数据库管理系统MySQL/Oracle/SQL Sever等中的一种
HTTP协议概述
超文本传输协议(Hypertext Transfer Protocol)
是一个客户端和服务器请求和响应的标准
1.一个HTTP客户端与Web服务器的HTTP端口建立一个TCP套接字连接 2.通过套接字,客户端向服务器发送一个文本请求报文(由报文请求行、请求头部、空行和请求数据四部分组成) 3.服务器解析求情,定位资源,将资源副本写到TCP套接字,由客户端读取 4.释放TCP套接字(服务器主动关闭,客户端被动关闭) 5.客户端浏览器解析资源
URL概述
http://<IP地址>/[端口号]/[路径]/[?<查询信息>]
http://www.baidu.com[:80]/images/index.php?id=2&name=fanbingbing
http:协议名 www.baidu.com:主机名 [:80]:端口号(可以省略) images:目录名 index.php:文件名 ?id=2:文件名后可附加参数,是为了准确的找到某一个东西 &name=fanbingbing:附加多个参数时,可以用&符连接
Web工作原理
1.服务器不带应用程序和数据库
2.带应用程序和Web服务器
3.浏览器访问服务器端的数据库
LAMP
Linux操作系统+Apache服务器+MySQL数据库管理系统+PHP后台脚本编程语言
HTML
概述
超文本标记语言
由标签(属性和实体)和内容构成
HTML中注释: <!-- .... -->
注释的目的:1. 辅助说明 2.代码调试
HTML标签(标记)的语法: 标签是由"<"和">"括起来
双标签:<标签名>....</标签名>
单标签:<标签名/>
HTML中的颜色:
可以是颜色单词:red/blue/green/yellow...
还可以是:#000000 --- #ffffff
其中前两位表示红色,中间两位绿色,后两位表示蓝色。
十六进制数包括:0123456789abcdef
整体结构
HEAD头部
绝大多数文档头部包含的数据都不会真正作为内容显示给读者。文档的头部描述了文档的各种属性和信息,包括文档的标题、在 Web 中的位置以及和其他文档的关系等。
下面这些标签可用在 head 部分:<base>, <link>, <meta>, <script>, <style>, 以及 <title>。<title> 定义文档的标题,它是 head 部分中唯一必需的元素。
网页标题: 设置网页编码: 关键字: 描述: 导入CSS文件: CSS代码: JS文件或代码: ... ...
BODY主体
文本标签
1. * 换行 2. * ... 换段 3. ... 斜体 4. ... 强调斜体 5. ... 加粗 6. *... 强调加粗 7. *... 其中n为1--6的值。 标题标签(加粗、独立行) 8. 引用 9. ... ... 10.* 删除线 ....
格式标签
1. * 换行 2. * ... 换段 居中对齐 预格式化标记 无序列表 有序列表 列表项目 水平线
超链接<a>标签
* 超级链接标签 属性:href必须,指的是链接跳转地址 target: 表示链接的打开方式: _blank 新窗口 _parent 父窗口 _self 本窗口(默认) _top 顶级窗口 framename 窗口名 title:文字提示属性(详情) 锚点链接: 定义一个锚点: 以前使用的是 使用锚点: 跳到a1处
图片标签<img>
 在网页中插入一张图片 属性:src: 图片名及url地址 alt: 图片加载失败时的提示信息 title:文字提示属性 width:图片宽度 height:图片高度 border:边框线粗细
多媒体标签
你的浏览器不支持播放 你的浏览器不支持播放 你的浏览器不支持视频播放 您的破浏览器该扔了,不支持视频标签
表格标签
*table 表格标签 caption 表格标题 *tr 行标签 *th 表头标签 *td 单元格标签 *thead 表头 *tbody 表体 tfoot 表角
表单标签
1. --表单标签 form标签常用属性: *action属性:提交的目标地址(URL) *method属性:提交方式:get(默认)和post get方式是URL地址栏可见,长度受限制(IE2k 火狐8k),相对不安全. post方式是URL地址不可见,长度不受限制,相对安全. enctype:提交类型 target: 在何处打开目标 URL。 name:属性为表单起个名字.HTML5不支持。用 id 代替。 2. 表单项标签input定义输入字段,用户可在其中输入数据。在 HTML 5 中,type 属性有很多新的值。 具体在下面有详解: 如: 3. 标签创建下拉列表。 *name属性:定义名称,用于存储下拉值的 size:定义菜单中可见项目的数目,html5不支持 disabled 当该属性为 true 时,会禁用该菜单。 multiple 多选 * 下拉选择项标签,用于嵌入到标签中使用的; *value属性:下拉项的值 *selected属性:默认下拉指定项. 4. * 多行的文本输入区域 *name :定义名称,用于存储文本区域中的值。 *cols :规定文本区内可见的列数。 *rows :规定文本区内可见的行数。 disabled: 是否禁用 readonly: 只读 ... 默认值是在两个标签之间 5. * 标签定义按钮。 您可以在 button 元素中放置内容,比如文档或图像。这是该元素与由 input 元素创建的按钮的不同之处。 6. html5标签--fieldset 元素可将表单内的相关元素分组。 disabled属性:定义 fieldset 是否可见。 form属性: 定义该 fieldset 所属的一个或多个表单。 7. html5标签-- 标签为 、 以及 元素定义标题。 健康信息: 身高: 体重: 8. html5标签-- 标签定义选项组。此元素允许您组合选项 样例: Volvo Saab Mercedes Audi 9. html5标签-- 标签定义可选数据的列表。与 input 元素配合使用,就可以制作出输入值的下拉列表。 样例: 10. ** 表单项中的属性,可以提供 *type属性:表示表单项的类型:值如下: text:单行文本框 password:密码输入框 checkbox:多选框 注意要提供value值 radio:单选框 注意要提供value值 file:文件上传选择框 button:普通按钮 submit:提交按钮 image:图片提交按钮 reset:重置按钮, 还原到开始(第一次打开时)的效果 hidden:主表单隐藏域,要是和表单一块提交的信息,但是不需要用户修改 *name属性:表单项名,用于存储内容值的 *value属性:输入的值(默认指定值) size属性:输入框的宽度值 maxlength属性:输入框的输入内容的最大长度 readonly属性:对输入框只读属性 *disabled属性:禁用属性 *checked属性:对选择框指定默认选项 accesskey属性:指定快捷键(不常用) (IE:alt+键 火狐:alt+shift+键) tabindex属性:通过数字指定tab键的切换顺序(不常用) src和alt是为图片按钮设置的 注意:reset重置按钮是将表单数据恢复到第一次打开时的状态,并不是清空 image图片按钮,默认具有提交表单功能。
frameset 标签
frameset 标签 -- 代替body标签定义了框架页,并且定义了框架将分为多少行与多少列 ------------------------------------------------------------------------------------ 1. frameset 标签常用属性: *cols -- 定义了框架含有多少列与列的大小(每个值使用逗号分隔), 取值为象素px或者百分比% *rows -- 定义了框架含有多少行与行的大小(每个值使用逗号分隔), 取值为象素px或者百分比% *border -- 定义frame定义的框架页的边框(单位像素),使用css实现 frameborder -- 定义框架页是否边框(此属性应写在frame标签内部,不应在此出现) framespacing -- 定义框架页之间间隔的距离,使用css实现 标签 可为那些不支持框架的浏览器显示文本,和 组合使用 可以做为浏览器不支持iframe标签时显示 *标签 创建一个包含另外一个文档的内联框架,iframe标签内的内容。 frame标签 -- 定义frameset标签中每个框架页的内容 frame标签是单独出现的, 常用属性: frameborder -- 定义了内容页的边框,取值为(1|0),缺省值为1 1 -- 在每个页面之间都显示边框 0 -- 不显示边框 *name -- 在一个框架页链接到另一框架页时使用(另一个框架页可以使用target定义链接页) noresize -- 定义了浏览者是否可以通过拖拽改变框架页尺寸,取值为(noresize) scrolling -- 定义是否有滚动条,取值为(yes|no|auto),缺省值为auto yes -- 显示滚动条 no -- 不显示滚动条 auto -- 当需要时再显示滚动条 *src -- 定义了内容页URL border – 设置边框粗细
CSS样式
语法格式:选择器{属性:值;属性:值;属性:值;....} CSS中注释:/* ... */
在HTML中如何使用css样式(html中嵌入css的方式)
1. 内联方式(行内样式) 就是在HTML的标签中使用style属性来设置css样式 格式: 被修饰的内容 在HTML中如何使用css样式 特点:仅作用于本标签。 2. 内部方式(内嵌样式) 就是在head标签中使用标签来设置css样式 格式: ....css样式代码 特点:作用于当前整个页面 3. 外部导入方式(外部链入) 3.1 (推荐)就是在head标签中使用标签导入一个css文件,在作用于本页面,实现css样式设置 格式: 特点:作用于整个网站 他们的优先级:当样式冲突时,就是采用就近原则,是值css属性离被修饰的内容最近的为主。 若没有样式冲突则采用叠加效果。
CSS2选择器
1. html选择符(标签选择器) 就是把html标签作为选择符使用 如 p{....} 网页中所有p标签采用此样式 h2{....} 网页中所有h2标签采用此样式 2. class类选择符 (使用点.将自定义名(类名)来定义的选择符) 定义: .类名{样式....} 匿名类 其他选择符名.类名{样式....} 使用:... .mc{color:blue;} /* 凡是class属性值为mc的都采用此样式 */ p.ps{color:green;} /*只有p标签中class属性值为ps的才采用此样式*/ 注意:类选择符可以在网页中重复使用 3. Id选择符 定义: #id名{样式.....} 使用:... 注意:id选择符只在网页中使用一次. 选择符的优先级:从大到小 [ID选择符]->[class选择符]->[html选择符]->[html属性] 4. 关联选择符(包含选择符) 格式: 选择符1 选择符2 选择符3 ...{样式....} 例如: table a{....} /*table标签里的a标签才采用此样式*/ h1 p{color:red} /*只有h1标签中的p标签才采用此样式*/ 5. 组合选择符(选择符组) 格式: 选择符1,选择符2,选择符3 ...{样式....} h3,h4,h5{color:green;} /*h3、h4和h5都采用此样式*/ 6. 伪类选(伪元素)择符: 格式: 标签名:伪类名{样式....} a:link {color: #FF0000; text-decoration: none} /* 未访问的链接 */ a:visited {color: #00FF00; text-decoration: none} /* 已访问的链接 */ a:hover {color: #FF00FF; text-decoration: underline} /* 鼠标在链接上 */ a:active {color: #0000FF; text-decoration: underline} /* 激活链接 */ 7. 属性选择器: ... 8. 其他伪类选择器 ...
CSS3选择器
1. 关系选择器: div>p 选择所有作为div元素的子元素p div+p 选择紧贴在div元素之后p元素 div~p 选择div元素后面的所有兄弟元素p 2. 属性选择器: [attribute]选择具有attribute属性的元素。 [attribute=value]选择具有attribute属性且属性值等于value的元素。 [attribute~=value]选择具有attribute属性且属性值为一用空格分隔的字词列表,其中一个等于value的元素。 [attribute|=value]选择具有att属性且属性值为以val开头并用连接符"-"分隔的字符串的E元素。 [attibute^=value]匹配具有attribute属性、且值以valule开头的E元素 [attribute$=value]匹配具有attribute属性、且值以value结尾的E元素 [attribute*=value]匹配具有attribute属性、且值中含有value的E元素 3. 结构性伪类选择器: ::first-letter设置对象内的第一个字符的样式。 ::first-line设置对象内的第一行的样式。 :before设置在对象前(依据对象树的逻辑结构)发生的内容。 :after设置在对象后(依据对象树的逻辑结构)发生的内容。 :lang(language)匹配使用特殊语言的E元素。 :element1~element2: :first-of-type匹配同类型中的第一个同级兄弟元素 :last-of-type匹配同类型中的最后一个同级兄弟元素 :only-of-type匹配同类型中的唯一的一个同级兄弟元素 :only-child匹配父元素仅有的一个子元素 :nth-child(n)匹配父元素的第n个子元素 :nth-last-child(n)匹配同类型中的倒数第n个同级兄弟元素 :last-child()匹配父元素的最后一个子元素 :root匹配元素在文档的根元素。在HTML中,根元素永远是HTML :empty匹配没有任何子元素(包括text节点)的元素 4. *状态伪类选择器 :link 设置超链接a在未被访问前的样式。 :visited 设置超链接a在其链接地址已被访问过时的样式 :active 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式 *:hover 设置元素在其鼠标悬停时的样式 *:focus 设置元素在其获取焦点时的样式 :target 匹配相关URL指向的E元素 :enabled 匹配用户界面上处于可用状态的元素 :disabled 匹配用户界面上处于禁用状态的元素 :checked 匹配用户界面上处于选中状态的元素 :not(selector)匹配不含有selector选择符的元素 ::selection 设置对象被选择时的样式 5. 其他伪类选择器 E:not(s) : {attribute} 匹配所有不匹配简单选择符s的元素E p:not(.bg) {background-color:#00FF00;}
CSS常用属性
1. color颜色属性: a. HSL颜色: 通过对色调(H)、饱和度(S)、亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色. background-color: hsl(240,100%,50%);color:white; b. HSLA颜色: 色调(H)、饱和度(S)、亮度(L)、透明度(A); background-color: hsla(0,100%,50%,0.2); *c. RGB颜色: 红(R)、绿(G)、蓝(B)三个颜色通道的变化 background-color: rgba(200,100,0); d. RGBA颜色: 红(R)、绿(G)、蓝(B)、透明度(A) background-color: rgba(0,0,0,0.5); *e. 图片透明度的设置 img.opacity{ opacity:0.25;} 2. 字体属性: font font *font-size: 字体大小:20px,60%基于父对象的百分比取值 *font-family: 字体:宋体,Arial font-style: normal正常;italic斜体; oblique倾斜的字体 *font-weight: 字体加粗 :bold font-variant: small-caps 小型的大写字母字体 font-stretch: [了解]文字的拉伸是相对于浏览器显示的字体的正常宽度(大部分浏览器不支持)。 3. 文本属性: text-indent: 首行缩进:text-indent:30px; text-overflow: 文本的溢出是否使用省略标记(...)。clip|ellipsis(显示省略标记) *text-align: 文本的位置:left center right text-transform:对象中的文本的大小写:capitalize(首字母)|uppercase大写|lowercase小写 *text-decoration: 字体画线:none无、underline下画线,line-through贯穿线 text-decoration-line:[了解]文本装饰线条的位置(浏览器不兼容) *text-shadow: 文本的文字是否有阴影及模糊效果 vertical-align: 文本的垂直对齐方式 direction:文字流方向。ltr | rtl white-space:nowrap; /* 强制在同一行内显示所有文本*/ *letter-spacing: 文字或字母的间距 word-spacing:单词间距 *line-height:行高 *color: 字体颜色 *4. 边框: border:宽度 样式 颜色; border-color; border-style; 边框样式:solid实现,dotted点状线,dashed虚线 border-width: border-left-color; border-left-style; border-left-width: ... CSS3的样式 border-radius:圆角处理 box-shadow: 设置或检索对象阴影 5. 背景属性:background *background-color: 背景颜色 *background-image: 背景图片 *background-repeat:是否重复,如何重复?(平铺) *background-position:定位 background-attachment: 是否固定背景, scroll:默认值。背景图像是随对象内容滚动 fixed:背景图像固定 css3的属性 *background-size: 背景大小,如 background-size:100px 140px; 多层背景: background:url(test1.jpg) no-repeat scroll 10px 20px,url(test2.jpg) no-repeat scroll 50px 60px,url(test3.jpg) no-repeat scroll 90px 100px; background-origin:content-box,content-box,content-box; background-clip:padding-box,padding-box,padding-box; background-size:50px 60px,50px 60px,50px 60px; 6. *内补白(内补丁) padding: 检索或设置对象四边的内部边距,如padding:10px; padding:5px 10px; padding-top: 检索或设置对象顶边的内部边距 padding-right: 检索或设置对象右边的内部边距 padding-bottom:检索或设置对象下边的内部边距 padding-left: 检索或设置对象左边的内部边距 7. *外补白(外补丁) margin: 检索或设置对象四边的外延边距,如 margin:10px; margin:5px auto; margin-top: 检索或设置对象顶边的外延边距 margin-right: 检索或设置对象右边的外延边距 margin-bottom: 检索或设置对象下边的外延边距 margin-left: 检索或设置对象左边的外延边距 8. Position定位 *position: 定位方式:absolute(绝对定位)、fixed(固定)(relative定位参考,可对内部相对absolute定位) *z-index: 层叠顺序,值越大越在上方。 *top: 检索或设置对象与其最近一个定位的父对象顶部相关的位置 right: 检索或设置对象与其最近一个定位的父对象右边相关的位置 bottom: 检索或设置对象与其最近一个定位的父对象下边相关的位置 *left: 检索或设置对象与其最近一个定位的父对象左边相关的位置 9. Layout布局 *display: 是否及如何显示:none隐藏,block块状显示... *float: 指出了对象是否及如何浮动:值none | left | right *clear: 清除浮动:none | left | right | both两侧 visibility:设置或检索是否显示对象。visible|hidden|collapse。 与display属性不同,此属性为隐藏的对象保留其占据的物理空间 clip: 检索或设置对象的可视区域。区域外的部分是透明的。 rect(上-右-下-左) 如:clip:rect(auto 50px 20px auto);上和左不裁剪,右50,下20. *overflow: 超出隐藏:hidden,visible:不剪切内容 overflow-x:内容超过其指定宽度时如何管理内容: visible | hidden | scroll | auto overflow-y:内容超过其指定高度时如何管理内容 10.Flexible Box 弹性盒子(了解见手册) box-orient: 设置或检索弹性盒模型对象的子元素的排列方式。horizontal(水平)|vertical(纵向) box-pack 设置或检索弹性盒模型对象的子元素的对齐方式。 box-align 设置或检索弹性盒模型对象的子元素的对齐方式。 box-flex 设置或检索弹性盒模型对象的子元素如何分配其剩余空间。 box-flex-group 设置或检索弹性盒模型对象的子元素的所属组。 box-ordinal-group 设置或检索弹性盒模型对象的子元素的显示顺序。 box-direction 设置或检索弹性盒模型对象的子元素的排列顺序是否反转。 box-lines 设置或检索弹性盒模型对象的子元素是否可以换行显示。 11. 用户界面 User Interface *cursor 鼠标指针采用何种系统预定义的光标形状。pointer小手,url自定义 zoom 设置或检索对象的缩放比例: normal|5倍|200%百分比 box-sizing 设置或检索对象的盒模型组成模式。content-box | border-box content-box: padding和border不被包含在定义的width和height之内。 border-box: padding和border被包含在定义的width和height之内。 resize 设置或检索对象的区域是否允许用户缩放,调节元素尺寸大小。 none: 不允许用户调整元素大小。 both: 用户可以调节元素的宽度和高度。 horizontal: 用户可以调节元素的宽度 vertical: 用户可以调节元素的高度。 outline 复合属性:设置或检索对象外的线条轮廓 outline-width 设置或检索对象外的线条轮廓的宽度 outline-style 设置或检索对象外的线条轮廓的样式 outline-color 设置或检索对象外的线条轮廓的颜色 outline-offset 设置或检索对象外的线条轮廓偏移位置的数值 nav-index 设置或检索对象的导航顺序。 nav-up 设置或检索对象的导航方向。 nav-right 设置或检索对象的导航方向。 12. 多栏 Multi-column columns 设置或检索对象的列数和每列的宽度 column-width 设置或检索对象每列的宽度 column-count 设置或检索对象的列数 column-gap 设置或检索对象的列与列之间的间隙 column-rule 设置或检索对象的列与列之间的边框 column-rule-width 设置或检索对象的列与列之间的边框厚度 column-rule-style 设置或检索对象的列与列之间的边框样式 column-rule-color 对象的列与列之间的边框颜色 column-span 象元素是否横跨所有列 column-fill 对象所有列的高度是否统一 column-break-before 对象之前是否断行 column-break-after 对象之后是否断行 column-break-inside 对象内部是否断行 13. 表格相关属性: table-layout 设置或检索表格的布局算法 border-collapse 设置或检索表格的行和单元格的边是合并在一起还是按照标准的HTML样式分开 separate | collapse border-spacing 设置或检索当表格边框独立时,行和单元格的边框在横向和纵向上的间距 caption-side 设置或检索表格的caption对象是在表格的那一边 top | right | bottom | left empty-cell 设置或检索当表格的单元格无内容时,是否显示该单元格的边框 hide | show 14. 过渡 Transition: transition 检索或设置对象变换时的过渡效果 transition-property 检索或设置对象中的参与过渡的属性 transition-duration 检索或设置对象过渡的持续时间 transition-timing-function 检索或设置对象中过渡的类型 transition-delay 检索或设置对象延迟过渡的时间 15. 动画 Animation animation 检索或设置对象所应用的动画特效 animation-name 检索或设置对象所应用的动画名称 animation-duration 检索或设置对象动画的持续时间 animation-timing-function 检索或设置对象动画的过渡类型 animation-delay 检索或设置对象动画延迟的时间 animation-iteration-count 检索或设置对象动画的循环次数 animation-direction 检索或设置对象动画在循环中是否反向运动 animation-play-state 检索或设置对象动画的状态 animation-fill-mode 检索或设置对象动画时间之外的状态 16. 2D变换 2D Transform: transform 检索或设置对象的变换 transform-origin 检索或设置对象中的变换所参照的原点 17. Media Queries Properties媒体查询 width 定义输出设备中的页面可见区域宽度 height 定义输出设备中的页面可见区域高度 device-width 定义输出设备的屏幕可见宽度 device-height 定义输出设备的屏幕可见高度 orientation 定义'height'是否大于或等于'width'。值portrait代表是,landscape代表否 aspect-ratio 定义'width'与'height'的比率 device-aspect-ratio 定义'device-width'与'device-height'的比率。如常见的显示器比率:4/3, 16/9, 16/10 device-aspect-ratio 定义'device-width'与'device-height'的比率。如常见的显示器比率:4/3, 16/9, 16/10 color 定义每一组输出设备的彩色原件个数。如果不是彩色设备,则值等于0 color-index 定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0 monochrome 定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0 resolution 定义设备的分辨率。如:96dpi, 300dpi, 118dpcm scan 定义电视类设备的扫描工序 grid 用来查询输出设备是否使用栅格或点阵。只有1和0才是有效值,1代表是,0代表否
PHP
PHP是超文本预处理器,在服务器端执行的,是嵌入到HTML中的脚本程序。 PHP是解释型语言(非编译型)。
安装配置环境
PHP的安装方式: 1. window下:集成安装和分别安装(一个个单独安装)。 2. linux系统下:rpm包的安装,源码包安装,yum源安装, 一键安装。 每个软件的配置文件和日志文件: 使用phpinfo测试(查看)php运行环境。 1.查看每个服务配置文件: php配置文件: xamp: D:\xampp\php\php.ini wamp: D:\wamp\bin\apache\apache2.4.4\bin\php.ini apache配置文件: xamp: D:\xampp\apache\conf\httpd.conf wamp: D:\wamp\bin\apache\apache2.4.4\conf\httpd.conf 其中:DocumentRoot "D:/xampp/htdocs" 表示web根目录 其他:DocumentRoot "D:/wamp/www" 表示web根目录 mysql配置文件: xamp: D:\xampp\mysql\bin\my.ini wamp: D:\wamp\bin\MySQL\my.ini 2. 本开发环境中只有两个服务:apache(web服务)和MySQL(数据库服务) 其中php不是服务,是一个解释引擎。故没有启动和停止。 启动和关闭服务: 1. 通过窗口(图形界面) 2. 通过系统服务来去启动和停止。 右键【我的电脑】->【管理】->【系统服务】 3. 是命令行(在开始->运行->中输入cmd回车) 在xamp中: net stop apache2.4 //停止apache服务 net start apache2.4 //启动apache服务 net stop mysql //停止MySQL服务 net stop mysql //启动MySQL服务 在wamp中: net stop wampapache //停止apache服务 net start wampapache //启动apache服务 net stop wampmysql //停止MySQL服务 net stop wampmysql //启动MySQL服务
通过一个程序认识一下
在www的web目录下,创建一个php文件 在里面输入: phpinfo(); ?> 之后通过浏览器访问(走http协议)此文件
基本语法
php嵌入到html中的方式:
1. <?php ... ?> 标准风格(推荐)
2. <script language="php">....</script> 长风格
3. <? ... ?> 短风格 需要在php.ini配置文件中开启short_open_tag选项才可以。
4. <% ... %> 兼容ASP风格(默认不支持)。需要在php.ini配置文件中开启asp_tags选项才可以。
在php中每条语句使用分号结束的。也就是分号是php语句之间的分割符。
注意: 在每个脚本中,最后一条语句后可以没有分号结束。
注释
// 单行注释 (来自其他程序中的注释)
# 单行注释 (来自脚本程序的注释)
/* ... */ 多行注释 注意:不可以嵌套使用。
/** .... */ 文档注释
变量
php是一个弱类型语言。
变量的命名规范:
变量是以$符开始定义的,
变量名的规则:由字母、数字、下划线构成,不可以使用数字开头。
在php中变量名是区分大小写
释放掉/销毁掉一个变量
unset(); //将一个变量的值和地址从内存中删除掉
empty(); //是用来判断一个变量是否为空,为空 True 否则 False
isset(); //用来判断一个变量是否存在,存在 True 否则 False
在php中共计有8种基本数据类型:
4种标量类型:
整数(int)
php的整型是占4个字节(32位)的。而且是没有无负号
储存值:-2147483648~2147483647
浮点数(float/double)
不区分单精度和双精度,统一占8个字节
布尔值(boolean)
真true和假false
当转换为 boolean 时,以下值被认为是 FALSE:
布尔值 FALSE 自身
*整型值 0 (零)
*浮点型值 0.0 (零)
*空""字符串, 以及 字符串 "0"
*不包括任何元素的数组
不包括任何成员变量的对象(仅PHP 4.0 适用)
*特殊类型 NULL (包括尚未设定的变量)
从没有任何标记(tags)的XML文档生成的SimpleXML 对象
字串(string)
单引号: ' ' 不支持变量解析, 支持单引号'和\的转义。
双引号: " " 支持变量解析,为了兼容使用{}将变量括起来。(支持转义: \n \s \t \r \" \\ \$)
定界符: <<< 注意定界符的结束符使用
2种复合类型:
数组(array)
一个变量中可以储存多个值。 数组分为:关联式数组和索引式数组
对象(object)
2种特殊类型:
资源(resource)
空(NULL)
其中:对象和资源类型属于引用类型,其他都属于值类型。
类型转换问题
自动类型的转换
自动类型转换!是因为PHP是一门非常非常弱的语言, 所以呢,在特定情况下,会有一个自动转换的情况
在下列情况下,会转换为布尔型 False
false 布尔型假的时候
0 整数位0的时候
0.0或0.00 浮点数为0.0或0.00的时候
"" 字串为空的时候
"0" 字串为0的时候
不存在的变量
在下列情况下,会转换为数值型
true 会转换为 1
false 会转换为 0
"123abc"会转换为 123
在下列情况下,会转换为字符串型
true 会转换为 "1"
false 会转换为 ""
null 会转换为 ""
强制类型转换
gettype(); //查看一个变量是什么类型的数据
settype(); 格式:settype(要转换的变量,"转换类型");
注意:使用settype()强制转换一个变量的类型, 原变量被覆盖,成为强制转换之后的类型
直接将你想转换的类型放到括号里,后面跟想转换的变量,需要将转换之后的结果用新变量接收!
注意:使用(integer)强制转换一个变量的类型, 不会覆盖原来的变量,而是将结果放到了新变量中
定义常量
常量:一定义赋值后,不可以再次修改和销毁的量,称为常量
特点: 在后面的所有程序中都可使用(对象中,函数内....)
格式:define(常量名,值[,bool]);
如: define("PI",3.14);
使用: echo PI;
要求: 常量名必须全部大写
目的:1.便于记忆 2. 便于理解
常用函数
gettype();获取一个变量的类型 *unset(); 销毁一个变量 *isset(); 判断一个变量是否存在 *empty(); 判断一个变量是否不存在。 *var_dump(); 格式化输出指定变量信息(包含类型) is_bool():判断是否是布尔型 is_int()、is_integer()和is_long():判断是否为整型。 is_float()、is_double()和is_real():判断是否为浮点型 is_string():判断是否为字符串 *is_array():判断是否为数组 *is_object():判断是否为对象 is_resource():判断是否为资源类型 is_null():判断是否为null is_scalar():判断是否为标量 *is_numberic():判断是否是任何类型的数字和数字字符串 is_callable():判断是否是有效的函数名
运算符
算术运算符:+ - * / %(取模/求余) ++ --
字符串运算符 . .=
赋值运算符 = += -= *= /= %= .=
比较运算符 > < >= <= <> != == === !==
逻辑运算符:逻辑与:and && 逻辑或 or || 逻辑非 not ! 异或:xor
其中逻辑与和逻辑或都具有短路效果。(短路与和短路或)
位运算符:& | ^ ~ << >>
其他运算符:?: `` @ => -> instanceof
三元运算符
表达式?真:假;
运算符的优先级
分不清就使用无敌()吧
流程控制
1.顺序结构
从上到下、从左到右
2.分支结构
1>单一分支结构
if(条件表达式){ 条件成立:走此区间 }
注意:1.先判断条件表达式是否成立,如果成立,就走花括号 里面的内容 2.如果条件不成立,就会直接跳过这个判断语句,继续执行下面的语句
2> 双向分支结构
if(条件表达式){ 条件成立:走此区间 }else{ 条件不成立:走次区间 }
注意:双向分支结构,是来判断if后面的条件,如果条件成立就走条件成立的区间;如果不成立,就走else后面的不成立的区间
3> 多向分支结构1
if(条件表达式1){ 条件1成立:走此区间 }else if(条件表达式2){ 条件2成立:走此区间 }else if(条件表达式3)……{ 条件3成立:走此区间 }else{ 如果上面的条件都不成立,走此区间 }
4> 多项分支结构2
switch(变量){ case 值1: 当变量值为值1的时候,走的区间 break; case 值2: 当变量值为值2的时候,走的区间 break; …… default: 当上面所有的值都不存在时,走的区间 break; }
注意: 1.switch语句多数用于判断一个值是什么 2.case后面跟变量的值,这个值是啥类型,我们就写啥类型 3.每写完一个条件之后,都要写一个break 4.case和break的组合,可以有N个 5.如果所有的case还有break中的条件都不符合,它会走default中的内容 6.case 后面跟的是英文的冒号
5>巢状分支结构
if(条件表达式){ if(条件表达式1){ if(条件表达式2){ } } }
注意: 1.巢状分支结构,我们不要超过三层 2.大的分支条件成立时,才会去走内部的分支结构
3.循环结构
1> while循环
while(条件表达式){ 条件成立,执行这里的代码 }
注意: 1.当while后面的条件表达式,成立时,则执行循环体当中 的内容,如果条件不成立,则跳出循环 2.当我们在写一个循环时,一定要注意,避免死循环的出现 如果出现了,要及时停止运行,否则可能造成电脑崩溃 3.当我们对一个范围进行循环时,需要注意和 递增、递减 配合使用 4.当我们遇到嵌套循环时,外层的循环执行1此,内层的循环 执行1圈 5.我们在进行循环嵌套的时候,注意不要超过3层 6.while和do…while多数用于判断条件是否成立,再进行循环
2> do…while循环
do{ 先打一遍,再问:服不服 }while(条件表达式);
注意: 1.do后面跟的是花括号 2.花括号后面才跟while 3.while里面跟的是条件表达式 4.while后面需要加上分号
3> for循环
for(表达式1;表达式2;表达式3){ 条件成立时,执行的代码 }
含义: 表达式1:赋初值 表达式2:条件表达式(计数) 表达式3:递增或者递减 三个表达式的运算顺序 1> 先执行赋初值的运算(只执行一次) 2> 再去判断条件表达式2是否成立,成立的话,才去执行for中的代码 3> 当for中的代码执行完以后,才去进行表达式3的内容,执行完 表达式3后,再去判断表达式2,然后依次运行下去 4> 我们写程序,是为了完成功能,而非难倒自己
函数
定义:函数是一个被命名的、独立的代码段、执行指定的任务、并可能给调用他的程序返回一个值
优越性:
1.提高程序的重用性
2.提高软件的可维护性
3.提高软件的开发效率
4.提高软件的可靠性
5.控制程序设计的复杂性
函数的声明
语法格式: function 函数名 ([形参1,形参2,...,形参n]){ 函数体; return 返回值; }
注意: 1.命名规范:它可以由数字、字母、下划线组成,但是不能以数字开头; 2.函数的命名,不区分大小写,这是它跟变量命名规则的区别 3.我们在程序当中有一段代码使用次数超过2次以上,我们就可以将它编程一个函数 4.系统当中如果已经存在某个函数,我们定义的自定义函数不能与其同名 5.即便是自定义函数,我们也不能让它同名,否则报错
函数的调用
函数名([实参1,实参2,...,实参n]); 有返回值可以使用变量接受返回值 $a=函数名([实参1,实参2,...,实参n]);
函数返回值
return语句可以向函数调用者返回函数体中任意确定的值
将程序控制权返回到调用者的作用域,即退出函数。在函数中如果执行了return语句,它后面的语句就不会被执行
变量的作用范围
局部变量
也称为内部变量,是在函数内部声明的变量,起作用域仅限于函数内部,离开该函数后使用这种变量是非法的。(形参也是局部变量)
全局变量
也称为外部变量,是在函数外部定义的变量,作用域从变量定义处到本程序文件的末尾。
PHP函数是独立的代码段,要想在函数中使用全局变量需要使用global关键字
还可以使用$GLOBLAS替代global
静态变量
函数内,使用static关键字定义的变量(静态存储类型)
第一次调用函数初始化该变量,再调用时,不会再次初始化,而是直接去内存空间中获得前一次存储的结果
函数种类
1. 系统函数
例子:var_dump()、is_bool()、is_string()、gettype()
使用手册时,怎么用? 1> 先看函数的功能 2> 看它有哪些参数 3> 看它的返回值 4> 看它的一些实例
2. 自定义函数
常规参数的函数
格式:string example(string name,int age, float height)
伪类型参数的函数
格式:mixed funName(mixed $args)
引用参数的函数
格式:void funName(array &arg) #在参数列表中出现&描述的形参
//写一个引用参数的函数 function demo(&$num1){ $num1 = 200; } $num = 100; demo($num); echo $num;
默认参数的函数
格式:mixed funName(string name [,string value [, int expire]] #在参数中出现[]描述的参数
可变参数的函数
格式:mixed funName(string arg1 [string ...] #在参数列表中出现使用...描述的参数
//可变参数长度的函数 function demo($num1,$num2,$num3){ //通过一个判断来限制用户传递的实参个数 if(func_num_args()>3){ die("我就让你传三个,你打我啊!"); } echo $num1,$num2,$num3; // echo "我是demo"; //接收实参列表所传递的所有参数 var_dump(func_get_args()); //我想要获取其中的一个值 // var_dump(func_get_arg(5)); } demo(1,2,3);
回调函数
变量函数
// 变量函数 function demo(){ echo "我是demo"; } $demo = "demo"; $demo();
格式:mixed funName(callback arg) #在参数列表中使用伪类型callback描述
//回调函数(了解) function demo($guize){ for($i=1;$i if($guize($i)){ // die("程序执行结束,因为i的值为3了"); continue; } echo $i; //1 2 } } function guize($num1){ if($num1==3){ return true; }else{ return false; } } demo("guize");
递归函数
function test($num1){ if($num1>1){ $num1 += test($num1-1); } return $num1; } echo test(3);
数组
数组的分类:根据数组的下标(索引值)类型不同分为:
索引式数组:数组下标都是整数的, 默认数组的索引下标是从0开始
关联式数组:数组下标是以字串表示的 (在其他强类型语言中有的称这个叫集合)
php中数组的定义:
(1). 直接赋值: $数组名[下标]="值";
echo " ==============索引式数组================= "; $a[]=10; $a[]=20; $a[]=30; $a[10]="cc"; $a[]="bb"; echo " ==============关联式数组================== "; $p["name"]="张三"; $p["sex"]="男"; $p["age"]=20; $p["name"]="李四"; //修改
(2). 使用array语言结构来定义。
$a = array(10,20,30,40); //使用array函数定义一个数组(未指定下标) $b = array("aa","bb","cc");//使用array函数定义一个数组(未指定下标) $c = array(1=>10,2=>20,6=>80); //使用array函数,定义一个指定下标的数组 $stu = array("name"=>"张三","age"=>20); //使用array函数,定义一个指定关联下标的数组 $stu = array("name"=>"张三","age"=>20,3=>"qq","pp"); //这是pp的下标是4 $p = array("name"=>"张三","age"=>20,"aa","bb"); //这时数组aa和bb的下标为0,1
(3)、 使用快捷方式定义数组。(>=PHP5.3.0)
$a = [10,20,30]; $stu = ["name"=>"张三","age"=>20];
(4)、 多维数组:当一个数组中的元素单元还是一个数组时,称为多维数组。(几层就是几维)
echo $a[10]; //一维数组 echo $a[1][2]; //二维数组 $a = array(10,20,40,50); //一维数组 $b = array( array(10,20),array(30,40)...); //二维数组
数组的遍历(迭代)输出(4种)
1.使用循环结构:for/while/do...while 使用到一个函数:count()--获取数组的长度(元素的个数)
示例: $a=array(10,20,30,40,50,60); $ll=count($a); for($i=0;$i echo $a[$i]." "; } 注意:使用for循环只适合输出索引式数组,并且数组下标是从0开始连续的整数。 但是可以使用array_values()函数来弥补数组下标不足的地方。 示例: echo " "; //输出非规则的数组 $a=array(2=>10,3=>40,6=>80,4=>30,"name"=>"张三"); //获取数组中的所有值,并以索引式数组返回 $list = array_values($a); //使用for循环遍历 for($i=0;$i echo $list[$i]." "; }
2. 使用foreach遍历数组 格式:foreach(被遍历的数组 as [键=>]值){ .... }
示例://关联式数组的输出 $stu = array("name"=>"zhangsan","age"=>20,"sex"=>"man"); foreach($stu as $k=>$v){ echo "{$k}=>{$v} "; }
3. 联合while each reset list遍历数组(半自动方式) each()--获取当前数组指针位置的键和值,并以关联和索引两种方式返回,并且指针向下移动一位。 reset()--将数组指针移至首位。 list()--直接解析赋过来的数组中的索引下标对应的值,解析是从0开始 (像 array() 一样,这不是真正的函数,而是语言结构。 list() 用一步操作给一组变量进行赋值。)
list($v1,$v2)=array("key"="name",0=>"name","value"="zhangsan",1=>"zhangsan"); echo $v1.":".$v2; //name:zhangsan 示例: //使用while、each、reset、list解析遍历的结果 $stu = array("name"=>"zhangsan","age"=>20,"sex"=>"man"); reset($stu); while(list($k,$v)=each($stu)){ echo "{$k}=>{$v} "; }
4. 使用下面的函数来遍历数组(纯手工遍历数组) reset()-- 将数组的内部指针指向第一个单元 end() — 将数组的内部指针指向最后一个单元 next() — 将数组中的内部指针向前移动一位 prev() — 将数组的内部指针倒回一位 current() — 返回数组中的当前单元 key() — 从关联数组中取得键名
do....while循环 示例: $a = array(10,20,30,40,50,60); reset($a);//将数组指针移至首位 do{ echo key($a)."=>".current($a)." "; //获取键和值 }while(next($a));
超全局数组:
$GLOBALS 包含以下所有信息
*$_SERVER 服务器和执行环境信息
*$_GET 通过 URL 参数传递给当前脚本的变量的数组。
*$_POST 通过 HTTP POST 方法传递给当前脚本的变量的数组。
*$_FILES 保存文件上传信息(在文件处理章节中细讲)
(cookie和session在会话跟踪章节中细讲)
*$_COOKIE 通过 HTTP Cookies 方式传递给当前脚本的变量的数组(用于储存论坛、文库、博客等登陆信息)
*$_SESSION 当前脚本可用 SESSION 变量的数组。(用于网站购物车等的信息存储)
*$_REQUEST 包含get、post和cookie
$_ENV 存储的是系统环境变量信息
*$_SERVER["HTTP_REFERER"]--上一页面的url地址
--服务器的主机名
*$_SERVER["SERVER_ADDR"]--服务器端的IP地址
$_SERVER["SERVER_PORT"]--服务器端的端口
*$_SERVER["REMOTE_ADDR"]--客户端的IP
$_SERVER["DOCUMENT_ROOT"]--服务器的web目录路径
*$_SERVER["REQUEST_URI"];//--URL地址
echo $_GET["name"];
echo $_REQUEST["name"]; //获取信息比上面get的会慢一些
数组的相关函数
1. 数组的键和值的操作函数
*array_values — 返回数组中所有的值
array_keys — 返回数组中所有的键名
array_flip — 交换数组中的键和值
*in_array — 检查数组中是否存在某个值
array_reverse — 返回一个单元顺序相反的数组
*is_array() --判断是否是数组
2. 数组的统计相关函数
*count -- 计算数组中的单元数目或对象中的属性个数
array_count_values -- 统计数组中所有的值出现的次数
array_unique -- 移除数组中重复的值
3. 带回调函数的
array_filter -- 用回调函数过滤数组中的单元
array_walk -- 对数组中的每个成员应用用户函数
array_map -- 将回调函数作用到给定数组的单元上
4. 数组的排序
*sort -- 对数组排序(升序)
rsort -- 对数组逆向排序(降序)
asort -- 对数组进行排序并保持索引关系(关联数组排序)
arsort -- 对数组进行逆向排序并保持索引关系
*usort -- 使用用户自定义的比较函数对数组中的值进行排序
uasort -- 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
ksort -- 对数组按照键名排序
krsort -- 对数组按照键名逆向排序
uksort -- 使用用户自定义的比较函数对数组中的键名进行排序
*natsort -- 用“自然排序”算法对数组排序
natcasesort -- 用“自然排序”算法对数组进行不区分大小写字母的排序
array_multisort -- 对多个数组或多维数组进行排序(了解)
array_slice -- 从数组中取出一段
array_splice -- 把数组中的一部分去掉并用其它值取代
array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
*array_merge -- 合并一个或多个数组
array_intersect -- 计算数组的交集
array_diff -- 计算数组的差集