PHP
错误解决
中文乱码
开头添加:
header("Content-Type: text/html; charset=utf-8");
PHP 简介
什么是 PHP
定义
一种服务器端的 HTML 脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。是一种广泛用于 Open Source(开放源代码)的尤其适合 Web 开发并可以嵌入 HTML 的多用途脚本语言。它的语法接近 C,Java 和 Perl,而且容易学习。
该语言让 Web 开发人员快速的书写动态生成的网页
前身
Personal HomePage:个人主页,使用Perl语言开发的一种写个人主页的语言
PHP:PHP Hypertext Preprosessor, php 超文本预处理器,底层使用C语言
PHP发展史
…
平台支持(window,Linux,UNIX)
数据库支持(Sqlserver,mysql,Oracle,Access)
网站
静态网站特点
- 网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;
- 静态网页的内容相对稳定,因此容易被搜索引擎检索;
- 静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
- 静态网页的交互性较差,在功能方面有较大的限制。
动态网站特点
-
交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后Web发展的潮流。
-
自动更新:即无须手动更新HTML文档,便会自动生成新页面,可以大大节省工作量。
-
因时因人而变:即当不同时间、不同用户访问同一网址时会出现不同页面。
此外动态网页是与静态网页相对应的,也就是说,网页 URL 的后缀不是 .htm、.html、.shtml、.xml 等静态网页的常见形式,而是以 .asp、.jsp、.php、.perl、.cgi 等形式为后缀。在动态网页网址中有一个标志性的符号——“?”
网站基本概念
服务器
服务器:能够提供服务的机器,取决于机器上所安装的软件(服务软件)
Web服务器:提供web服务(网站访问),就需要安装web服务软件 Apache,tomcat,iis 等
IP
Internet Protocol,网络之间互联协议。网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议
IP地址具有唯一性(每台电脑都有一个唯一的IP地址)
域名
Domain Name,是由一串用点分隔的名字组成(www.itcast.cn)的 Internet 上某一台计算机或计算机组的名称
一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称
特殊IP:127.0.0.1,代表本机
特殊域名:localhost
DNS
Domain Name System,域名系统
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)
用户输入域名 localhost --> DNS(localhost 127.0.0.1)–> 服务器电脑
端口
Port,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。
用户输入域名 localhost:端口 --> DNS(localhost 127.0.0.1)–> 服务器电脑 --> 软件(服务)
Web 程序的访问流程
Web分为两类:静态网站和动态网站
浏览器发起访问 --> DNS解析域名 --> 服务器电脑 --> 服务软件
静态网站的访问
动态网站的访问
动态网站访问流程与静态差不多,但是会多出几个内容:服务器端解析、数据库
安装 Apache
安装 Apache 软件
- 获取 Apache 软件
- 双击安装即可:指定对应路径
- 选择安装模式:使用自定义
- 选择安装位置
Apache 的目录结构说明
Httpd.exe 的详细应用
- 服务器进程:运行之后才能够工作
- 用来查看Apache具有哪些功能以及配置文件是否有错:httpd 或者 httpd.exe(文件所在目录)
- 查看使用的模块:httpd.exe -M
- 验证配置文件是否有效:httpd -t
- 查看使用的模块:httpd.exe -M
配置默认站点
-
让 Apache 确定服务器上访问的位置:网站文件夹所在位置
Httpd.conf: DocumentRoot
-
方便用户使用名字访问对应网站:给文件夹对应的起一个别名
Httpd.conf: ServerName
端口可以单独实现:httpd.conf: listen
-
凡是涉及到 Apache 配置问价的修改,那么需要重启 Apache 才能生效
-
实现 DNS 域名解析:通常默认站点都是本地 DNS:hosts 文件
C:\Windows\System32\drivers\etc 下 hosts 文件
安装与配置 PHP
安装 PHP 语言
-
获取PHP安装文件:建议去官网
-
解压缩
-
安装:将压缩包放到 D:/server/ ,重命名 php5
PHP 目录结构说明
php.exe 的应用
php.exe 就是可以解析PHP代码转变成HTML代码从而让浏览器可以解析的。
- 通过CMD控制器进入到php.exe所在目录
- 通过 php.exe 运行命令来指定要解析的 PHP脚本 就可以:
php.exe -f
PHP文件所在路径
配置 Apache 加载 PHP 模块
-
Apache 加载 PHP 模块:在 Apache 的主配置文件(httpd.conf)中加载对应的 PHP 提供的模块
LoadModule php5_module 'D:/server/php5/php5apache2_2.dll'
-
Apache 分配工作给 PHP 模块:如果是 PHP 代码就交给 PHP 处理:文件后缀判断 .php 结尾肯定是 PHP 代码
AddType application/x-httpd-php .php
-
将 PHP 的配置文件加载到 Apache 配置文件中:共同生效
-
在 Apache 中指定 PHP 配置文件所在路径
PHPIniDir php.ini所在路径
-
php.ini 文件默认是不存在的,是以 development 和 production 格式存在,需要格式化
说明:PHP 的配置文件已经加入到 Apache 的配置项中,意味着 php.ini 的修改需要 Apache 重启才会生效。
-
安装与配置 MySQL
安装 MySQL 软件
MySQL 目录结构说明0
Bin 目录的常用命令
软件设计结构:C/S 和 B/S
- C/S:Client客户端/Server服务端,用户需要安装客户端产品才能访问服务器,而且只能访问一种软件(当前自己)
- B/S:Browser浏览器/Server服务端,用户只需要安装浏览器,就可以访问所有的服务器(B/S架构服务)
MySQL 访问流程
Mysql 是一款 C/S 架构的软件,需要通过客户端来访问服务端(MySQL 提示也提供了其他模式的访问:通过一些插件扩展来充当客户端)
-
启用 MySQL 客户端: mysql.exe,该软件本身可以通过 CMD 控制台运行
-
MySQL客户端访问服务端需要进行寻找匹配:连接认证
连接:IP和端口确认,如果是本地都可以省略
-h 主机地址 --> -hlocalhost(可以是 IP)
-P 端口 --> -P3306
认证:通过用户名和密码进入服务器
-u 用户名 --> -uroot,不可以省略(匿名用户除外)
-p 密码 --> -proot
-
退出命令
\q
注意:通常连接认证的时候密码不建议明文,可以再输入 -p 之后回车,系统会再次让输入密码,这个时候就是密文
PHP 连接 MySQL 数据库
PHP 本身不具备操作 MySQL 数据库的能力,需要借助 PHP 操作 MySQL 的扩展来实现
- PHP 加载 MySQL 扩展:php.ini 文件
- PHP 所有的扩展都是在 ext 文件夹中,需要制定扩展所在路径: extension_dir
- php.ini 已经被 Apache 加载,所以需要重启
如果出错,尝试设置:
设定 PHP 的系统时区
通过 php.ini 中的 timezone 配置项来实现
; 增加时区
date.timezone = PRC
配置虚拟主机
一台服务器很贵,如果只能部署一个网站,那么非常浪费。所以需要通过其他渠道来实现一台主机上部署多个网站。
什么是虚拟主机
虚拟主机:Virtual machine,并不存在真实的主机,但是可以提供真实主机所实现的功能。
通俗的讲,虚拟主机就是将计算机中不同的文件夹进行不同的命名,然后可以实现让服务器(Apache)根据用户的需求从不同的文件夹(网站)中读取不同的内容。
虚拟主机的分类
在Apache中,可以将虚拟主机划分成两类:
-
基于IP的虚拟主机:一台电脑上有多个IP,每个IP对应一个网站
原理:电脑默认只有一个IP,因为通常只配有一个网卡;但是有的电脑(服务器居多)可以配置多个网卡,每个网卡可以绑定一个IP地址。
-
基于域名的虚拟主机:一台电脑上只有一个IP,但是IP下可以制作多个网站,但是需要给每个网站不同的名字(虚拟主机名)
搭建基于域名的虚拟主机
在Apache中,虚拟主机的搭建有两种方式:
-
在主配置文件中搭建:需要手动开启虚拟主机(基于域名)
NameVirtualHost *:80
-
在专门的虚拟主机配置文件中配置
-
在主配置文件中加载虚拟主机配置文件(httpd.conf):虚拟主机配置文件已经开启了虚拟主机 NameVirtualHost
-
虚拟主机从配置文件(extra/httpd-vhosts.conf)中配置虚拟主机
-
增加一个对应的站点文件夹位置:
-
增加主机名字:文件夹的别名:ServerName
-
增加域名解析 DNS:(hosts 文件)
-
需要给当前设定的站点(目录)访问权限
<Directory '站点目录'> Order Deny,Allow // 没有顺序关系:实际顺序有关系 Deny from 指定的范围 Allow from 指定范围 </Directory>
-
配置访问列表:当访问是一个目录时(没有指定具体要访问的文件)
Options Indexes [FollowSymLinks],如果访问目录,那么列表显示所有文件
-
当用户访问指定目录不指定文件的时候,通常需要系统指定一个默认文件
DirectoryIndex 默认的文件列表,使用空格分离
注意:如果网站中整个网站根目录允许访问,但是其中还有其他文件夹不允许访问:可以增加多个 Directory 标签,针对不同文件夹
-
-
一旦启用虚拟主机配置文件,那么默认的主机地址 localhost 就不再生效,如果想要生效:为 localhost 增加单独的虚拟主机
-
PHP 基础
PHP 语法初步
PHP 是一种运行在服务器端的脚本语言,可以嵌入到HTML中。
PHP 代码标记
在PHP历史发展中,可以使用多种标记来区分PHP脚本
- ASP标记:
<% php代码 %>
- 短标记:
<? php代码 ?>
以上两种基本弃用,如果要使用那么需要在配置文件中开启
- 脚本标记:
<script lang="php"> php代码 </script>
- 标准标记(常用):
<?php php代码 ?>
PHP 注释
习惯:所有的代码在写的过程中都必须进行注释
PHP 中注释分为两种
-
行注释:一次注释一行
// :后面跟的所有内容都是注释
# :与 // 一样
-
块注释:一次注释多行
/* : 直到下面出现之前中间全部都是注释
PHP 语句分隔符
语句分隔符:在 PHP 中,代码是以行尾单位,系统需要通过判断行的解说,该结束通常都是一个符号:英文分号 ;
特殊说明:
- PHP中标记结束符
?>
有自带语句结束符的效果,最后一行 PHP代可以没有语句结束符;
(不建议) - PHP中其实很多代码的书写并不是嵌入到 HTML 中,而是单独存在,通常书写习惯中就不建议使用标记结束符
?>
,PHP 会自动从开始到最后全部认为是 PHP代码,从而解析
变量
概念
- 变量是用来存储数据的;
- 变量是存在名字的;
- 变量是通过名字来访问的:数据;
- 变量是可以改变的:数据。