安全开发PHPPHP基础
Att@ckxuphp可以嵌入在HTML语言中进行编写
基本语法
基本规则
php标记
<?php ?>
如果整个php文件中都是php代码的话,后面的 ?> 可以省略
|
指令分隔符;
//每行php代码都要以;
结尾
注释
单行注释//注释内容
多行注释/*注释内容*/
变量
php是弱类型,定义变量时不需要声明变量类型,输入$和变量名
即可
双引号中的变量才可以输出值


变量命名规则
- 变量以$符号开始,后面跟着变量的名称;
- 变量名必须以字母或者下划线字符开始;
- 变量名只能包含字母、数字以及下划线(Az、09和_);
- 变量名不能包含空格;
- 变量名是区分大小写的($y和$Y是两个不同的变量)
页面输出
echo 输出单一类型,多个用逗号隔开 print_r() 输出符合类型,一般用于输出数组 var_dump() 打印数据详细信息
|
基础数据类型
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- NULL(空)
String(字符串类型)
纯文本,可以将任何文本放在单引号和双引号中
<?php $name = 'han'; $str1 = "PHP is the best language!"; $str2 = "My name is $name."; echo $str1; echo "<br>"; echo $str2; ?>
|

Integer(整型)
正数或负数,可以指定进制为:十进制,十六进制(0x前缀),八进制(0前缀)
<?php $num1=20; $num2=-20; $num3=024; $num4=0x14;
var_dump($num1); echo "<br>"; var_dump($num2); echo "<br>"; var_dump($num3); echo "<br>"; var_dump($num4); ?>
|

Float(浮点型)
<?php $f1 = 20.123; $f2 = 2.0123e1;
var_dump($f1); var_dump($f2); ?>
|

Boolean(布尔类型)
大小写都可以
<?php $a = true; $b = 1; $c = 2; var_dump($a); var_dump($b == $c); ?>
|

NULL(空)
变量为空
<?php $n = null; var_dump($n); ?>
|

其他数据类型
复合数据类型
特殊数据类型
字符串处理
字符串运算符
并置运算符.
,用于拼接两个字符串
<?php $str1 = "hello"; $str2 = "world"; echo $str1." ".$str2; ?>
|

内置字符串处理函数
strlen()字符串长度
<?php $str1 = "hello"; $str2 = "world"; $str3 = $str1." ".$str2;
echo strlen($str1); echo "<br>"; echo strlen($str2); echo "<br>"; echo strlen($str3); ?>
|

strrev()反转字符串
<?php $str = "han"; echo strrev($str); ?>
|

字符串大小写转换
- strtoupper():全部转为大写
- strtolower():全部转为小写
<?php $str="Hello World"; echo strtoupper($str); echo "<br>"; echo strtolower($str); ?>
|

strpos()字符串查找
用于字符串内查找一个字符或者一段指定的文本。如果在字符串中能匹配上,该函数会返回第一个匹配的字符位置,如果未匹配到,则返回FALSE
字符串中首字符的位置是 0 而不是 1
<?php $str="hello world"; echo strpos($str,'world'); ?>
|

str_replace()字符串替换
用一些字符串替换字符串中的另一些字符
<?php echo str_replace("world", "Kitty", "hello world!"); ?>
|

对字符串中的单词计数
<?php echo str_word_count("Hello world!"); ?>
|

数字处理
算数运算符
<?php $x=12; $y=5; echo "$x+$y=".($x+$y)."<br>"; echo "$x-$y=".($x-$y)."<br>"; echo "$x*$y=".($x*$y)."<br>"; echo "$x/$y=".($x/$y)."<br>"; echo "$x%$y=".($x%$y)."<br>"; ?>
|

赋值运算符

递增/递减运算符

数组
Array,在单个变量中存储多个值的特殊变量
php中的三种数组
- 索引数组(数值数组) - 带有数字索引的数组
- 关联数组 - 带有指定键的数组
- 多维数组 - 包含一个或多个数组的数组
数值(索引)数组
创建方式
$cars=array("Volvo","BMW","Toyota");
|
$cars[0]="Volvo"; $cars[1]="BMW"; $cars[2]="Toyota";
|
创建空数组
$arr = []; $arr = array();
|
创建数组时就对数组赋值
$fruits = ['apple','orange','banana']; $fruits = array('apple','orange','banana');
|
数组元素的类型可以不一样
使用数组
获取元素
<?php $arr=array('apple','orange','banana'); echo "my favorite fruit is $arr[0] "; ?>
|

添加元素
<?php $arr=array('apple','orange','banana'); print_r($arr); echo "<br>"; $arr[]='cherry'; print_r($arr); ?>
|

count()获取数组长度
count() 函数用于返回数组的长度(元素数)
<?php $cars=array("porsche","BMW","Volvo"); echo count($cars); ?>
|

in_array()查询数组是否包含某个元素
<?php $arr = array('apple', 'orange', 'banana'); if (in_array('apple', $arr)) { echo "apple in array."; } ?>
|

遍历
<?php $cars=array("apple","orange","banana"); $arrlength=count($cars);
for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>"; } ?>
|

关联数组
关联数组是使用您分配给数组的指定的键的数组
创建方式
$age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");
|
或
$age['Bill']="63"; $age['Steve']="56"; $age['Elon']="47";
|
获取元素
关联数组相当于索引数组中的索引被替换为我们所分配的键值,我们可以通过键值来取到数组中的元素
<?php $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47"); echo "Elon is " . $age['Elon'] . " years old."; ?>
|

遍历
<?php $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
|
函数
php函数
创建用户自定义函数
function functionName() { 被执行的代码; }
|
函数名能够以字母或下划线开头(而非数字)。
函数名对大小写不敏感。
<?php function sayHi() { echo "Hello world!"; }
sayhi(); ?>
|
传递参数
参数在括号内部,有多个参数时直接用逗号隔开
<?php function familyName($fname,$year) { echo "$fname Zhang. Born in $year <br>"; }
familyName("Li","1975"); familyName("Hong","1978"); familyName("Tao","1983"); ?>
|
设置默认参数值
<?php function setHeight($minheight=50) { echo "The height is : $minheight <br>"; }
setHeight(350); setHeight(); setHeight(135); setHeight(80); ?>
|
返回值
<?php function sum($x,$y) { $z=$x+$y; return $z; }
echo "5 + 10 = " . sum(5,10) . "<br>"; echo "7 + 13 = " . sum(7,13) . "<br>"; echo "2 + 4 = " . sum(2,4); ?>
|
流程控制
同C,JS一样
foreach遍历数组
foreach ($array as $value) { 要执行代码; }
例子 <?php $grades = array("张三"=>90,"李四"=>85,"小明"=>50); foreach ($grades as $value){ echo $value . "<br>"; } ?>
|
foreach ($array as $key => $value) { 要执行代码; }
例子 <?php header('Content-Type: text/html; charset=utf-8'); $grades = array("张三"=>90,"李四"=>85,"小明"=>50); foreach ($grades as $key => $value){ echo "$key => $value" . "<br>"; } ?>
|
文件包含
php使用文件包含来调用文件
php文件包含函数
PHP包含文件函数include、include_once、require、require_once区别和总结-CSDN博客
- include()
当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。
- include_once()
功能与include()相同,区别在于当重复调用同一文件时,程序只调用一次。
- require()
require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行。
- require_once()
功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。
类和对象
创建类
创建对象之前要先定义对应的类
class Class_name { var $var1; var $var2; function myfunc1 ($arg1, $arg2) { code; } }
|
类使用class关键字后加上类名定义。
类名后的一对大括号{}内可以定义属性和方法。
类的属性使用var来声明,属性也可以初始化值。
方法定义类似PHP函数的定义,但类方法只能通过该类及其实例化的对象访问。
<?php class Person{ var $name; var $age;
function hello(){ echo "hello, my friend!\n"; echo "My name is $this->name, my age is $this->age"; } } ?>
|
创建和使用对象
类创建后,使用new运算符来实例化该类的对象
访问对象属性和方法
$han->name = "han"; $han->age = 18;
$han->hello();
|
tips
$id=$_GET['id'] ?? '1'; 将赋值的id传给id变量,如果为空,则id=1
|