Reber's Blog

只会一点点编程、只会一点点渗透


PHP 之基础

0x00 PHP的作用

1. 收集表单数据
2. 生成动态网页
3. 字符串处理
4. 动态输出图片
5. 处理服务器端文件系统
6. 编写数据库支持的网页
7. 会话跟踪控制
8. 处理XML文件
9. 支持大量的网络协议
10. 服务器端的其他相关操作

0x01 PHP代码嵌入位置

可以将PHP语言嵌入到扩展名为.php的HTML文件中的任何位置,只要在文件中使用"<?php"起始符和终止符"?>"就会开启PHP模式,在PHP模式中写入PHP语句即可将PHP语言嵌入到HTML文件中。

0x02 解读开始和结束标记

1. <?php ?>
2. <script language="php"></script>
3. <? ?>
4. <% %>
//前两种总是可用,第3、4种要在php.ini中开启short_open_tag和asp_tags

//双引号中的变量可以被解析,单引号中的变量不能被解析

0x03 指令分割符及空白符及注释符

  • 一段代码中除了最后一行其他每句都要用分号结束(推荐每句都用分号结束)
  • 空白符(空格、tab制表符、换行)会被php引擎忽略
  • 注释符
1. 若觉得代码不合适则可以注释,但不要急于删除
2. 注释的目的在于说明程序
3. 注释对调试和编写程序可以起到很好的帮助作用
4. PHP注释符有:"/**/"、"//"、"#"

0x04 运算符

* 算数运算符:"+"、"-"、"*"、"/"、"%"
* 赋值运算符:"="、"+="、"-="、"*="、"/="、"%="
* 字符串运算符:"."、".="
* 递增/递减运算符:"++$a"、"$a++(先赋值再++)"、"--$a"、"$a--"
* 比较运算符
    * ==   等于
    * ===  全等(完全相同)
    * !=   不等于
    * <>   不等于
    * !==  不全等(完全不同)
    * >    大于
    * <    小于
    * >=   大于或等于
    * <=   小于或等于
* 逻辑运算符
    * and  都为true则返回true
    * or   至少有一个为true则返回true
    * xor  有且仅有一个为true则返回true
    * &&   都为true则返回true
    * ||   至少有一个为true则返回true
    * !    不为true则返回true
* 数组运算符
    * +    联合但不覆盖重复的键
    * ==   拥有相同键/值对则返回true
    * ===  拥有相同键/值对,且顺序相同、类型相同则返回true
    * !=   不等于则返回true
    * <>   不等于则返回true
    * !==  完全不同则返回true

0x05 数据类型

  • 变量类型

    1. 布尔型(boolean,true,false)
    2. 整型(integer)
    3. 浮点型(float和double)
    4. 字符串(string)
    5. 数组(array)
    6. 对象(object)
    7. 资源类型(resource)
    8. NULL类型
    9. 伪类型(mixed,number,callback)
  • 布尔类型
    以下会被认为是FALSE,其他所有值都被认为是TRUE(包括任何资源)

    1. 布尔值FALSE
    2. 整型值0(零)为假,-1和其他非零值都是TRUE
    3. 浮点型0.0
    4. 空白字符串和字符串“0”
    5. 没有成员变量的数组
    6. 没有单元的对象(仅适用于PHP4)
  • NULL类型

    1. NULL不区分大小写
    2. NULL类型唯一可能的值就是NULL
    3. NULL不代表空格、不代表零、不代表空字符串,而是表示一个变量的值为空
    4. 将变量直接赋值为NULL则为NULL
    5. 声明的变量尚未被赋值则为NULL
    6. 被unset()函数销毁的变量为NULL

0x06 类型转换

  1. 自动类型转换
    1. 有布尔值参与运算,则TRUE转换为整型1,FALSE为0,然后再运算
    2. 有NULL值参与的运算,NULL值转换为整型0,再参与运算
    3. 整型和float型参与运算则先把interger型转换为float型再运算
    4. 字符串和数字型数据参与运算时,字符串先转换为数字再参与运算
  2. 强制类型转换
    1. 变量前添加(int)、(float)、(string)、(bool)等
    2. 用函数intval()、floatval()、strval()
    3. 用函数settype()

0x07 变量引用

<?php
    $a = 123;
    $b = $a;
    $a = 456;   //此时$a为456,$b为123
    $c = &$b;
    $b = 111;  //此时$b和$c都是111
?>

0x08 可变变量

<?php
    $a = 'hello';
    $$a = 'world';  //此时$a的值hello就相当于$$a的键
    echo "$a $hello"; //输出hello world
?>

0x09 命名规则

//类中的命名规则
1.类名使用大写字母开头的单词(如CapWords, 即Pascal风格)
2.类的属性命名以字符'm'为前缀,其他用Pascal风格,如 $mStudentName
3.类的方法名除了第一个字母小写外其他采用Pascal风格且命名有意义,如function getTeacherName(){}
4.方法的参数名除了第一个字母小写外其他采用Pascal风格,如 function setName($firstName、$secondName){}

//一般变量命名规则
1.变量名开头是字母或下划线,后面跟任意数量的数字、字母、下划线,变量名中间不能有空格
2.所有字母都使用小写,使用'_'作为每个词的分界,如: $msg_error、$chk_pwd
3.临时变量通常被取名为i、j、k、m、n 且它们一般用于整型,而c、d、e、s 它们一般用于字符型
4.实例变量前面需要一个下划线,首单次小写,其余单词首字母大写

//其他变量命名规则
1.引用变量要带有前缀'r',如: &$rExam
2.全局变量应该带有前缀'g',如: global $gTest
3.静态变量应该带有前缀's',如: $sStatus
4.函数名称都使用小写字母,多个单词使用'_'来分割,如: function this_good_idear(){}