欢迎光临
我们一直在努力

Web技术核心与安全风险(三)Web 后端安全

PART 1   PHP基本语法

PHP介绍

PHPHyperText Preprocessor:超文本预处理器

官方网站: https://www.php.net/

学习工具:Trae+Phpstudy

如何在Trae 中搭建PHP环境

1.trae–扩展插件市场里中,搜索PHP,并安装php debug php IntelliSense

2.在扩展设置里面,配置PHP解释器

总共要设置三个,如下图所示,没有的自己创建,路径设为自己电脑里PHP的路径即可

PHP基础语法

PHP 代码必须包含在 <?php?>标签中。

1.打印hello world

<?php

echo "hello world";

?>

语句结束:每条语句以 ;(分号)结束。   注释 //单行注释 /*多行注释*/

2.变量命名规则:

(1)变量以 $ 符号开始,后面跟着变量的名称

(2)变量名必须以字母或者下划线字符开始

(3)变量名只能包含字母、数字以及下划线(A-z、0-9 和_)

(4)变量名不能包含空格

(5)变量名是区分大小写的($y 和 $Y 是两个不同的变量)

示例:

<?php

$message = "欢迎学习 PHP";

echo $message; // 输出变量内容

echo "<h1>" . $message . "</h1>";

?>

PHP数组

创建数组

(1)[ ]—-php版本5.4+

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

示例

<?php

$student = ["xiaoming", "xiaolin", "xixi", "xiaoai"];

echo $student[0];

?>

//输出结果为xiaoming

if 条件语句判断

条件语句:根据不同情况执行不同代码

语法

if (条件){

条件成时要执的代码;

}

示例:

<?php

$score = 75;

if ($score >= 60) {

echo "成绩及格";

}

?>

//输出结果为成绩及格

ifelse 语句

在条件成⽴时执⾏⼀块代码,条件不成⽴时执⾏另⼀块代码,请使⽤ if….else 语句

语法

if (条件){

条件成时执的代码;

}else{

条件不成时执的代码;

}

示例

<?php

$score = 55;

if ($score >= 60) {

echo "成绩及格";

} else {

echo "成绩不及格";

}

?>//输出结果为成绩不及格

ifelseif….else 语句

在若⼲条件之⼀成⽴时执⾏⼀个代码块,请使⽤ifelseif….else语句。

语法

if(条件1){

条件1时执的代码;

}else if(条件2){

条件2时执的代码;

}else{

以上条件不成时执的代码;

}

示例

<?php

$score = 75;

if ($score >= 90) {

echo "成绩优秀";

} elseif ($score >= 60) {

echo "成绩及格"; // 75 >= 60 成立

} else {

echo "成绩不及格";

}

?>//输出结果为成绩及格

PHP循环

1.for循环

语法

for (初始值; 条件; 增量){

要执的代码;

}

示例

<?php

$student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao'];

for ($i = 0; $i <= 3 ; $i=$i+1) {

echo $student[$i].' ' ;

}

?>

2.while 循环

while 循环将重复执⾏代码块,直到指定的条件不成⽴

语法

while (条件){

要执的代码;

}

示例

<?php

$count = 3;

$student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao'];

while ($count >= 0) {

echo $student[$count].' ' ;

$count=$count-1;

}

?>

PHP函数

PHP 的真正威⼒源⾃于它的函数。在PHP中,提供了超过 1000 个内建的函数

PHP 函数准则

函数的名称应该提示出它的功能

函数名称字⺟下划线开头(不能以数字开头)

PHP定义函数

<?php

function functionName()

{

// 要执的代码

}

?>

PHP类与函数

是抽象的概念,仅仅是模板

⽤来描述具有相同属性⽅法对象的集合。⽐如:""是⼀个 类。

对象实例,是某⼀个具体事物 。如张三则是具体存在 是⼀个对象

示例

<?php

header("Content-Type: text/html; charset=utf-8");

class student{

public $name;

public $age;

public function say() { //自定义函数

echo $this->name. " 你好!";

}

}

$stu1 = new student();//new表示调用函数,new student 表示调用student这个函数

$stu1 -> name = "xiaoming";

echo $stu1->name;

$stu1 -> say();

?>

//输出结果为xiaoming你好!

PHP魔术方法(Magic Methods

PHP魔术方法(Magic Methods)在PHP中具有特定的命名和功能

魔术方法不需要显式调用,而是由PHP解释器在特定时机自动触发。

通常用两个下划线__)开头,后跟方法名称,如构造方法 __construct()

示例:

<?php

class Person {

public function __construct() {

echo "construct is coming ~";

}

}

$p1 = new Person();

?>

超全局变量

PHP 的强⼤在于它能轻松处理⽤⼾通过 Web 提交 的数据,这依赖于⼏个特殊的超全局变量,它们是 PHP ⾃动创建的数组。

PHP提供了预定义超全局变量,用来获取HTTP 请求信息

案例:

#准备一个登录的页面

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<body>

<form action="b.php" method="get">

姓名:<input type="text" name="name"><br>

年龄:<input type="number" name="age"><br>

<button type="submit">提交</button>

</form>

</body>

</html>

#准备另一个获取数据的php页面

<?php

header("Content-Type: text/html; charset=utf-8");

$name = $_GET['name'] ;

$age = $_GET['age'] ;

echo "<h3>接收到的参数:</h3>";

echo "姓名:{$name}<br>";

echo "年龄:{$age}<br>";

echo "<a href='a.php'>返回填写表单</a>";

?>

序列化 (serialize)

传递多个数据可以用序列化对象

是将⼀个 PHP 对象(包括它的类名所有属性属性值)转换为⼀个可存储可传输的字符串的过程。

反序列化 (unserialize)

是将这个字符串还原回原来的 PHP 对象

示例:

#准备一个登录的页面

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<body>

<form action="b.php" method="get">

姓名:<input type="text" name="name"><br>

年龄:<input type="number" name="age"><br>

密码:<input type="password" name="pwd"><br>

<button type="submit">提交</button>

</form>

</body>

</html>

#准备另一个获取数据的php页面

<?php

header("Content-Type: text/html; charset=utf-8");

$name = $_GET['name'] ;

$age = $_GET['age'] ;

$pwd = $_GET['pwd'] ;

echo "<h3>接收到的参数:</h3>";

echo "姓名:{$name}<br>";

echo "年龄:{$age}<br>";

echo "密码:{$pwd}<br>";

class student{

public $name;

public $age;

public $pwd;

}

$stu1 = new student();

$stu1 -> name = $name;

$stu1 -> age = $age;

$stu1 -> pwd = $pwd;

echo "<h3>序列化后的数据:</h3>";

$serialized = serialize($stu1);

echo $serialized;

echo "<h3>反序列化后的数据:</h3>";

$restored = unserialize($serialized);

echo $restored->name ;

echo "<br>";

赞(0)
未经允许不得转载:171主机测评 » Web技术核心与安全风险(三)Web 后端安全
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址