Web后端基础知识——PHP

这里呢是博主学了一周然后整理的一些知识,虽然说可能有点多,但只要耐心看看就知道纯纯干货,希望大家一起进步!加油!

目录

一、PHP基础

1.1基础概念

1.2 PHP 基础语法:

1. 代码标记

2. 注释

3. 变量

4 并置运算符 .

5. 数据类型

6. 常量

7.一些常用运算符

二、PHP流控与数组

2.1 条件语句

1. if - else 语句

2. if - elseif - else 语句

3. switch 语句

2.2 循环语句

1. for 循环

2. while 循环

3. do - while 循环

4. foreach 循环

2.3 数组

2.3.1 一维数组

2.3.1 二维数组

var_dump输出

2.4 PHP函数

三、PHP其他概念

3.1 简单表单与Web操作

3.2文件上传

3.2.1实现步骤

3.2.2实验过程:

3.3 获取php文件上传的一些信息


一、PHP基础

1.1基础概念

PHP(Hypertext Preprocessor)是一种广泛应用于 Web 开发的开源脚本语言,尤其适合用于创建动态网页。

这里给大家一个下载php的网站:PHP: Downloads

这里给大家一个更加详细的学习php语言的网站:PHP 手册 - Manual

  • php是一种通用的脚本语言

  • 语法吸收了C语言、Java和perl的特点,利于学习,利用广泛

php的优点:

php可在不同平台上运行(Windows,Linux,Unix,Mac OS X等)

php与目前几乎所有正在被使用的服务器相兼容(APache、LLS等)

php提供广泛的数据库支持

php易于学习,并可高效的运行在服务器

PhpStorm特点:

这里给大家一个下载PhpStorm的网站:下载 PhpStorm:PHP IDE

  • 智能代码补全:PhpStorm提供智能代码补全功能,可以帮助PHP开发者快速完成代码输入,提高编码效率。

  • 快速导航:通过快速导航功能,开发者可以迅速定位到类、方法、变量等定义方式,方便进行代码修改和调试。

  • 即时错误检查:即时显示语法错误和其他潜在问题,并提供快速修改的建议,帮助开发者及时纠正错误。

  • 多语言支持:除 PHP 外,PHPStorm 还支持 HTML 、CSS、JavaScript等前端技术,以及Smarty和PHPDoc等标记语言,满足现代web开发的需求。

  • 数据库管理:PhpStorm 内置SQL编译器,支持常见的数据库如:MySQl,可以执行SQL查询、管理数据库等语法。

(将 PhpStorm 设置为中文

PhpStorm 是一款强大的 PHP 集成开发工具,但默认情况下是英文界面。对于不熟悉英文的用户,可以通过安装中文插件将其界面转换为中文。以下是详细步骤:

在线安装中文插件

  1. 打开 PhpStorm,点击菜单栏的 File,选择 Settings

  2. 在左侧的 Plugins 列表中,选择 Marketplace 选项卡。

  3. 在搜索框中输入 chinese,找到 Chinese (Simplified) Language Pack 插件。

  4. 点击右侧的 Install 按钮进行安装。

  5. 安装完成后,重启 PhpStorm,界面将变为中文。

File -> Settings -> Plugins -> Marketplace -> 搜索 chinese -> 安装 Chinese (Simplified) Language Pack -> 重启 PhpStorm)

1.2 PHP 基础语法:

1. 代码标记

PHP 代码需包裹在特定标记中,常用的标记形式如下:

<?php
 // 这里放置PHP代码
 echo 'Hello, World!';
 ?>

另外,若 PHP 配置开启了短标记功能,还能使用短标记形式 <??> 来包裹代码。

2. 注释

PHP 支持单行注释和多行注释,具体如下:

 // 这是单行注释
 ​
 /*
 这是多行注释,
 可以跨越多行。
 */

3. 变量
  • 定义规则:PHP 变量以 $ 符号开头,变量名区分大小写,且必须以字母或下划线开头,后面可跟字母、数字或下划线。

 $name = 'Alice'; // 字符串变量
 $age = 25; // 整数变量
 $isStudent = false; // 布尔变量

注意:

PHP变量名规则:

  • 变量名以$符号开始,后面跟着的是变量的名称

  • 变量名必须以字母或下划线字符开始

  • 变量名只能包含字母、数字以及下划线。

  • 变量名不能包含空格

  • 变量名是区分大小写的($x 与 $X 是两个不同的变量

4 并置运算符 .
  • 基本用法:该运算符可将两个或多个字符串连接起来,生成一个新的字符串。示例如下:

 $str1 = "Hello";
 $str2 = " World";
 $result = $str1 . $str2;
 echo $result; 

在上述代码中,借助 . 运算符把 $str1$str2 连接成了一个新的字符串 "Hello World",并将其赋值给 $result,最终输出这个连接后的字符串。

5. 数据类型
  • 字符串(string):用于表示文本信息,可使用单引号或双引号括起来。例如:

 $str1 = 'Hello';
 $str2 = "World";
  • 整数(integer):代表没有小数部分的数字。

 $num1 = 10;
 $num2 = -5;
  • 浮点数(float):用于表示带有小数部分的数字。例如:

 $float1 = 3.14;
 $float2 = -2.5;
  • 布尔值(boolean):只有 truefalse 两个值,通常用于条件判断。例如:

 $isValid = true;
 $isDone = false;
6. 常量

常量是一旦定义就不能再修改的标识符,使用 define() 函数来定义。例如:

7.一些常用运算符

数学运算符

比较运算符

逻辑运算符

二、PHP流控与数组

PHP中的流程控制语句用于控制程序的执行流程,主要分为条件语句和循环语句,以下是详细介绍:

2.1 条件语句

1. if - else 语句

这是最基本的条件判断语句,根据条件的真假来执行不同的代码块。

语法

if (condition) {
    // 如果条件为真,执行这里的代码
} else {
    // 如果条件为假,执行这里的代码
}

示例

$age = 20;
if ($age >= 18) {
    echo "你已成年";
} else {
    echo "你未成年";
}
2. if - elseif - else 语句

当有多个条件需要判断时,可以使用 if - elseif - else 语句。

语法

if (condition1) {
    // 如果条件1为真,执行这里的代码
} elseif (condition2) {
    // 如果条件1为假,条件2为真,执行这里的代码
} else {
    // 如果所有条件都为假,执行这里的代码
}

示例

$score = 85;
if ($score >= 90) {
    echo "优秀";
} elseif ($score >= 80) {
    echo "良好";
} elseif ($score >= 60) {
    echo "及格";
} else {
    echo "不及格";
}
3. switch 语句

switch 语句用于基于不同的条件执行不同的代码块,适用于多分支选择的情况。

语法

switch (expression) {
    case value1:
        // 当 expression 的值等于 value1 时,执行这里的代码
        break;
    case value2:
        // 当 expression 的值等于 value2 时,执行这里的代码
        break;
    default:
        // 如果 expression 的值与所有 case 都不匹配,执行这里的代码
}

示例

$day = "Monday";
switch ($day) {
    case "Monday":
        echo "星期一";
        break;
    case "Tuesday":
        echo "星期二";
        break;
    default:
        echo "其他日子";
}

2.2 循环语句

1. for 循环

for 循环用于已知循环次数的情况。

语法

for (initialization; condition; increment) {
    // 循环体,每次循环都会执行这里的代码
}

示例

for ($i = 0; $i < 5; $i++) {
    echo $i . "<br>";
}
2. while 循环

while 循环在条件为真时会一直执行循环体。

语法

while (condition) {
    // 只要条件为真,就会一直执行这里的代码
}

示例

$i = 0;
while ($i < 5) {
    echo $i . "<br>";
    $i++;
}
3. do - while 循环

do - while 循环会先执行一次循环体,然后再判断条件是否为真,如果为真则继续循环。

语法

do {
    // 先执行一次这里的代码
} while (condition);

示例

$i = 0;
do {
    echo $i . "<br>";
    $i++;
} while ($i < 5);
4. foreach 循环

foreach 循环专门用于遍历数组。

语法

foreach ($array as $value) {
    // 每次循环,$value 会依次取数组中的一个值
}

如果需要同时获取数组的键和值,可以使用以下语法:

foreach ($array as $key => $value) {
    // 每次循环,$key 为数组的键,$value 为对应的值
}

示例

$fruits = array("apple", "banana", "cherry");
foreach ($fruits as $fruit) {
    echo $fruit . "<br>";
}

这些流程控制语句可以帮助你根据不同的条件和需求,灵活地控制程序的执行流程。

2.3 数组

在 PHP 中,数组是一种非常强大的数据结构,可以存储多个值,并且可以是不同类型的数据。PHP 中的数组分为索引数组(下标为数字)、关联数组(下标为字符串)和多维数组(数组中包含其他数组)

创建数组:array()函数用于创建数组

count()函数用于返回数组的长度(元素的数量)

遍历数值数组可以使用for循环以及foreach循环

2.3.1 一维数组
<?php
// 使用 array() 函数创建一个数值数组
$numbers = array(10, 20, 30, 40, 50);

// 使用 count() 函数获取数组的长度(元素的数量)
$length = count($numbers);
echo "数组的长度为: ". $length. "<br>";

// 使用 for 循环遍历数值数组
echo "使用 for 循环遍历数组的结果: <br>";
for ($i = 0; $i < $length; $i++) {
    echo $numbers[$i]. "<br>";
}

// 使用 foreach 循环遍历数值数组
echo "使用 foreach 循环遍历数组的结果: <br>";
foreach ($numbers as $number) {
    echo $number. "<br>";
}
?>
2.3.1 二维数组
// 使用 array() 函数创建一个二维数组
$students = array(
    array("Alice",20, 85),
    array("Bob",21,90 ),
    array("Charlie", 19,88)
);

// 使用 count() 函数获取二维数组的外层数组长度(即子数组的数量)
$outerLength = count($students);
echo "二维数组外层数组的长度为: ". $outerLength. "<br>";

//输出
foreach ($students as $v)
{
    echo "姓名: "."<br>".$v[0]."<br>";
    echo "年龄: "."<br>".$v[1]."<br>";
    echo "分数: "."<br>".$v[2]."<br>";
    echo "<br>";
}
var_dump输出

这里输出二维数组会不会感觉有点麻烦呢,我们可以用var_dump来输出一下二维数组

这里提醒一下var_dump 是 PHP 里用于输出变量详细信息的函数,会显示变量的类型与值。

//也可以用var_dump打印
echo "<pre>";//以更易于阅读的方式显示在网页
var_dump($students);
echo "</pre>";

输出上面的结果是:

array(3) {
  [0]=>
  array(3) {
    [0]=>
    string(5) "Alice"
    [1]=>
    int(20)
    [2]=>
    int(85)
  }
  [1]=>
  array(3) {
    [0]=>
    string(3) "Bob"
    [1]=>
    int(21)
    [2]=>
    int(90)
  }
  [2]=>
  array(3) {
    [0]=>
    string(7) "Charlie"
    [1]=>
    int(19)
    [2]=>
    int(88)
  }
}

宁外也可以使用print_r输出

echo "<pre>";//以更易于阅读的方式显示在网页
print_r($students);
echo "</pre>";

输出结果:

Array
(
    [0] => Array
        (
            [0] => Alice
            [1] => 20
            [2] => 85
        )

    [1] => Array
        (
            [0] => Bob
            [1] => 21
            [2] => 90
        )

    [2] => Array
        (
            [0] => Charlie
            [1] => 19
            [2] => 88
        )

)

2.4 PHP函数

//函数以function开头
function abc()
{
    echo "你好!";
}
调用函数
abc();

简单函数示例:

<?php
// 定义一个函数,用于计算两个数的和
function addNumbers($num1, $num2) {
    return $num1 + $num2;
}

// 调用函数
$result = addNumbers(5, 3);
echo "5 和 3 的和是: ". $result. "<br>";
?>

三、PHP其他概念

  • 表单是一个包含表单元素的区域。表单的作用是搜集不同类型的用户输入,然后将用户信息提交给服务器。

  • 表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。

  • 用户提交数据通常是使用表单进行提交,也可以使用网址中的参数传递数据,这些数 据通过HTTP请求的方式发送,使web服务器获取。PHP提供了预定义的超全局变量,用来获取HTTP请求信息,这些变量的数据类型均为数组

在PHP 中,表单(Form)是实现 Web 交互的重要组成部分,它允许用户输入数据并提交到服务器,然后服务器端的 PHP 脚本来处理这些数据。

3.1 简单表单与Web操作

这里呢会涉及到前面写的一些前端HTML的代码:

<!doctype html>
<html lang="en">
<body>

<h1>表单处理</h1>
<!--这里用post传输,后面有用$_POST接收传输的数-->
<form menthod="post">
    用户:<input type="text" name="user">
    密码:<input type="password" name="submit">
    <input type="submit" value="提交" name="submit">

</form>
</body>
</html>

用于接收数据

<?php
//1. 接收数据    2.处理数据     3.返回结果
//全局变量  用 $_POST 接收
// $_POST以数组的形式接收  里面可以接收很多元素,数字、字符等
echo "<pre>";
//打印数据
print_r($_POST);
echo "</pre>";
?>

判断用户是否点击按钮

if (isset($_POST['submit']))  //isset变量是否被设置
{          //三元运算符  (expr1)?(expr2) : (expr3)
           //如果expr1判断为真,则输出的是expr2,如果为假,输出expr3
    $user=isset($_POST[user]) ? $_POST['user'] : null;  //nul为空的意思
    $password=isset($_POST['$password']) ? $_POST['password'] : null;
    //用个函数检查是否登录
    function login($user,$password)
    {
        //一边情况这里是写一个数据库,将输入的账号密码连接到数据库的,观察这个账号和密码是否正确
        //连接到数据库做判断的
    }
}

三元运算符 :(expr1)?(expr2) : (expr3) 如果expr1判断为真,则输出的是expr2,如果为假,输出expr3

3.2文件上传

在 PHP 里,文件上传是常见的 Web 操作。下面为你详细介绍实现文件上传的步骤与示例代码。

3.2.1实现步骤
  1. 创建 HTML 表单:构建一个 HTML 表单,用于用户选择要上传的文件。表单的 method 属性需设置为 POSTenctype 属性要设置为 multipart/form-data

  2. 创建 PHP 处理脚本:编写一个 PHP 脚本来处理文件上传,借助 $_FILES 超全局变量获取上传文件的信息。

  3. 文件验证与保存:对上传的文件开展验证,如文件类型、大小等,验证通过后将文件保存到指定目录。

文件上传必要条件

1)method属性:表单提交方式必须为POST

2)enctype属性:form表单属性,主要是规范表单数据的编码

3.2.2实验过程:

实现文件上传功能首先是需要一个页面,下面是一个HTML的代码页面:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
    用户名:
    <input type="text" name="username" id=""><br>
    文件上传:
    <input type="file" name="upload"><br>
    <input type="submit" value="提交" name="submit">
</form>
</body>
</html>

页面展示:

这里就可以试着上传一些图片看看。

1 初识文件上传——$_FILES的一些内容和含义(方便后面学习文件上传漏洞)

打印上传的文件信息

print_r($_FILES);

然后会出现

Array
(
    [username] => 111
    [submit] => 提交
)
Array
(
    [upload] => Array
        (
            [name] => 时间.png 
            [type] => image/png
            [tmp_name] => C:\Users\wujia\AppData\Local\Temp\php1826.tmp
            [error] => 0
            [size] => 321965
        )

)

name是文件的名字

type是文件的类型

tem_name是临时路径

error 0代表成功 4代表用户未提交文件 123错误代码 3是相当于上传一般断网了,造成一个丢包的情况

size是文件上传大小

2$_FILES的一些概念

  • $_FILES超级全局变量作用是存储各种与上传文件有关的信息;

  • $_FILES是一个二维数组,数组中共有5项:

  • $_FILES"userfile" 上传文件的名称,客户端机器文件的原名称。

  • $_FILES"userfile" 上传文件的类型,文件的 MIME 类型,需要浏览器提供该信息的支 持,例如“image/gif”。

  • $_FILES"userfile" 上传文件的大小, 以字节为单位,已上传文件的大小,单位为字节。

  • $_FILES"userfile" 文件上传后在服务器端储存的临时文件名,文件被上传后 在服务端储存的临时文件名。

  • $_FILES"userfile" 文件上传相关的错误代码

注:userfile只是一个占位符,代表文件上传表单元素的名字; 因此这个值将根据你所给定

的名称有所不同;

3.3 获取php文件上传的一些信息

1.获取上传文件的名字和临时路径

一般$_FILES里面包含以下数据

Array
(
    [upload] => Array
        (
            [name] => 时间.png 
            [type] => image/png
            [tmp_name] => C:\Users\wujia\AppData\Local\Temp\php1826.tmp
            [error] => 0
            [size] => 321965
        )
)

下面是获取上传文件的名字和临时路径:

<?php
if($_FILES)
{
    $name=$_FILES['upload']['name'];
    //将上传名字保存在$name
    $tmp_name=$_FILES['upload']['name'];
    //将临时文件保存在$tmp_name
}
?>

注意:文件一般自动保存在 $FILES 里面, $POST只是表单数据

2. 获取文件后缀名

一般情况下有两种方法

  • substr(字符串,位置) 从字符串中拿这个位置

  • strrchr(字符串,指定字符) 从字符串中找指定字符

//可以先用strrchr获取符号“ . ”,再用substr获取后缀名
$ext=substr(strrchr($name,"."),1);

生成一个新的随机文件名

$files_name=rand().".".$ext;

修改文件路径

//判断你有没有“upload”文件,然后创建一个名为“upload”的文件
$dir="upload";
if(!$files_name($dir))
{
    mkdir($dir,0777,ture);
    //mkdir 是创建一个新文件叫“upload”, 777是给它赋予最高权限
}

验证是否创建成功,输出一下文件所在路径是否在“upload”.

echo $dir."/".$files_name;

文件保存

//趁着临时文件在的时候保存下来
if(move_uploaded_file($files_name,$path)) //将文件保存在$path
{
    die("文件保存失败");  //提示错误信息
}
else
    echo "文件上传成功。";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值