这里呢是博主学了一周然后整理的一些知识,虽然说可能有点多,但只要耐心看看就知道纯纯干货,希望大家一起进步!加油!
目录
一、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 集成开发工具,但默认情况下是英文界面。对于不熟悉英文的用户,可以通过安装中文插件将其界面转换为中文。以下是详细步骤:
在线安装中文插件
-
打开 PhpStorm,点击菜单栏的 File,选择 Settings。
-
在左侧的 Plugins 列表中,选择 Marketplace 选项卡。
-
在搜索框中输入 chinese,找到 Chinese (Simplified) Language Pack 插件。
-
点击右侧的 Install 按钮进行安装。
-
安装完成后,重启 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):只有
true
和false
两个值,通常用于条件判断。例如:
$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输出
宁外也可以使用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实现步骤
-
创建 HTML 表单:构建一个 HTML 表单,用于用户选择要上传的文件。表单的
method
属性需设置为POST
,enctype
属性要设置为multipart/form-data
。 -
创建 PHP 处理脚本:编写一个 PHP 脚本来处理文件上传,借助
$_FILES
超全局变量获取上传文件的信息。 -
文件验证与保存:对上传的文件开展验证,如文件类型、大小等,验证通过后将文件保存到指定目录。
文件上传必要条件
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 "文件上传成功。";