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和 ab的和
$a - $b 相减 a 和 a和 ab的差
$a * $b 相乘 a 和 a和 ab的积
$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!";