第1章 PHP语言介绍
1.什么是PHP
1.外文名PHP:Hypertext Preprocessor,中文名:“超文本预处理器”是一种通用开源脚本语言。 2.语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。 3.PHP入门简单,学习入门易入手。123
2.什么是静态页面和动态页面
1.页面信息发布后内容固定不变,没有交互,常见以HTML结尾的就是静态页面,比如新闻发布网站。 2.页面有交互,需要去数据库里取数据再返回给用户的就是动态页面。12
3.HTTP请求方法
4.HTTP常见状态码
4.用户访问网站的流程
1.用户输入域名->浏览器跳转->浏览器缓存->Hosts 文件->DNS 解析( 递归查询 | 迭代查询 ) 客户端向服务端发起查询->递归查询 服务端向服务端发起查询->迭代查询 2.由浏览器向服务端发起 TCP 连接(三次握手) 客户端 -->请求包连接-syn=1 seq=x 服务端 服务端 -->向应客户端 syn=1 ack=x+1 seq=y 客户端 客户端 -->建立连接 ack=y+1 seq=x+1 服务端 3.客户端发起 http 请求: 1.请求的方法是什么: Get 获取 2.请求的 Host 主机是: www.oldboyedu.com 3.请求的资源是什么: /index.html 4.请求的端口是什么: 默认 http 是 80 https 443 5.请求携带的参数是: 属性(请求的类型、压缩、认证、浏览器信息、等等) 6.请求最后的空行 4.服务端响应的内容是 1.服务端响应使用的 WEB 服务软件 2.服务端响应请求文件的类型 3.服务端响应请求的文件是否进行压缩 4.服务端响应请求的主机是否进行长连接 5.客户端向服务端发起 TCP 断开(四次挥手) 客户端 --> 断开请求 fin=1 seq=x --> 服务端 服务端 --> 响应断开 fin=1 ack=x+1 seq=y --> 客户端 服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端 客户端 --> 确认断开 fin=1 ack=z+1 seq=sj --> 服务端123456789101112131415161718192021222324
第2章 PHP安装部署
1.集成环境phpstudy安装
官方网站:
http://www.phpstudy.net/1
2.代码工具PHPstorm安装
安装参考网站:
https://www.jetbrains.com/phpstorm1
破解:
https://www.bilibili.com/read/cv7319471/1
第3章 PHP基本语法
1.PHP基本函数
编写info.php页面,代码如下
<?php phpinfo(); ?>123
在浏览器输入你的IP地址然后访问,如果出现以下页面则表示PHP工作正常。
代码解释:
1.phpinfo是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP信息。 2.电脑是一个很笨的东西,需要我们人为的告诉他,代码写完了。我们用分号(;)来告诉他代码写完了。因此只要写完一段代码,就需要在后面加分号。 3.而前后两行的回车空行,是为了让代码更加好看,避免叠在一起,看着不舒服。其实中间有多少个回车空行都没有关系的,保证好看就行了。PHP的语法解释器(PHP最核心部分)不会处理这些空行的。123
代码编写注意:
1.PHP的代码信息全部要用半角的英文、很多人容易写成全角的英文/中文和符号造成PHP代码报错。 2.PHP代码的最后一行可以加也可不加分号。由于很多学习者特别是初学者经常犯一个毛病,写完一行代码不加分号,因此容易犯错,某些公司规定一行代码写完,就必须加分号。 3.我们在写文件test.php这个文件命名的时候,只要英文半角(a-z A-Z 0-9 _-)这些字符来命名文件,文件命名不要用中文,不要用特殊符号,不要中间加空格,严格区分大小。123
2.PHP变量与常量
2.1 变量
创建test01.php并写入以下代码:
<?php $iphone12 = 5880; $iphone12mini = 6088; echo $iphone12 + $iphone12mini; //echo是在PHP里面最常用的一个输出、显示功能的命令?>12345
变量的命名注意:
1.必须要以$开始,如变量x必须要写成$x 2.变量的首字母不能以数字开始 3.变量的名字区分大小写 4.变量不要用特殊符号、中文,_不算特殊符号 5.变量命名要有意义(别写xxx,aaa,ccc)这种变量名12345
变量的分类:
可变变量 外部变量 环境变量123
2.2 可变变量
<?php header('Content-type:text/html;charset=utf-8'); // 服务器读取的 编码设置 $son_name = 'father_name'; //定义了一个变量"儿子的姓",值是"爸爸的姓"。 $father_name = 'zhang'; //定义了一个变量"爸爸的姓",值是"zhang"。 echo $$son_name; //输出儿子姓什么,儿子跟随爸爸的姓。?>123456
2.3 外部变量
html代码:
<html><body><!-- 这一行method 对应的值改为post ---><form action="bianliang.php" method="post"> <input type="text" name="username"/> <input type="password" name="pwd"/> <input type="submit" name="提交"/></form></body></html>12345678910
php代码:
<?php header('Content-type:text/html;charset=utf-8'); //$_POST[‘username’],将username作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”username”/>的值 $user = $_POST['username']; echo $u.'<br />'; //$_POST[‘pwd’],将pwd作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”pwd”/>的值 $passwd = $_POST['pwd']; echo '用户名:'.$user.'<br>'; echo '密码:'.$passwd.'<br>';?>12345678910
2.4 环境变量
<?php echo '请求方法: '.$_SERVER["REQUEST_METHOD"].'<br>'; echo '请求的URI: '.$_SERVER["REQUEST_URI"].'<br>'; echo '服务程序: '.$_SERVER["SERVER_SOFTWARE"].'<br>'; echo '客户端IP: '.$_SERVER["REMOTE_ADDR"].'<br>'; echo '服务端IP: '.$_SERVER["SERVER_ADDR"].'<br>'; echo '文件路径: '.$_SERVER["SCRIPT_FILENAME"].'<br>'; echo '浏览器类型: '.$_SERVER["HTTP_USER_AGENT"].'<br>'; echo '跳转页面: '.$_SERVER["HTTP_REFERER"].'<br>'; echo '当前时间: '.$_SERVER["REQUEST_TIME"].'<br>';?>1234567891011
2.5 常量
格式说明:
常量就是长久不变的值,常量在代码中的定义,以及书写方式如下所示: define(常量名, 常量值)12
格式注意:
1.常量名可以小写,但是通常大写 2.常量名可以不加引号,但是通常加上引号 3.在字符串中调用常量的时候,必须在引号外面 4.常量名建议只用字母和下划线1234
实验代码:
<?php define('MY_NAME','PHP中文网'); echo MY_NAME; //下面是错误的调用方式 echo '我的名字是MY_NAME'; //下面是正确的调用方式 echo '我的名字是'.MY_NAME;1234567
3.PHP注释信息
3.1 什么是注释
1.因为代码是英文的,并且代码很长,时间长了人会忘了代码的意思作用,所以可以加上注释进行说明提示。 2.对重点进行标注 3.可以让其他人更容易看懂配置信息 4.拥有注释、空行、回车之后的代码看起来更优美 5.注释可用来排错,不确定代码中哪一块写错了,可以将一大段注释掉,确定错误区域。 6.注释中的部分的内容,电脑不会执行它123456
3.2 单行注释
<?php //声明异步iphone12手机的价格变量 $iphone12 = 6000; //显示输出收集价格 echo $iphone12; ?>123456
3.3 多行注释
<?php /* 作者:PHP中文网 时间:2020.01.01 功能:这是一个多行注释例子 */ ?>12345678
4.PHP数据类型
4.1 什么是数据类型
数据类型就是对数据分类的一种划分方式而已,例如以下举例说明: 哺乳动物:人、猫、马、鸭嘴兽…等等 蔬菜类型:西红柿、菠菜、茄子…等等 水果类型:西瓜、桃子、苹果…等等1234
4.2 PHP中的数据类型
序号 | 数据类型 | 数据类型描述 |
---|---|---|
1 | boolean(布尔类型) | 布尔型是简单的数据类型,只有两个值false(假)和true(真) |
2 | string(字符串型) | 字符串就是连续的字符序列,如echo“string” |
3 | integer(整形) | 整形数据类型只能包含整数,这些数据类型可以是负数或者整数 |
4 | float/double(浮点型) | 浮点类型用于存储数字,和整形不同的是浮点型可以有小数点 |
5 | array(数组类型) | 一组相同类型的集合 |
6 | object(对象类型) | 对象是一个实例,使用new命令创建一个对象 |
7 | resource(资源型) | 资源是一种特殊的变量,保存在外部资源的一个应用,资源是通过函数来进行建立的 |
8 | null(空白) | 特殊的值,表示变量没有值,任何变量的初始值都是null |
4.3 整数类型
整形表示即为整数,英文称之为integer,英文简写为int; 整形分为8进制、10进制、16进制,整形在计算机里面是有最大值和最小值范围的。 大家经常听说32位计算机,也就是32位计算机一次运算处理的最大范围是-2的32次方到2的32次方-1; 而64位计算机,就是一次运算处理的最大范围是-2的64次方到2的64次方-1。1234
4.4 布尔类型
布尔类型解释:
所谓布尔类型,汉语翻译过来之后,更好的解释是用道家中易经的语言进行解释,即为:阴/阳,男/女,真/假,对/错,存在/不存在,0/1等等。1
举例说明:
<?php $buer=true; //声明一个变量(拼音)为布尔类型 $bool=false; //声明一个变量(英文)为布尔类型 ?>1234
4.5 字符串类型
字符串类型说明:
在PHP语言中声明字符串有三种方式: 1.用单引号声明 2.用双引号声明 3.用字界符声明1234
单引号举例:
<?php $zifu='万事开头难,然后中间难,最后结尾难'; echo $zifu; ?>1234
双引号举例:
<?php $str="努力了这么久,但凡有点儿天赋,也该有些成功迹象了"; echo $str; ?>1234
字界符举例:
<?php $dingjie = <<<ABC 那天班长说要和我<font size="20">试试!</font><br> 我说<small>可以。</small><br> 我一说,<br> 他<font size="20" color="#ff7f50">啪</font>就站起来了,<font size="20" color="#6495ed"><i>很快啊!</i></font><br> 我大意了啊,没有闪。<br> 他忙说对不起对不起,我不懂规矩啊,他说他是<font size="8"><del>故意</del></font> 乱打的。<br> 他可不是乱打的啊,铮铮鞭腿左刺拳训练有素,后来他说他练过醉拳,看来是有备而来。<br> 这个年轻人,<font size="20">不讲武德!</font><br> 来偷袭!我这个<font size="18" color="#dc143c">29岁的老同志。</font> <br> 这好吗?这不好。 <br> 我劝这位年轻人, <br> <font size="10" color="#ff7f50">好自为之!好好反思! </font> <br> 以后不要再犯这样的小聪明。 <br> ABC; echo $dingjie ?>123456789101112131415161718
单引号和双引号的区别
1.双引号解析变量,但是单引号不解析变量 2.在双引号里面插入变量,变量后面如果有英文或中文字符,会把这个字符和变量拼起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但是单引号能解析\ 5.单引号效率高于双引号,尽可能使用单引号 6.双引号和单引号可以互相嵌套,双引号中可以插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.一般将定界符声明字符串视为双引号一样的功能来看待。12345678
4.6 浮点类型
<?php $fudian=12121.3232; echo $fudian; ?>1234
4.7 数据类型的查看
查看数据类型:
gettype(传入一个变量)输出变量的类型 var_dump(传入一个变量)输出变量类型和值12
举例:
<?php $float = 88.8; $type = gettype($float); echo $type; $str = '你喜欢男人还是喜欢女人'; $type = var_dump($str); echo $type; ?>123456789
4.8 数据类型的判断
判断数据类型说明:
使用is_*系列函数,is_types这一系列的函数,来进行判断某个数据属于哪种类型,如果是这个类型返回真,不是这个类型返回假。1
序号 | 判断函数 | 函数判断描述 |
---|---|---|
1 | is_int | 判断是否为整数数据类型 |
2 | is_bool | 判断是否为布尔数据类型 |
3 | is_float | 判断是否是浮点数据类型 |
4 | is_string | 判断是否是字符串数据类型 |
5 | is_array | 判断是否是数组数据类型 |
6 | is_object | 判断是否是对象数据类型 |
7 | is_null | 判断数据信息是否为空 |
8 | is_resource | 判断是否为资源数据类型 |
9 | is_scalar | 判断是否为标量 |
10 | is_numeric | 判断是否为数值类型 |
11 | is_callable | 判断是否为函数 |
举例:
<?php //is_*系列函数有个特点,就是如果是这个类型的返回的值为真,不是这个数据类型就返回的是假 //声明类型为假 $fo = false; if (is_bool($fo)) { echo '执行真区间'; }else{ echo '执行假区间'; } echo "<br />"; //检查未声明的变量$p是否为空,为空就执行真区间 if(is_null($p)) { echo '执行真区间'; }else{ echo '执行假区间'; } echo "<br />"; //字符串类型的数值,检查执行的真还是假 $str = '18.8'; if(is_numeric($str)) { echo '执行真区间'; }else{ echo '执行假区间'; } echo "<br />"; //把sca的值换为整数 浮点 布尔和字符串试试 $sca = true; if(is_scalar($sca)) { echo '执行真区间'; }else{ echo '执行假区间'; } echo "<br />"; //换成echo,is_int试试,为什么echo执行假区间呢? if(is_callable('var_dump')) { echo '执行真区间'; }else{ echo '执行假区间'; } echo "<br />"; ?>123456789101112131415161718192021222324252627282930313233343536373839404142434445
5.PHP算数运算
5.1 运算符号说明
符号信息 | 说明 | 举例说明 |
---|---|---|
+ | 表示相加符号 | x + x+x+y |
- | 表示相减符号 | x − x-x−y |
* | 表示相乘符号 | x ∗ x*x∗y |
/ | 表示相除符号 | x / x/x/y |
% | 表示取余或取模符号 | x x%xy |
举例:
<?php $x=5; $y=6; echo $x+$y; ?>12345
5.2 自加自减运算
符号信息 | 说明 |
---|---|
$x++ | 表示先赋值后累加运算 |
$x– | 表示先赋值后求差运算 |
++$x | 表示先累加运算后赋值 |
–$x | 表示先求差运算后赋值 |
举例:
<?php $x=10; echo ++$x; // 输出11 echo $y; $y=10; echo $y++; // 输出10 echo $y; ?>123456789
5.3 比较运算符
符号信息 | 说明 |
---|---|
> | 表示大于符号 |
< | 表示小于符号 |
>= | 表示大于等于符号 |
<= | 表示小于等于符号 |
== | 表示等于符号 |
!= | 表示不等于符号 |
=== | 表示全等(判断类型等于) |
!== | 表示全不等(判断类型不等于) |
举例:
<?php $x=5; $y=6; //因为5大于6不成立,所以为错的,即为false执行了假区间 if($x > $y){ echo '变量x大于变量y 成立'; }else{ echo '变量x大于变量y 不成立'; } ?>12345678910
5.4 逻辑运算符
符号信息 | 说明 | 举例说明 |
---|---|---|
逻辑与(并且关系) | x 和 x和x和y都为真则返回为真 | $x and $y $x && $y |
逻辑或(或者关系) | x 和 x和x和y均为false为真,其它情况全为真 | $x or $y $x || $y |
逻辑非 | 取反,即true变为false,false变为true | !$x |
逻辑异或 | 相同取false,相异为true |
举例:
<?php $x=true; $y=false; //逻辑与(并且),要求两个都为true才能执行真区间,所以代码中执行假区间 if($x && $y) { echo '执行了真区间'; }else{ echo '执行了假区间'; } ?>12345678910
5.5 三元运算符
符号信息 | 说明 |
---|---|
$x?真代码段:假代码段 | 判断是否为真假?真情况:假情况 |
``反引号 | 反引号中间插入代码,执行系统命令,等价于shell_exec函数 |
@ | 表示抑制错误,把这一行的错误不让它显示出来了,效率低不建议用 |
=> | 数组下标访问符 |
-> | 对象访问符 |
instanceof | 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false |
举例:
<?php $x=true; $x?$y=5:$y=6; //输出5 echo $y; ?> <?php echo '<pre>'; echo `ipconfig`; echo '</pre>'; ?>123456789101112
6.PHP流程控制
6.1 if条件
语法:
if 语句用于在指定条件为 true 时执行代码。 if (条件) { 当条件为 true 时执行的代码; }1234
举例:
<?php $sex = 'boy'; if($sex = 'boy' ){ echo '男孩子在外面要保护好自己'; } ?>123456
6.2 if-else
语法:
if (条件) { 条件为 true 时执行的代码; } else { 条件为 false 时执行的代码; }12345
说明:
<?php $sex = 'boy'; if($sex = 'boy' ){ echo '男孩子在外面要保护好自己'; }else{ echo '不要相信男人说的话'; } ?>12345678
6.3 if-elseif
语法:
if (条件) { 条件为 true 时执行的代码; } elseif (condition) { 条件为 true 时执行的代码; } else { 条件为 false 时执行的代码; }1234567
举例:
<?php $dida = rand(0,23); echo "当前时间为 $dida 点\n"; if($dida > 6 && $dida < 10 ){ echo '豆浆油条'; }elseif ($dida > 10 && $dida < 14){ echo '吃兰州拉面'; }elseif ($dida >= 14 && $dida < 22){ echo '正规按摩'; }elseif ($dida > 22 && $dida <=23){ echo '打打游戏'; }elseif ($dida >=1 && $dida <3){ echo '吃吃夜宵'; }else{ echo '睡觉或者工作中'; } ?>1234567891011121314151617
6.3 switch选择
语法:
<?php switch(变量){ case 具体值1: 执行代码1; break; case 具体值2: 执行代码2; break; case 具体值3: 执行代码3; break; defult: } ?>1234567891011121314
举例:
<?php $tool=rand(1,6); switch($tool){ case 1: echo '司机开车'; break; case 2: echo '民航'; break; case 3: echo '自己家的专机'; break; case 4: echo '火车动车'; break; case 5: echo '骑马'; break; case 6: echo '游轮'; break; }12345678910111213141516171819202122
6.4 while循环
语法:
while (条件为真) { 要执行的代码; }123
举例:
<?php //定义需要往返的次数,老外喜欢从0开始计数,所以系统也是从0开始 $count=0; //while后面接布尔值判断,为真执行,为假停止 //$count小于100的时候执行,也就是$count为0至99的时候执行. //如果$count不小于100了,循环停止执行后续的代码 //循环开始处 while($count < 100){ echo "这是王总第 $count 次出差 <br />"; //每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了 $count++; } //循环结束 ?>123456789101112131415
6.5 for循环
语法:
<?php for(初始值;判断条件;循环增加){ 执行代码 } ?>12345
举例:
<?php for($i=1;$i<=10;$i++){ echo '分手后第'.$i.'年, 我全都忘了你的样子<br>'; } ?>12345
6.6 HTML+PHP实现简易的计算器
HTML代码
<html> <head><title></title></head> <body> <form action="test.php" target="iframe" method="post"> <input type="text" name="first"/> <select name="s"> <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input type="text" name="second" /> <input type="submit" value="Let's GO!" /> </form> <iframe src="test.php" name="iframe" ></iframe> </body> </html>1234567891011121314151617
PHP代码
<?php $first=$_POST["first"]; $v=$_POST["s"]; $second=$_POST["second"]; if($v=="+"){ echo $first+$second; }elseif($v=="-"){ echo $first-$second; }elseif($v=="*"){ echo $first*$second; }elseif($v=="/"){ echo $first/$second; } ?>1234567891011121314
6.7 稍微不那么简易的简易计算器
html
<html> <head><title>low jisuan</title></head> <body> <form action="index.php" target="iframe" method="post"> <input type="text" name="num1"/> <select name="s"> <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input type="text" name="num2" /> <input type="submit" value="Let's GO!" /> </form> <iframe src="index.php" name="iframe" ></iframe> </body> </html>1234567891011121314151617
php
<?php $first=$_POST["num1"]; $v=$_POST["s"]; $second=$_POST["num2"]; if( is_numeric($first) == false ){ exit("nono");} elseif (is_numeric($second) == false){ exit("nono"); } switch ($v){ case "+": echo $first+$second; break; case "-": echo $first-$second; break; case "*": echo $first*$second; break; case "/": echo $first/$second; break; default: echo "please input 2 num!"; } ?>12345678910111213141516171819202122232425262728