web技术

本意为蜘蛛网,在计算机领域中称为网页。web是由一个许多互相连接的超文本文件组成的系统,通过互联网访问。在这个系统中,每个有用的文件,称为一样“资源”,并且由一个“通用资源标识符”(URL)进行定位,这些资源通过超文本传输协议(Hyper Text Transfer Protocol,HTTP)传送给用户,而用户通过单击链接来获得资源。

B/S和C/S架构

Browser/Server 浏览器/服务器架构
Client/Server 客户端 /服务器架构

http协议

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
由w3c开发出来的

php概述

PHP(Hypertext Preprocessor,超文本预处理器)是运行在服务器端的一种通用开源脚本语言,目前主要用于 Web 网站开发。

在 Web 网站运行过程中,服务器端通常只有一个,而客户端可以有多个。

客户端:也称为用户端,用于为客户提供本地服务程序。
一般来说,客户端就是我们使用的电脑,包括我们使用的浏览器,例如:IE、Firefox、Chrome等。

服务器端:用于为客户端提供服务。
服务的内容包括:向客户端提供资源、保存客户端数据等。

php特点

1、易学
它的语法混合了C语言、Java语言、Perl语言的特点。对于有一定开发语言基础的人员来说,该语言比较容易,可以很快地掌握。
2、开源
所有人都可以看到源代码,开源代码具有更强的可靠性和安全性。
3、跨平台
PHP可以支持所有的服务器操作系统,例如:Windows、Linux等。
4、面向对象
具有所有面向对象的特点,使程序易维护、效率高、易扩展等。
5、免费
LAMP开发环境“Linux + Apache + MySQL + PHP”组合全部免费,为企业减少了很大一笔开支。
6、速度快
PHP是一种强大的CGI脚本语言,其执行速度比Perl、Asp等速度更快,占用系统资源更少。

常用编辑工具

Editplus

是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本、HTML和程序语言的Windows编辑器,你甚至可以通过设置用户工具将其作为C,Java,Php等等语言的一个简单的IDE。

Notepad++:

是 Wind ows 操作系统下的一套 文本编辑器 (软件版权许可证: GPL ),有完整的中文化接口及支持多国语言编写的功能 ( UTF8 技术)。. Notepad++功能比 Windows 中的 Notepad (记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。.

Zend Studio

是Zend Technologies公司开发的PHP语言集成开发环境 (IDE)。 除了有强大的PHP开发支持外也支持HTML、js、CSS,但只对PHP语言提供调试支持。 Studio5.5系列后,官方推出了基于Eclipse平台的Zend Studio,当前最新的13.6版本亦是构建于Eclipse平台。

PHP开发环境搭建

集成环境

  • Phpstudy

    1. 官方网站: [https://www.xp.cn/](https://www.xp.cn/)
    2. 使用说明: [https://www.php.cn/phpstudy-377909.html](https://www.php.cn/phpstudy-377909.html)
  • XAMPP

    官方网站: https://www.apachefriends.org/zh_cn/index.html

    下载地址: https://www.apachefriends.org/zh_cn/download.html

      XAMPP和本地MySQL冲突问题解决: [https://blog.csdn.net/sinat_37633633/article/details/77645463](https://blog.csdn.net/sinat_37633633/article/details/77645463)<br />        默认打开  /opt/lampp/htdocs/ 目录,编写保存 php 文件 <br />        在浏览器中,通过  localhost:8080/php文件名进行访问 .
    
  • LAMP:
    Linux 做为服务器的操作系统平台
    Apache 做为Web 服务器程序, 接收客户端 的请求
    MySQL: 做为数据服务器,用来保存数据,
    PHP: 做为后端数据处理程序来处理数据.
    全免费.

    静态和动态数据:

  • 静态数据

      在网站中提供一些不会发生变化的数据,称为静态数据.
    
      text, html. css, js,image,  font
    
  • 动态数据

      服务器提供给客户端的数据需要服务进行处理,然后发给客户端 的数据.
    

平台编辑保存代码
每次在平台上编写完代码 后,需 要进行 ctrl + s 保存代码 .

PHP标记

  • 默认标记

         php代码;<br />        ?>
    
  • 简单写法
    通过“”标记分隔 PHP 代码,也就是去掉了默认写法中的“php”关键字。

在一个 php 文件中,可以出现多个 php 标记.

**PHP标记符使用特点:

1、标记符,可以出现在页面任意位置。

2、标记符,在同一页面可以出现多次。

3、标记符,不能嵌套。

4、标记符当中,只能出现 php 代码。

5、标记符中的所有代码,都运行在服务器端。

变量

PHP定义变量语法格式:

$变量名;

或

$变量名 = 值;

PHP变量命名规则:

1、PHP 变量的定义,由前缀符号 $ 和 变量名 两部分组成。

2、变量名由字母、数字、下划线组成,第一个字符不能是数字。

3、不能把 PHP 关键字和保留字作为变量名。

4、变量名对大小写敏感。

6.注释

  • 单行注释

    // 这是一个单行注释
    // 每一行单行注释前都要以双杠开始
    // 注释是 双杠和注释内容之间要有一个空格
    // 编辑器中的注释快捷键 ,  ctrl + /
    
  • 多行注释
    ```php /* 这是PHP 中的多行注释内容, 多行注释都可以写在这里,注释内容之前不需要有其它标记

    但是,不能嵌套
    

*/

/*

  • 这是PHP 中的多行注释内容,
  • 多行注释都可以写在这里,注释内容之前不需要有其它标记
  • 但是,不能嵌套 / ```

7. 数据类型

PHP 的数据类型,可以分为:标量数据类型、复合数据类型、特殊数据类型。

   <?php
       // 十进制数据
       $ten = 200;
       echo $ten;
       echo "<br>";

       // 二进制数
       // binary 
       $er = 0b1111;
       echo $er;
       echo "<br>";

       // 八进制数
       $ba = 0777;
       echo $ba;
       echo "<br>";


       // 十六进制数
       // 0~9, a~f 
       $ox = 0xff;
       echo $ox;
       echo "<br>";

    //   $num = 10;
    //   $num = 0b10;
    //   $num = 010;
       $num = 0x10;

       // 十进制10  -> 10;
       // 二进制10  -> 2;
       // 八进制10  -> 8;
       // 十六进制10 -> 16;

       echo $num;
    ?>
  • 字符串类型引号的区别
    双引号包含的内容,如果有变量会被 解析,如果有转义字符,也会进行转义显示.
    单引号中的内容 ,所见即所得,无论是 变量,还是转义字符,都会原样输出,不会进行替换 .

        $num = 0x10;
         //  双引号会解析变量,用值替换变量进行显示
        echo "这是一个PHP中的整数变量: $num";
        echo "<br>";
         // 单引号不会解析变量,所见即所得   
        echo '这是一个PHP中的整数变量: $num';
    
              $a = 2;
         $ab = 3;
         echo "<br>";
         echo "$a";
         echo "<br>";
         echo "{$ab} d af asf ";  // 2b
    

    8. 转义字符

        // 转义字符的使用
     //   $str = "a\tb\tc\td";
         // $str = "\\t 是一个转义符号,用来表示 tab键";
    
     //   $str = "PHP是世界上\"最好\"的编程语言!";
         // $str = 'PHP是世界上\"最好\"的编程语言!';
         $str = 'PHP是世界上"最好"的编程语言!';
    
        echo $str;
    

    常量
    常量是指值不会发生变化的量。它具有全局性,能在整个脚本中贯穿使用。如果常量值被定义,则该值在脚本执行期间都不能改变或取消定义。

自定义常量语法格式:
define(key,value);
image.png示例

<!DOCTYPE html>
<html>
  <head>
    <title>自定义常量</title>
    <meta charset="utf-8" />
  </head>
  <body>
<?php
    //定义常量,常量名为PI,常量值为3.14
    define("PI",3.14);

    //输出常量PI的值
    echo PI;
?>
  </body>
</html>

image.png代码讲解
1、定义常量
define(“PI”,3.14);
定义常量,常量名为 PI,常量值为 3.14。

2、使用常量
echo PI;
将常量 PI 的值,输出到浏览器页面。

魔术常量,是 PHP 的系统常量,也叫做预定义常量。常用魔术常量,如下表:

常量名 说明
LINE 返回当前代码的行号
FILE 返回当前文件的完整路径
CLASS 返回当前的类名
METHOD 返回当前的方法名
FUNCTION 返回当前的函数名

6
输出语句
输出语句,用于将数据显示到浏览器。PHP常用输出语句,包括:echo、print、print_r、var_dump四种。

image.png输出语句介绍
1、echo
介绍
用于输出一个或多个字符串信息
使用方法
$city = “北京”;
echo $city; //输出结果:北京
echo “

PHP很有趣!

“; //输出结果:

PHP很有趣!


echo “我住在{$city}”; //输出结果:我住在北京
echo “这是一个”,”完整的”,”字符串”; //输出结果:这是一个完整的字符串

2、print
介绍
用于输出一个字符串信息
使用方法
$city = “北京”;
print $city; //输出结果:北京
print “

print输出语句

“; //输出结果:

print输出语句


print “我住在{$city}”; //输出结果:我住在北京

3、print_r
介绍
用于打印变量,以更容易理解的形式展示
使用方法
$cityList = array(“北京”,”上海”,”天津”);
print_r($cityList); //输出结果:Array ( [0] => 北京 [1] => 上海 [2] => 天津 )

4、var_dump
介绍
用于输出变量的相关信息
使用方法
$city = “北京”;
$year = 2020;
var_dump($city); //输出结果:string(6) “北京”
var_dump($year); //输出结果:int(2020)

常量

常量是指值不会发生变化的量。它具有全局性,能在整个脚本中贯穿使用。

如果常量值被定义,则该值在脚本执行期间都不能改变或取消定义。

  • 注意:
    1. 常量名前面没有 $ 符号
    2. 常量习惯上以全大写方式命名
  • 定义方式一

    define(key,value);
    
  • 定义方式二
    使用 const 关键字定义常量时,只能包含标量数据(bool、int、float 、string)。
    可以将常量定义为一个表达式,也可以定义为一个 array。
    还可以定义 resource 为常量,但应尽量避免,因为可能会造成不可预料的结果。

    const 常量名 = 值;
    
// define("PI",3.14);
// define('CARS', array("Benz","BMW","OOOO"));

const PI = 3.14;
const CARS = array("Benz","BMW","OOOO");

echo PI;
echo "<br>";
var_dump(CARS);
echo "<br>";
echo CARS[2];
  • 获取系统中定义的所有常量
    返回值为一个数组;

    get_defined_constants()
    
    $cs = get_defined_constants();
    foreach ($cs as $key => $value) {
    echo $key." --> ".$value . "<br>";
    }
    
  • 判断是否定义某个常量
    函数接收一个字符串类型的常量名,返回值为bool类型

    defined("常量名")
    
    echo defined("PI");
    echo defined("CARS");
    echo defined("CARS1");
    

3. 预定义常量

PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了

注意: 下列括号中的内容表示该常量表示的数据类型,并不是参数

  • **PHP_VERSION** (string)
    当前 PHP 版本的字符串,”主版本号.子版本号.阶段版本号[扩展信息]”形式。
  • **PHP_MAXPATHLEN** (int)
    当前 PHP 版本支持的最大文件名(包括路径)长度。
  • **PHP_OS** (string)

     运行 PHP 的操作系统。
    
  • **PHP_EOL** (string)
    当前平台中对于换行符的定义。

  • **PHP_INT_MAX** (int)
    当前 PHP 版本支持的最大整型数字。在 32 位系统中通常为 int(2147483647),64 位系统中为 int(9223372036854775807)。
  • **PHP_INT_MIN** (int)
    当前 PHP 版本支持的最小整型数字。在 32 位系统中通常为 int(-2147483648),64 系统中为 int(-9223372036854775808)。通常情况下 PHP_INT_MIN === ~PHP_INT_MAX。
  • **PHP_INT_SIZE** (int)
    当前 PHP 版本的整数大小(以字节为单位)。

4 魔术常量

PHP中有九个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 **__LINE__** 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下

**__LINE__** 文件中的当前行号。
**__FILE__** 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
**__DIR__** 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)
。除非是根目录,否则目录中名不包括末尾的斜杠。
**__FUNCTION__** 当前函数的名称。匿名函数则为 {closure}
**__CLASS__** 当前类的名称。类名包括其被声明的作用域(例如 Foo\\Bar
)。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。
**__TRAIT__** Trait 的名字。Trait 名包括其被声明的作用域(例如 Foo\\Bar
)。
**__METHOD__** 类的方法名。
**__NAMESPACE__** 当前命名空间的名称。
**ClassName::class** 完整的类名。
echo "Warning: Division by zero in". __FILE__. " on line". __LINE__;

5. 输出

  • echo
    输出一个或多个字符串,输出所有参数。不会换行。
    echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以,并且没有返回值
    echo (不像其他语言构造)不表现得像一个函数, 所以不能总是使用一个函数的上下文。
    注意,如果你想给 **echo** 传递多个参数, 那么就不能使用小括号。

    echo(string $arg1, string $... = ?): void
    
    echo "HELLO";
    echo "<br>";
    // 多个字符串之间使用 逗号 分隔
    echo "HELLO","PHP","WORLD";
    echo "<br>";
    // 如果有多个字符串输出,不能加小括号
    // echo ("HELLO","PHP","WORLD");
    
  • print(了解)
    Print 用来输出一个字符串, 也就是输出 arg
    print 实际上不是函数(而是语言结构),所以可以不用圆括号包围参数列表。
    echo 最主要的区别: print 仅支持一个参数,并总是返回 1。

    print(string $arg): int
    
    print "<br>";
    print "HELLO";
    print "<br>";
    // 多个字符串之间使用 逗号 分隔
    // print "HELLO","PHP","WORLD";
    print "<br>";
    // . 是 php中的连接符,可以连接字符串,相当于js中的 + 
    print "HELLO"."PHP"."WORLD";
    
  • print_r()
    print_r() 是一个函数,使用时,必须加 括号
    print_r — 以易于理解的格式打印变量。如果输出内容是标量类型,那么直接输出值
    mixed 等同于 联合类型 object|resource|array|string|int|float|bool|null。
    $return 参数默认为 false, 表是只输出,返回数据, 如果改为 true, 则不会输出内容,而是将内容做为返回值返回.无意义.

    print_r(mixed $expression, bool $return = false): mixed
    

    ```php print_r(“HELLO”); echo “
    “; // 默认输出时,直接将参数输出,返回值为1 $ret = print_r(“PHP”); echo “
    “; echo $ret; echo “
    “;

// 如果给定参数二 $return 的值为 true, 则不输出内容,将内容做为返回值返回 $ret = print_r(“PHP”, true); echo “
“; echo $ret; echo “
“; $animals = array(“cat”,”dog”,’bird’,’duck’,”pig”); print_r($animals);


-  var_dump() <br />打印变量的相关信息<br />var_dump() 也是一个函数,括号不能省略.<br />此函数显示关于一个或多个表达式的结构信息,包括表达式的**类型与值**。<br />数组和对象将递归展开值,通过缩进显示其结构。  
```php
var_dump(mixed $value, mixed ...$values): void
var_dump("HELLO");
echo "<br>";

$s = "PHP";
var_dump($s);
echo "<br>";  

$animals = array("cat","dog",'bird','duck',"pig");
var_dump($animals);

网络请求通信过程扩展(了解)

客户端 : 浏览器(Chorme, firefox, Edge) B

服务器 : 提供服务的一台无端主机

IP: 用来在网络当中定位一台绝对的主机电脑.(IPV4,IPV6)

LAN: 局域网

POPT: 端口号(在一台主机中,定义应用程序使用)

域名: 是IP地址的一种关系映射,方便记忆

DNS: 域名解析服务(本地: /etc/hosts, 202.106.0.20)

TCP/IP: 传输控制协议,用来发起网络请求

  • 连接有三次握手
  • 断开连接有四次挥手

HTTP: 超文本传输协议

  • 请求报文
    • 请求行
    • 请求头
    • 空行
    • 请求体(POST)
  • 响应报文
    • 响应行
    • 响应头
    • 空行
    • 响应体(实际请求数据)

Apache: Web服务器软件 (Tomcat, python, Ngix ), 用来接收客户端的请求.

MySQL: 数据库服务器, 存储数据

PHP: PHP程序解析器(处理PHP代码文件)