PHP基础学习

本文是一篇关于PHP基础学习的教程,涵盖了从Apache环境配置到PHP语法、函数、数组、错误处理以及PHP与Web页面交互等内容。介绍了PHP的标记、数据类型、流程控制语句、函数的使用,包括参数设置、递归调用、回调函数和匿名函数。还讨论了数组的操作,如索引和关联数组、数组查找算法以及PHP内置的数组函数。此外,文章还涉及错误处理和调试,以及PHP如何处理Web表单和URL参数交互,以及HTTP协议的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章、PHP基础

PHP是一种适合Web开发的编程语言,运行于服务器端,可以在C/S架构中为客户端软件提供服务器接口,又可以在B/S上作为架构来搭建动态网站。(本篇文章以B/S架构为基础)

Apache为PHP提供工作环境

Apache

目录结构

默认监听端口号:80

默认站点目录:http://localhost

错误页面

状态码
403

Forbidden;拒绝访问

404Not Found;页面没有找到
500Internal Server Error;服务器内部错误

1xx 信息提示:这些状态代码表示临时的响应

2xx 成功:这类状态代码表明服务器成功地接受了客户端请求。

3xx 重定向:客户端浏览器必须采取更多操作来实现请求。例如:浏览器可能不得不请求服务器上其他不同的页面,或通过代理服务器重复该请求。

4xx - 客户端错误:发生错误,客户端出现问题。例如,客户端请求不存在的页面,客 户端未提供有效的身份验证信息。

5xx - 服务器错误:服务器由于遇到错误而不能完成该请求。

第二章、PHP基本语法

标记与注释

标记

标记类型开始标记结束标记

标准标记(最优)

< ? php? >
短标记(需要将)< ?? >

注释

注释类型格式

C++(常用)

/ /
C/ *……*  /
Shell#

输出语句

输出语句类型含义
echo可包含多个,用“ ,”隔开
print与echo用法相同,只能输出一个值
print_r()

内置函数,可以输出任意类型

var_dump()打印一个或多个类型的数据,还可以获取元素类型和个数

PHP标识符

  1. 只能由字母、数字、下划线组成,且不能包含空格
  2. 必须以字母、下划线开头
  3. 长度任意
  4. 用作变量名时,区分大小写

数据与运算

定义常量

常量定义方式实例
define()函数

define('常量名称','常量值',true/false:用于设置常量名是否对大小写敏感)
const关键字cinst   常量名  = 常 量值

  定义变量

PHP是弱语言,可以事先不申明就可以直接进行赋值使用

        申明变量:     $  变量名

赋值方式实例
传值赋值$ 变量名 = 值
引用赋值$ 变量名 = &(引用)$变量名
可变变量

套娃;

$a = 'ni';

$ni = 'hao';

$hao = 'ma';

echo $a, '  ' ,$ $a '  ' ,$ $ $a;

返回:ni hao ma

数据类型

  1. 布尔型  bool :true/false
  2. 整型  int  
    进制数表示10
    八进制012
    十进制10
    十六进制0xa
  3. 浮点型

  4. 字符串型

转义字符

字符含义
\n换行
\r回车
\t水平指标符
\v垂直指标符
\eEscape
\f换页
\\反斜线

\$

美元标记
\"双引号

数据类型转换

  • 自动类型转换:PHP会自动进行数据类型转换
  • 强制类型转换:在要转换的数据和变量前加上“(目标类型)”

运算符及优先级

  • 算数运算符
  • 字符串运算符  “ . ”:用于拼接两个字符串的运算符,拼接的类型都会自动转为字符串类型。
  • 赋值运算符
  • 比较运算符 "==="全等、"!=="不全等:不仅比较数值还要比较数据类型;"=="、"!="就只用比较值就行。
  • 逻辑运算符  "&&"和"and"都是表示与,但"&&"优先级更高;"xor"表示异或。
  • 递增递减运算符
  • 位运算符
  • 错误控制运算符  "@"放在要忽略的表达式错误前

流程控制语句

  1. 选择结构语句
  • if单分支
if($score>=60){
    echo '及格啦!';
}
  • if...else语句
if(score>=60){
    echo '及格啦!';
}else{
    echo '挂科了。';
}
  • if...elseif...else语句(可以有很多个elseif,和switch有点类似)
  • switch语句
switch (表达式){
    case 值1:代码段1;break;
    case 值2:代码段2;break;
    defaul:代码段n;
}

         2.循环结构语句

  •   while语句
​
while(循环条件){
    循环体;
}

​
  • do...while 语句 
do{
    循环体;

}while(循环条件);
  • for循环语句
for(定义变量;循环条件;变量自增或自减){
    代码段;
}

         3.跳转语句

  • break语句
  • continue语句

        4.文件包含语句  

 include  '文件路径';

第三章、函数

函数定义语法结构

访问函数外定义的变量,需要使用'global'关键字

function函数名([参数1,参数2,……])
{
    函数体……
    要是想要函数的返回值,就需要使用return关键字
}

参数设置

在函数中定义的变量在函数调用完了就会被释放

参数示例
无参函数函数体内需要有return
按值传递

function 函数名(参数1,参数2,……){};在引用的时候可以使用变量代替

引用传参修改参数值function(&$ 变量名);用于全局变量
设置参数默认值可以在定义函数时设置默认参数
指定参数类型PHP7.0版本后可以设置参数的数据类型(跟C语言格式差不多)

嵌套调用

  • 嵌套调用

在调用一个函数时,调用其他的函数,下面给个例子:

<?PHP
function sum($score1,$score2)
{
   return $sun =$score1+$score2; 
}

function avg($score1,$score2)
{
    $sum = sum($score1,$score2);
    return $avg = $sum/2;
}

echo avg(90,92)  //返回值就是91
  • 递归调用

一个函数在其函数体内调用自己

<?PHP
//编写一个N的阶乘的函数作为例子
function jiecheng($n)
{
    if(n == 1){
        return 1;
    }else{
    return $n*jiecheng($n - 1);
    }
}
echo jiecheng(4)  //返回24

高级应用

  • 静态变量

想要调用函数后,值能够保存就要使用静态变量:

<?PHP
function num($i)
{
    static $i = 1;//申明为静态变量后,在每次被调用都会保存i的值
//要是是 $i = 1;那就每次调用函数的时候都是i = 1;
    echo $i;
    ++i;
}
  • 可变函数

怎么说呢,这个函数,其实是一个规定,有点像可变变量($ 变量名)的用法你定义了一个函数,如果你想在某个变量里面使用的时候就在后面加一个"()"让它近似变成函数名的结构就行了。

这也说明一个问题,你可以用一个变量来代替函数名称。

<?PHP
function a()
{
    echo 'come on';//申明了一个函数a,可以打印come on
}
$b = 'a';
//给b赋值为a,但是a是一个函数的名称,想调用a的话就可以像下面一行一样
echo $b();//加个括号就行
  • 回调函数

一般用于参数传递

call_user_func作为PHP的内置函数,可以接受用户自定义的回调函数作为参数

<?PHP
function sum($a,$b)
{
    return $a+$b;
}
call_user_func('sum',4,5);//输出结果:9
//call_user_func作为PHP的内置函数,将参数进行回调再输出结果
  • 匿名函数

没有函数名称的函数,也称作闭包函数,一般用于临时定义的函数,用匿名函数就无需担心函数名称命名冲突的问题了。

<?PHP
function ($a,$b)//没有函数名称
{
    return $a + $b;
}
echo $sum4,5);//没有函数名就加个括号引用参数就行了

PHP内置函数

  • 字符串函数
  • 一般括号"()"内第一个表示需要操作的字符串,第二个表示操作的起始位置,第三个表示操作的位数,若第三个被省略的话那就是一直操作到最后。
函数名称功能描述
strlen()

获取字符串长度

strpos()

查找字符串首次出现的位置

strrpos()查找字符串最后一次出现的位置
str_replace()对字符串中的某些字符进行替换操作
substr()获取字符串中的子串
explode()使用一个字符串分割另一个字符串

implode()

用指定的连接符将数组连接成一个字符串
trim()用指定字符串的首尾的空白字符
str_repeat()重复一个字符串
strcmp()用于判断两个字符串的大小
  • 数学函数
函数名功能描述函数名功能描述
abs()取绝对值min()取最小值
max()取最大值pi()取圆周率的值
ceil()向上取最接近的整数floor()向下取最接近的整数
fmod()取除法的浮点数余数pow()计算x的y次方
is_nan()判断是否为合法数值sqrt()取平方根
round()对浮点数进行四舍五入rand()随机生成整数
  • 时间日期函数

函数名功能描述
time()获取当前的UNIX时间戳
date()格式化一个本地时间/日期
mktime()获取指定日期的UNIX时间戳
shortime()将字符串转化成UNIX时间戳
microtime()获取当前的UNIX时间戳和微秒数

UNIX时间戳是表示格林威治时间1970年01月01日00时00分00秒到现在的总秒数

格式化时间戳

echo date('Y-m-d H-i-s');

第四章、数组

        要是操作一批数据的话,你每一条信息都用一个变量来定义的话就很麻烦,而且这些数据一般都有一定的关联性,你把它们串在一起定义成一个数组不是很方便。那也就引出了这个章节要讲的内容。

        在PHP中,数组是由一个或多个数组元素组成的,每个数组由键和值组成:"键"是元素的识别名称,"值"是元素内容;"键"和"值"存在一定对应关系称为"映射"。

数组构成:数组是由一个或多个数组元素组成的

数组元素:一每个数组元素由键(Key)和值(Value)构成

键:“键”为元素的识别名称,也被称为数组下标

值: “值”为元素的内容

映射: “键”和“值”之间存在一种对应关系,称之为映射

类型划分:根据键的数据类型,可以将数组划分为索引数组和关联数组

数组类型

  • 索引数组

键为整数的数组,一般情况是从0开始,用来标记元素的位置,当然也可以自己定义;你要是不设置键的话基本上默认索引数组。

0123
214321543
  • 关联数组

键为字符串的数组,一般都是键和值有一定的逻辑关系;需要你自己定义键。

姓名年龄性别电话
5t5不详怎么可能会告诉你

数组的基本使用 

  • 数组的定义

array()构建数组

//索引数组
$fruit = array('apple','grape','pear');//省略了键名就是默认的0,1,2
$sport = array(2=>'basketball',4=>'jogging');//自定义的键名2:篮球,4:慢跑
//关联数组
$ziliao = array('id'=>123,'name'=>'5t5','tel'=>'就不告诉你');//对应的键有对应的值

只要掌握这两个基本规则就可以把它们串起来使用。

  • 数组的赋值

就直接赋值就行了,PHP没有那么讲究。

$arr[] = 123;  //$arr[0]=123
$arr[4] = 456;//$arr[4]=456
$arr[] = '不想学啦';//$arr[5]='不想学啦' 
// []里面没有值的话就看上面要么从0开始,要么按顺序来
$arr['name'] = '5t5';//$arr[name]='5t5'
 
  • 短数组定义发

[ ]于array()的定义方式是相同的

$fruit = ['grape','pear'];
$ziliao = ['name'=>'5t5','sex'=>'nan'];
$num = [[2,3],[3,7]];//array(array(2,3),array(3,7));
  • 数组的遍历

用foreach()语句来完成遍历

//方式一
foreach (数组名称 as 键 => 值) {
    // 处理语句
}

//方式二
foreach (数组名称 as 值) {
    // 处理语句
}
$info = ['id'=>1,'name'=>'5t5','sex'=>'nan'];
//第一种方法
foreach($info as $k => $v);//一个键一个值的打印
    echo &k.':'.$v.' ';//输出结果id:1 name:5t5 sex:nan

//第二种方法
foreach($info as $v)//只要值打印
    echo $v.' '//输出的结果1 5t5 nan

// . 这个是连接字符串的符号,应该还记得吧
  • 数组的删除

用unset()函数来完成数组的删除

unset($info);
  • 数组操作符

运算符

含义

示例

说明

+

联合

$a + $b

$a$b的联合,合并数组

==

相等

$a == $b

如果$a$b具有相同的键值对则为true

===

全等

$a === $b

如果$a$b具有相同的键值对并且顺序和类型都相同则为true

!=

不等

$a != $b

如果$a不等于$b则为true

<> 

不等

$a <> $b

如果$a不等于$b则为true

!==

不全等

$a !== $b

如果$a不全等于$b则为true

数组查找

  • 顺序查找法

        只需按照数组中元素的保存顺序,利用待查的值与数组中的元素从前往后一个一个的进行比较,直到找到目标值或查找失败。

  • 二分查找法

        每次将查找值与数组中间位置元素的值进行比较,相等返回;不等则排除掉数组中一半的元素,然后根据比较结果大或小,再与数组中剩余一半中间位置元素的值进行比较,以此类推,直到找到目标值或查找失败。

  • 冒泡排序

        实现原理:按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,较小或较大的元素前移。冒泡排序比较的轮数是数组长度减1,每轮比较的对数等于数组的长度减当前的轮数

        缺点:冒泡排序的效率很低,在实际中使用较少。

  • 简单选择排序:

            是一种非常直观的排序算法。

         实现原理:从待排序的数组中选出最小或最大的一个元素与数组的第1个元素互换,接着再在剩余的数组元素中选择最小的一个与数组的第2个元素互换,依次类推,直到全部待排序的数组元素排序完成。

        如按照从小到大的顺序完成简单选择排序,图中利用箭头标注的两个元素就是在此次循环中互换的元素。

  • 快速排序

        是对冒泡排序的一种优化。

        实现原理:首先选择一个基准元素,通常选择待排序数组的第1个数组元素。通过一趟排序,将要排序的数组分成两个部分,其中一部分比基准元素小,另一部分比基准元素大,然后再利用同样的方法递归的排序划分出的两部分,直到将所有划分的数组排序完成。

  • 插入排序

        是冒泡排序的优化,是一种直观的简单排序算法。

        实现原理:通过构建有序数组元素的存储,对未排序数组的元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应位置并插入。其中,待排序数组的第1个元素会被看作是一个有序的数组,从第2个至最后一个元素会被看作是一个无序数组。

 数组的常用函数

  • 指针操作函数

        用于指向数组中的某个元素,默认情况下,指向数组的第1个元素。通过移动或改变指针的位置,可以访问数组中的任意元素。

函数名称

功能描述

current()

获取数组中当前指针指向的元素的值

key()

获取数组中当前指针指向的元素的键

next()

将数组中的内部指针向前移动一位

prev()

将数组中的内部指针倒回一位

each()

获取数组中当前的键值对并将数组指针向前移动一步

end()

将数组的内部指针指向最后一个元素

reset()

将数组的内部指针指向第一个元素

$arr = ['a', 'b', 'c', 'd'];
echo key($arr) . ' - ' . current($arr);	 // 获取当前指针指向的键和值:0 - a
echo next($arr);			 // 将当前指针向前移动一位:b
echo end($arr);			 // 将当前指针指向最后一个元素:d
echo prev($arr);			 // 将当前指针倒回一位:c
echo reset($arr);			 // 将指针指向第1个元素:a
$sweets = ['Muffin', 'cookie', 'cake'];
while (list($k, $v) = each($sweets)) {
    $curr = current($sweets);   // 此时指针已经被each()移动到了下一位
   // 输出结果:0 => Muffin-cookie 1 => cookie-cake 2 => cake-
    echo $k => $v-$curr ;
}
/*list()结构可将给定数组中的元素依次赋值给list小括号内从左到右定义的变量。
each()函数在获取到了当前元素的键和值后,会自动将数组的指针指向下一个元素,
直到没有数组元素时返回NULL。*/
  • 数组元素操作函数

在操作数组过程中,经常会遇到在数组的前面或后面添加或删除元素的情况。

函数名称

功能描述

array_pop()

将数组最后一个元素弹出(出栈)

array_push()

将一个或多个元素压入数组的末尾(入栈)

array_unshift()

在数组开头插入一个或多个元素

array_shift()

将数组开头的元素移出数组

array_unique()

移除数组中重复的值

array_slice()

从数组中截取部分数组

array_splice()

将数组中的一部分元素去掉并用其他值取代

$arr = ['puff', 'Tiramisu'];
array_pop($arr);     // 移出数组最后一个元素
print_r($arr);	      // 输出结果:Array ( [0] => puff ) 
array_push($arr, 'cookie'); // 在数组末尾添加元素
print_r($arr);	     // 输出结果:Array ( [0] => puff [1] => cookie ) 
array_unshift($arr, 22, 33);// 在数组开头插入多个元素
print_r($arr);  // 输出结果: Array ( [0] => 22 [1] => 33 [2] => puff [3] => cookie ) 
array_shift($arr);   // 移出数组第一个元素
print_r($arr);	     // 输出结果:Array ( [0] => 33 [1] => puff [2] => cookie )
  •  数组排序函数

        对于数组的排序,除了可使用前面小节讲解的排序算法实现外。PHP还提供了内置的数组排序函数,可以轻松对数组实现排序、逆向排序、按键名排序等操作。

函数名称

功能描述

sort()

对数组排序(从低到高)

rsort()

对数组逆向排序(从高到低)

asort()

对数组进行排序并保持键值关系

ksort()

对数组按照键名排序

arsort()

对数组进行逆向排序并保持键值关系

krsort()

对数组按照键名逆向排序

shuffle()

将数组元素顺序打乱

array_multisort()

对多个数组或多维数组进行排序

$weather = ['sun', 'rain', 'haze'];
asort($weather);	// 保持键值关系正序排序
print_r($weather);	// 输出结果:Array ( [2] => haze [1] => rain [0] => sun ) 
sort($weather);	// 按正常类型正序排序
print_r($weather);	// 输出结果:Array ( [0] => haze [1] => rain [2] => sun ) 
rsort($weather);	// 按正常类型倒序排序:
print_r($weather);	// 输出结果:Array ( [0] => sun [1] => rain [2] => haze )
  •  索引函数

数组中元素的查找,除了前面讲解的查找算法外,PHP还为其提供了内置函数。

函数名称

功能描述

in_array()

检查数组中是否存在某个值

array_search()

在数组中搜索给定的值,如果成功则返回相应的键名

array_key_exists()

检查给定的键名是否存在于数组中

$data = ['a' => 1, 'b' => 2, 'c' => 3];
var_dump(in_array(2, $data));	    // 输出结果:bool(true)
var_dump(array_search(2, $data));	    // 输出结果:string(1) "b" 
var_dump(array_key_exists(2, $data)); // 输出结果:bool(false)
/*in_array()和array_key_exists()函数的返回值类型均为布尔型,检测的数据存在返回true,
否则返回false。
函数array_search()的返回值则是查找的“值”对应的键名。
检索函数返回值类型对程序开发中的判断起着重要的作用。
*/

 数组在字符串和函数中的应用

  • PHP提供的explode()函数用于根据指定字符对字符串进行分割
  • explode()函数的返回值类型是数组类型:第1个参数表示分隔符、第2个参数表示要分割的字符串、第3个参数是可选的,表示返回的数组中最多包含的元素个数,当其为负数m时,表示返回除了最后的m个元素外的所有元素,当其为0时,则把它当做1处理。
// ① 字符串分割成数组
var_dump(explode('n', 'banana'));
// 输出结果:array(3) { [0]=> string(2) "ba" [1]=> string(1) "a" [2]=> string(1) "a" } 
// ② 分割时限制次数
var_dump(explode('n', 'banana', 2));
// 输出结果:array(2) { [0]=> string(2) "ba" [1]=> string(3) "ana" } 
// ③ 返回除了最后2个元素外的所有元素
var_dump(explode('n', 'banana', -2));
// 输出结果:array(1) { [0]=> string(2) "ba" }
  • PHP提供的implode()函数用于利用指定字符将一维数组内的元素值连接成字符串
  • implode()函数的返回值类型为字符串型:1个参数表示连接字符串2个参数表示待转换的数组。其中,不论指定字符是否存在,只要第2个参数是空数组,结果都为空字符串。值得一提的是,由于历史原因,该函数的第1个参数可以省略。
// ① 利用指定字符连接一维数组元素的值
echo implode('-', ['a', 'b', 'c']);		// 输出结果:a-b-c
echo implode(',', ['a' => 1, 'b' => 2]); 	// 输出结果:1,2
// ② 省略指定字符
echo implode(['a', 'b', 'c']);			// 输出结果:abc
// ③ 利用指定字符连接一个空数组
var_dump(implode('it', []));		// 输出结果:string(0) ""
  • 将数组作为参数调用函数

        在PHP中,call_user_func_array()函数可以实现回调函数的调用,并将一个数组作为回调函数的参数。回调函数执行后,其返回值将作为call_user_func_array()函数的返回值进行返回。

// 示例1,输出结果:10, 20
function test($a, $b)
{
	echo "$a, $b";
}
echo call_user_func_array('test', [10, 20]); 
// 示例2,输出结果:int(1) int(2)
call_user_func_array('var_dump', ['a' => 1, 'b' => 2]);
/*call_user_func_array()函数的第1个参数是函数名,第2个参数是数组,
该数组的每一个元素对应test()函数的每一个参数,如果是关联数组,会忽略键名。
*/

第五章、错误处理及调试

  •         错误用于指出语法、环境或编程问题。根据错误出现在编程过程中的不同环节,大致可以分为以下4
语法错误

指编写的代码不符合PHP的编写规范

逻辑错误

最让人头疼,不但不会阻止PHP脚本的执行,也不会显示出错误信息

环境错误

是由于PHP开发环境配置的问题引起的代码报错

运行错误一般不会阻止PHP脚本的执行,但会导致程序出现潜在的问题
  • PHP中的每个错误都有一个错误级别与之关联,用于表示当前错误的等级。
    例如Error、Warning、Notice等错误。
    PHP采用常量的形式来表示错误级别,每个错误级别都是一个整型。

级别常量

描述

E_ERROR

1

致命的运行时错误,这类错误不可恢复,会导致脚本停止运行

E_WARNING

2

运行时警告,仅提示信息,但是脚本不会停止运行

E_PARSE

4

编译时语法解析错误,说明代码存在语法错误,无法执行

E_NOTICE

8

运行时通知,表示脚本遇到可能会表现为错误的情况

E_CORE_ERROR

16

类似E_ERROR,是由PHP引擎核心产生的

E_CORE_WARNING

32

类似E_WARNING,是由PHP引擎核心产生的

E_COMPILE_ERROR

64

类似E_ERROR,是由Zend脚本引擎产生的

E_COMPILE_WARNING

128

类似E_WARNING,是由Zend脚本引擎产生的

E_USER_ERROR

256

类似E_ERROR,由用户在代码中使用trigger_error()产生的

E_USER_WARNING

512

类似E_WARNING,由用户在代码中使用trigger_error()产生的

E_USER_NOTICE

1024

类似E_NOTICE,由用户在代码中使用trigger_error()产生的

E_STRICT

2048

严格语法检查,确保代码具有互用性和向前兼容性

E_DEPRECATED

8192

运行时通知,对未来版本中可能无法正常工作的代码给出警告

E_ALL

32767

表示所有的错误和警告信息(在PHP 5.4之前不包括E_STRICT

// ① 使用未定义的变量
echo $var;	// 提示信息“Notice: Undefined variable...”
// ② 使用未定义的常量
echo PI;		// 提示信息“Notice: Use of undefined constant...”
// ③ 访问不存在的数组元素
$arr = array();
echo $arr['age'];	// 提示信息“Notice: Undefined index: age...”
  • 手动触发错误
        PHP解释器自动触发的错误外,还可以根据不同的需求自定义错误,它们可以用于协助调试,或在发布给其他人的代码中生成不推荐使用的通知等。
PHP 的内置函数 trigger_error() 可以触发错误,该函数声明如下:
bool trigger_error ( string $error_msg [, int $error_type = E_USER_NOTICE ] )

//第1个参数是错误信息内容
//第2个参数是错误类别,默认为E_UESR_NOTICE

第六章、PHP与Web页面交互

Web交互的流程

  1. web表单交互

 

        当PHP收到来自浏览器提交的数据后,会自动保存到超全局变量中;超全局变量是PHP预定义好的变量,可以在PHP脚本的任何位置使用;常见的超全局数组变量有$_POST$_GET等。

  • 当表单的method属性提交方式为POST时,浏览器发送POST请求通过POST方式提交的数据会保存到$_POST
  • 当表单的method属性提交方式为GET时,浏览器发送GET请求通过GET方式提交的数据会保存到$_GET​​​​​​​

        2.URL参数交互

        当表单以GET方式提交时,会将用户填写的内容放在URL参数中进行提交。表单的method属性删除(或将其值改为get),然后提交表单,会得到如下URL

http://localhost/login.php?username=test&password=123456

        “? ”后面的内容为参数信息
        参数是由参数名和参数值组成的,中间使用等号“= ”进行连接
        多个参数之间使用“& ”分隔
        username和 password 是参数名,对应表单中的 name 属性
        test和 123456 是参数值,对应用户填写的内容
        3.数组方式提交数据
        复选框是一种支持提交多个值的表单控件,在编写表单时应将其name 属性设置为数组。
<input type="checkbox" name="hobby[]" value="swimming"> 游泳
<input type="checkbox" name="hobby[]" value="reading"> 读书
<input type="checkbox" name="hobby[]" value="running"> 跑步

        4.HTML特殊字符处理

硬件

说明

nl2br()

将字符串中的换行符前插入HTML换行标记

strip_tags()

从字符串中去除HTMLPHP标记

htmlspecialchars()

将字符串中的特殊字符转换为HTML实体字符

htmlspecialchars_decode()

将字符串中的HTML实体字符转换回原来的字符

urlencode()

编码URL字符串

urldecode()

解码已编码的URL字符串

http_build_query()

生成URL编码后的字符串

HTTP协议

        HyperText Transfer Protocol的简称,超文本传输协议,专门用于定义浏览器与Web服务器之间数据交换的格式。

 

HTTP是一种基于“请求”和“响应”的协议

客户端与服务器建立连接后由客户端(浏览器)向服务器端发送一个请求,被称作HTTP请求

客户端与服务器建立连接后服务器接收到请求后会做出响应,称为HTTP响应

  • PHP处理过程

        在浏览器与服务器的交互过程中,Web服务器通过HTTP协议与浏览器进行交互PHP只用于处理动态请求

 

  •  HTTP请求消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值