PHP代码基础初解
PHP基础
语言标记
<h1>My Name is XIU!</h1>
<script>
console.log("This message is from info.php!")
</script>
<?php // PHP 的开始标记,表示从此标记开始,进入PHP 模式。
phpinfo(); // PHP 代码
// ;是PHP 的结束标记,表示从开始标记到结束标记,之间的内容是
PHP 模式
// 之后的内容依然被PHP 解释引擎认为是纯文本字符串。
?>
说明:
在PHP文件中,可以与HTML 和JavaScript 混编。
开始标记 <?php 标识进入PHP 模式,
结束标记 ?> ,标识退出PHP 模式。
PHP 模式之外的内容会被作为字符输出到浏览器中。
HTML 或JavaScript 对于PHP 来说就是纯文本字符串。
<?php
phpinfo();//小括号表示调用函数
?>//所有内容在<?php?>//标签中编写
安全问题:如果是⼀个在线的网站能够看到phpinfo页面,说明存在敏感信息泄露漏洞,这个漏洞需要体现在后面的渗透测试报告中。
PHP 脚本以 <?php** 开始,以 **?> 结束:
<?php
// PHP 代码
?>
PHP 文件的默认文件扩展名是 “.php”。
PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。
基础语法
指令分隔符
;
表示一句PHP代码的结束
注释
单行注释
phpinfo(); // 该函数会显示PHP 配置信息
多行注释
/*
这是多行注释!
以下语句表示PHP 配置信息
*/
phpinfo();
变量
变量规则
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
命名规则
变量命名时,建议使用驼峰式命名法或者下划线命名法,做到变量名的"见名知意"。
$firstName;
$LastName;
$first_name;
$last_name;
变量声明和初始化
直接赋值,直接使⽤。
echo $username;
$username = "XIU";
echo $username;
变量释放
unset()函数释放指定的变量。
$username "XIU";
echo $username;
unset($username);
echo $username;
可变变量
可变变量,一个变量的名字可以动态的设置和使用,可变变量是一种特殊的变量,其名称是由另一个变量的值决定的。$是PHP的特性,也是产生PHP中变量覆盖漏洞的原因之一。
<?php
$username = "xujie"; //定义了一个变量叫$username,将$username这个变量的值设为字符串的xujie
$xujie = "芮城"; //定义了一个变量叫作$xujie将他的值设置为芮城
echo $$username; //$$username就是可变变量,在已声明的变量$username前又加上了一个变量符
// $($username) -> $xujie
?>
变量类型
<?php
$name = "XIU"; //string类型
$sex = true; //bool类型
$age = 24; //int类型
$score = 59.9; //float类型
var_dump ($name); //输出变量类型
?>
bool类型
布尔类型:表示真(true)或假(false),
int类型
整型,存储整数
float类型
浮点型,也称double,指包含小数的数。
string类型
字符串是有序的一系列字符。字符串可以使用单引号、双引号、定界符三种方法来定义。
单引号定义字符串:
单引号定义的字符串中不能包含单引号,如果包含,需要转义 \’ 。
单引号中的变量不会被识别。
$name = 'XIU';
$msg = 'Welcome, ';
echo $msg.$name;
双引号定义字符串:
双引号中可以包含单引号,双引号中包含双引号,需要转义 \" 。
PHP 会解析双引号之间的变量,最好用 {} 将变量名括起来。
$username = "XIU";
$message = "Welcome, {$username}";
echo $message;
定界符定义字符串:
当需要定义输出大段字符串时,并且该字符串中有超多特殊字符,包括单引号,双引号等。
定界符定义的字符串中的单双引号,还有大部分特殊字符不需要进行转义。
定界符开始标识符 <<< + 标志 ,标志建议大写字母,并且具备⼀定的语义。
定界符结束标识符 标志 + ; ,结束标识符之后,只能有换行回车。
标志的命名规则,字母、数字、下划线,并且不能以数字开始。
定界符中的 $ 同样会识别成变量,变量名要用 {} 括起来。
$name = "XIU";
$msg = <<<XIU
<h1>My Name is <span style = "color:pink">{$name}</span>!</h1>
<script>
console.log('This message is from info.php!')
</script>
XIU;
echo $msg;
常量
常量是⼀个简单值的标示符,如其名称所暗示的。在PHP 脚本执行期间⼀个常量⼀旦
被定义,就不能被改变或者取消定义,常量的作用域是全局,常量包含bool,int,float,string 类型的数据。
定义和使用
常量的命名与变量类似,也遵循PHP 标识符的名称规则,按照惯例常量标识符总是大写的。
// define.php
define("USERNAME", "XIU");
// USERNAME = 'XIU';
// unset("USERNAME");
echo USERNAME;
变量⼀般由$ 符号起头,常量⼀般大写。
预定义常量
PHP已经定义好了,可以直接使用的常量,一般代表特殊的含义。魔术常量是预定义常量中比较特殊的一类。
常量名 | 常量值 |
---|---|
FILE | 当前的文件名,完整的路径 |
LINE | 当前行号 |
FUNCTION | 当前的函数名 |
CLASS | 当前的类名 |
METHOD | 当前对象的方法名 |
PHP_OS | 操作系统类型 |
PHP_VERSION | 当前PHP版本 |
DIRECTORY_SEPARATOR | 目录的分隔符 |
运算符
算数运算符
例子 | 名称 | 结果 |
---|---|---|
-$a | 取反 | $a的负值 |
$a + $b | 相加 | a 和 a和 a和b的和 |
$a - $b | 相减 | a 和 a和 a和b的差 |
$a * $b | 相乘 | a 和 a和 a和b的积 |
$a / $b | 相除 | a 除以 a除以 a除以b的商 |
$a % $b | 取模,取余 | a 除以 a除以 a除以b的余数 |
++ $a | 前加 | a 的值加一,然后返回 a的值加一,然后返回 a的值加一,然后返回a |
$a ++ | 后加 | 返回 a ,然后 a,然后 a,然后a的值加一 |
– $a | 前减 | a 的值减一,然后返回 a的值减一,然后返回 a的值减一,然后返回a |
$a – | 后减 | 返回 a ,然后 a,然后 a,然后a的值减一 |
字符串运算符
字符串运算符完成的主要工作,就是字符串拼接。
在JS语言中,字符串拼接用+,运算符.的作用是访问对象中的属性或者方法。
PHP中,使用.
进行字符串拼接。PHP中.
也叫连接运算符。
<meta charset "utf-8">
<h1>字符串连接符</h1>
<?php
$name="XIU";
$str = "Hello,".Sname;
//$str "Hello,"+Sname;
var_dump($str);
?>
赋值运算符
左边的操作数必须是变量,右边可以是⼀个表达式,也可以是⼀个值,⼀个变量等等。
作用:将右边表达式的值赋给左边变量。
运算符 | 解释 |
---|---|
= | 赋值 |
+= | a+=b:a=a+b |
-= | a-=b:a=a-b |
*= | a*=b:a=a*b |
/= | a/=b:a=a/b |
%= | a%=b:a=a%b |
.= | a.=b:a=a连接b |
比较运算符
对操作数(按照比较运算符的要求,规则)进行比较后,得到返回值(boolean)。
如果比较出的结果满足比较运算符的要求那么结果就是true(真,成立,满足),否则就是false(假,不成立,不满
足)。
运算符 | 说明 | 备注 |
---|---|---|
$a == $b | 等于 | |
$a === $b | 全等 | 值相等并且数据类型相同 |
$a != $b | 不等 | |
$a <> $b | 不等 | |
$a !== $b | 不全等 | |
$a < $b | 小于 | |
$a > $b | 大于 | |
$a <= $b | 小于等于 | |
$a >= $b | 大于等于 |
PHP 中规定:使用echo 输出布尔类型值的时候 echo true ; 它在页面中会输出1。echo false ; 它会在页面中什么都不输出。建议使用var_dump() 来输出更明了的结果。
逻辑运算符
运算符 | 例子 | 解释 | 运算符法则 |
---|---|---|---|
and && | $a and $b $a && $b | 逻辑与运算 | |
or || | $a or $b a ∣ ∣ a|| a∣∣b | 逻辑或运算 | |
xor | $a xor $b | 逻辑异或运算 | 相同为假,不同为真 |
! | !$a | 逻辑非运算 |
其他运算符
?:
$a = 10;
$b = 20;
$max = $a > $b ? $a : $b;
echo $max;
反引号
自动适配系统命令,调用系统命令。
$cmd = "whoami";
$cmd = "ipconfig";
$cmd = "net user";
echo "<pre>".`$cmd`;
@
屏蔽表达式可能发生的错误。
流程控制
顺序执行
自上而下的执行即可,这也是PHP 语句的默认执行过程。对这个执行过程没有控制。
echo "This is first echo";
echo "<br />";
echo "This is second echo";
echo "<br />";
echo "This is third echo";
分支执行
分支执行可以根据表达式的值是否为True 来选择执行某些代码,PHP 的分支执行主要通过if 和switch 来实现。
if语句
if(){//判断条件,如果判断条件的返回值为True,则执行语句块1,否则执行语句块2
//语句块1
}else{
//语句块2
}
单向条件
// if.php
$score = 59.9;
if($score >= 60 ){
echo "congratulations";
}
双向条件
// if.php
$score = 99.9;
if($score >= 60 ){
echo "congratulations";
}else{
echo "Sorry, you may need help!";
}
多向条件
成绩定级脚本。
switch语句
功能与if 语句类似,当需要多向分支结构时,并且判断条件是具体的某个值,此时大多使用switch 结构。
<?php
$day = 7;
switch($day){
case 1:
echo "Monday";
break;
case 2 :
echo "Tuesday";
break;
case 3 :
echo "Wednesday";
break;
case 4 :
echo "Thursday";
break;
case 5:
echo "Friday";
break;
case 6:
echo "Saturday!";
break;
case 7:
echo "Sunday!";
break;
default:
echo "Error!";
}
?>
注意:
表达式的值最好是整形或者字符串。
不要忘记break 语句,用来跳出switch 语句。每个case 语句后面都加上break。
如果某个case 语句后⾯并没有接语句块,那么就说明这个语句块的内容是同下。
case 后面的语句块是不需要 {} 括起来的。
判断条件
在编写if 语句时,要求判断条件是⼀个布尔类型的值。但是实际应用中,是无法保障
这⼀点。如果判断条件是非布尔类型的值,就需要强制转换成布尔类型的值。如下:
// if.php
$flag = 0;
$flag = 0.0;
$flag = "";
$flag = "0";
$flag = array();
$flag = NULL;
$flag = "XIU";
$flag = true;
$flag = 24;
$flag = 59.9;
if($flag){
echo var_dump($flag)." means Ture";
}else{
echo var_dump($flag)." means False";
}
循环执行
while循环
while(表达式){//当表达式的值为真的时候,执行循环体。
//循环体
}
当表达式的值为true,就执行下面的循环体。当循环体执行结束之后,继续判断表达式的值是true 还是false,如果还是true,那么就继续执行循环体。直到,这个表达式的值为false,那么这个while 语句就执行结束了。
do while循环
// do-while.php
$a = 1;
do{
echo $a."<br />";
$a ++;
}while ($a <= 10);
for循环
for(;;){//计数器;判断条件;自增或自减
//循环体
}
特殊流程
break
break 用于switch,for,while,do…while,foreach 等的中断。后面可以接上⼀个数字来表示跳出几层循环。默认不加就是跳出当前循环语句。
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
break;
}
echo $i."<br />";
}
echo "PHP is DONE!";
continue
continue 只能用在循环语句,轮空本次循环,并不是结束整个循环语句。
// continue.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
continue;
}
echo $i."<br />";
}
echo "PHP is DONE!";
exit
exit 表示结束当前整个PHP 脚本的执行。同die() 语句。
// exit.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
// exit;
// exit("PHP is OVER");
// die("PHP is OVER");
die();
}
echo $i."<br />";
}
echo "PHP is DONE!";