第1章 PHP语言介绍
1.什么是PHP
1.外文名PHP:Hypertext Preprocessor,中文名:“超文本预处理器”是一种通用开源脚本语言。
2.语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
3.PHP入门简单,学习入门易入手。
2.什么是静态页面和动态页面
1.页面信息发布后内容固定不变,没有交互,常见以HTML结尾的就是静态页面,比如新闻发布网站。
2.页面有交互,需要去数据库里取数据再返回给用户的就是动态页面。
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 --> 服务端
第2章 PHP安装部署
1.集成环境phpstudy安装
官方网站:
http://www.phpstudy.net/
2.代码工具PHPstorm安装
安装参考网站:
https://www.jetbrains.com/phpstorm
破解:
https://www.bilibili.com/read/cv7319471/
第3章 PHP基本语法
1.PHP基本函数
编写info.php页面,代码如下
<?php
phpinfo();
?>
在浏览器输入你的IP地址然后访问,如果出现以下页面则表示PHP工作正常。
代码解释:
1.phpinfo是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP信息。
2.电脑是一个很笨的东西,需要我们人为的告诉他,代码写完了。我们用分号(;)来告诉他代码写完了。因此只要写完一段代码,就需要在后面加分号。
3.而前后两行的回车空行,是为了让代码更加好看,避免叠在一起,看着不舒服。其实中间有多少个回车空行都没有关系的,保证好看就行了。PHP的语法解释器(PHP最核心部分)不会处理这些空行的。
代码编写注意:
1.PHP的代码信息全部要用半角的英文、很多人容易写成全角的英文/中文和符号造成PHP代码报错。
2.PHP代码的最后一行可以加也可不加分号。由于很多学习者特别是初学者经常犯一个毛病,写完一行代码不加分号,因此容易犯错,某些公司规定一行代码写完,就必须加分号。
3.我们在写文件test.php这个文件命名的时候,只要英文半角(a-z A-Z 0-9 _-)这些字符来命名文件,文件命名不要用中文,不要用特殊符号,不要中间加空格,严格区分大小。
2.PHP变量与常量
2.1 变量
创建test01.php并写入以下代码:
<?php
$iphone12 = 5880;
$iphone12mini = 6088;
echo $iphone12 + $iphone12mini; //echo是在PHP里面最常用的一个输出、显示功能的命令
?>
变量的命名注意:
1.必须要以$开始,如变量x必须要写成$x
2.变量的首字母不能以数字开始
3.变量的名字区分大小写
4.变量不要用特殊符号、中文,_不算特殊符号
5.变量命名要有意义(别写xxx,aaa,ccc)这种变量名
变量的分类:
可变变量
外部变量
环境变量
2.2 可变变量
<?php
header(‘Content-type:text/html;charset=utf-8‘); // 服务器读取的 编码设置
$son_name = ‘father_name‘; //定义了一个变量"儿子的姓",值是"爸爸的姓"。
$father_name = ‘zhang‘; //定义了一个变量"爸爸的姓",值是"zhang"。
echo $$son_name; //输出儿子姓什么,儿子跟随爸爸的姓。
?>
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>
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>‘;
?>
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>‘;
?>
2.5 常量
格式说明:
常量就是长久不变的值,常量在代码中的定义,以及书写方式如下所示:
define(常量名, 常量值)
格式注意:
1.常量名可以小写,但是通常大写
2.常量名可以不加引号,但是通常加上引号
3.在字符串中调用常量的时候,必须在引号外面
4.常量名建议只用字母和下划线
实验代码:
<?php
define(‘MY_NAME‘,‘PHP中文网‘);
echo MY_NAME;
//下面是错误的调用方式
echo ‘我的名字是MY_NAME‘;
//下面是正确的调用方式
echo ‘我的名字是‘.MY_NAME;
3.PHP注释信息
3.1 什么是注释
1.因为代码是英文的,并且代码很长,时间长了人会忘了代码的意思作用,所以可以加上注释进行说明提示。
2.对重点进行标注
3.可以让其他人更容易看懂配置信息
4.拥有注释、空行、回车之后的代码看起来更优美
5.注释可用来排错,不确定代码中哪一块写错了,可以将一大段注释掉,确定错误区域。
6.注释中的部分的内容,电脑不会执行它
3.2 单行注释
<?php
//声明异步iphone12手机的价格变量
$iphone12 = 6000;
//显示输出收集价格
echo $iphone12;
?>
3.3 多行注释
<?php
/*
作者:PHP中文网
时间:2020.01.01
功能:这是一个多行注释例子
*/
?>
4.PHP数据类型
4.1 什么是数据类型
数据类型就是对数据分类的一种划分方式而已,例如以下举例说明:
哺乳动物:人、猫、马、鸭嘴兽…等等
蔬菜类型:西红柿、菠菜、茄子…等等
水果类型:西瓜、桃子、苹果…等等
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。
4.4 布尔类型
布尔类型解释:
所谓布尔类型,汉语翻译过来之后,更好的解释是用道家中易经的语言进行解释,即为:阴/阳,男/女,真/假,对/错,存在/不存在,0/1等等。
举例说明:
<?php
$buer=true; //声明一个变量(拼音)为布尔类型
$bool=false; //声明一个变量(英文)为布尔类型
?>
4.5 字符串类型
字符串类型说明:
在PHP语言中声明字符串有三种方式:
1.用单引号声明
2.用双引号声明
3.用字界符声明
单引号举例:
<?php
$zifu=‘万事开头难,然后中间难,最后结尾难‘;
echo $zifu;
?>
双引号举例:
<?php
$str="努力了这么久,但凡有点儿天赋,也该有些成功迹象了";
echo $str;
?>
字界符举例:
<?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
?>
单引号和双引号的区别
1.双引号解析变量,但是单引号不解析变量
2.在双引号里面插入变量,变量后面如果有英文或中文字符,会把这个字符和变量拼起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
4.双引号解析转义字符,单引号不解析转义字符。但是单引号能解析5.单引号效率高于双引号,尽可能使用单引号
6.双引号和单引号可以互相嵌套,双引号中可以插入单引号,单引号当中插入变量,这个变量会被解析。
7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。
8.一般将定界符声明字符串视为双引号一样的功能来看待。
4.6 浮点类型
<?php
$fudian=12121.3232;
echo $fudian;
?>
4.7 数据类型的查看
查看数据类型:
gettype(传入一个变量)输出变量的类型
var_dump(传入一个变量)输出变量类型和值
举例:
<?php
$float = 88.8;
$type = gettype($float);
echo $type;
$str = ‘你喜欢男人还是喜欢女人‘;
$type = var_dump($str);
echo $type;
?>
4.8 数据类型的判断
判断数据类型说明:
使用is_*系列函数,is_types这一系列的函数,来进行判断某个数据属于哪种类型,如果是这个类型返回真,不是这个类型返回假。
序号 | 判断函数 | 函数判断描述 |
---|---|---|
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 />";
?>
5.PHP算数运算
5.1 运算符号说明
符号信息 | 说明 | 举例说明 |
---|---|---|
+ | 表示相加符号 | $x+$y |
- | 表示相减符号 | $x-$y |
* | 表示相乘符号 | $x*$y |
/ | 表示相除符号 | $x/$y |
% | 表示取余或取模符号 | $x%$y |
举例:
<?php
$x=5;
$y=6;
echo $x+$y;
?>
5.2 自加自减运算
符号信息 | 说明 |
---|---|
$x++ | 表示先赋值后累加运算 |
$x-- | 表示先赋值后求差运算 |
++$x | 表示先累加运算后赋值 |
--$x | 表示先求差运算后赋值 |
举例:
<?php
$x=10;
echo ++$x; // 输出11
echo $y;
$y=10;
echo $y++; // 输出10
echo $y;
?>
5.3 比较运算符
符号信息 | 说明 |
---|---|
> | 表示大于符号 |
< | 表示小于符号 |
>= | 表示大于等于符号 |
<= | 表示小于等于符号 |
== | 表示等于符号 |
!= | 表示不等于符号 |
=== | 表示全等(判断类型等于) |
!== | 表示全不等(判断类型不等于) |
举例:
<?php
$x=5;
$y=6;
//因为5大于6不成立,所以为错的,即为false执行了假区间
if($x > $y){
echo ‘变量x大于变量y 成立‘;
}else{
echo ‘变量x大于变量y 不成立‘;
}
?>
5.4 逻辑运算符
符号信息 | 说明 | 举例说明 |
---|---|---|
逻辑与(并且关系) | $x和$y都为真则返回为真 | $x and $y $x && $y |
逻辑或(或者关系) | $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 ‘执行了假区间‘;
}
?>
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>‘;
?>
6.PHP流程控制
6.1 if条件
语法:
if 语句用于在指定条件为 true 时执行代码。
if (条件) {
当条件为 true 时执行的代码;
}
举例:
<?php
$sex = ‘boy‘;
if($sex = ‘boy‘ ){
echo ‘男孩子在外面要保护好自己‘;
}
?>
6.2 if-else
语法:
if (条件) {
条件为 true 时执行的代码;
} else {
条件为 false 时执行的代码;
}
说明:
<?php
$sex = ‘boy‘;
if($sex = ‘boy‘ ){
echo ‘男孩子在外面要保护好自己‘;
}else{
echo ‘不要相信男人说的话‘;
}
?>
6.3 if-elseif
语法:
if (条件) {
条件为 true 时执行的代码;
} elseif (condition) {
条件为 true 时执行的代码;
} else {
条件为 false 时执行的代码;
}
举例:
<?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 ‘睡觉或者工作中‘;
}
?>
6.3 switch选择
语法:
<?php
switch(变量){
case 具体值1:
执行代码1;
break;
case 具体值2:
执行代码2;
break;
case 具体值3:
执行代码3;
break;
defult:
}
?>
举例:
<?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;
}
6.4 while循环
语法:
while (条件为真) {
要执行的代码;
}
举例:
<?php
//定义需要往返的次数,老外喜欢从0开始计数,所以系统也是从0开始
$count=0;
//while后面接布尔值判断,为真执行,为假停止
//$count小于100的时候执行,也就是$count为0至99的时候执行.
//如果$count不小于100了,循环停止执行后续的代码
//循环开始处
while($count < 100){
echo "这是王总第 $count 次出差 <br />";
//每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了
$count++;
}
//循环结束
?>
6.5 for循环
语法:
<?php
for(初始值;判断条件;循环增加){
执行代码
}
?>
举例:
<?php
for($i=1;$i<=10;$i++){
echo ‘分手后第‘.$i.‘年, 我全都忘了你的样子<br>‘;
}
?>
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>
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;
}
?>
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>
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!";
}
?>
6.8 作业
自己完善并理解简易计算机
自学一下for和while
模拟用户登录,如果输入错误超过3次,就提示错误并退出。