PHP基础

PHP基础

<?php开头,以?>结尾
变量前加$,如定义变量$x
打印echo
函数

1
2
3
4
5
6
7
<?php
$my_name ="Bunny";
function echo_name($name){
echo $name;
}
echo_name($my_name);
?>
1
2
3
4
5
6
7
8
<?php
$x=1;
$y=2;
function calc($x,$y){
echo $x+$y;
}
calc($x,$y);
?>

PHP面向对象

OOP(面向对象程序设计):把事物封装成对象,然后操控对象完成各种行为

基础

  • 类(Class):类是抽象的,是不具体的。例如新建一个名为Human的类,Human(人类)就是一个抽象的概念,是对世界上所有人的总称
  • 对象(Object):具体的某个事物。对类进行实例化的一个实例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    class Person{//定义一个类
    var $name ="李白";//定义成员变量(属性)
    var $age =20;

    function show_age(){//定义成员函数(方法)
    echo $this->age;//输出当前对象age字段的值
    }
    }
    $person1=new Person;//从Person类创建对象
    $person1->show_age()//调用Person1对象的show_age方法
    ?>

其他的一些概念

  • 构造函数:名为_construct()的函数,会在类被实例化为对象的时候自动执行。
  • 析构函数:名为_destruct()的函数,对象销毁时自动执行
  • 继承:class A extends B{以这种形式使用extend关键字就可以让A继承B,子类会继承父类已有内容
  • 重写:在子类中写一个方法,自动覆盖了继承下来的父类的方法
  • 访问控制:定义属性时,如把var换成public private protected其中一个关键字,即设置了访问控制。这决定了是否能从外部访问这个属性,还是只能让对象自己访问。方法同理,可以在方法前面加上访问控制修饰符。如果不明确修饰符的话,默认都是public。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    Class Person{
    public $name="李白"
    private $age=20;
    public function show_age($age){
    echo show->$age;
    }
    }
    $person1=new Person;
    person1->show_age();//这里可以正常打印,因为是从内部访问
    echo $person1->age;//会报错,因为试图访问私有属性
    ?>
    访问控制的好处是可以将类的具体细节隐藏起来,封装成getter和setter方法,使得开发过程能够规范化。

PHP作用域和全局变量

在函数内部定义的变量,我们称为局部变量,反之则是全局变量。

分支与循环

if、switch case、while循环、for循环和c语言用法类似

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$score=50;
if(score==100){
echo "一百分";
}
elseif(score>60){
echo "及格";
}
else{
echo "不及格";
}
?>

PHP的网络操作

php代码一般用来编写Web应用,因此需要获取前端输入的数据。前端一般用嵌入到html代码里的Javascript编写脚本来获取用户的输入,并且将其打包发送给后端
常用的Http请求方法,有GET和POST。

  • GET提供给服务器的参数是在浏览器地址栏里边的,如果抓包分析是在浏览器最上边一行。(同时GET请求有长度限制,因此GET一般用来传一些简短和不敏感的数据)
  • POST方法提交的数据在POST请求体中,也就是数据包的下方

在php代码中,可以通过$_GET接受GET方法传入的参数,$POST则是接受POST传入的参数,可以使用Burp或者Yakit工具来构造数据包。$_REQUEST同时支持GET/POST/COOKIE传入的内容

1
2
3
4
<?php
$input=$_GET["name"];
echo $input;
?>

如上形式会接收一个name参数,并用echo打印出来