基础语法复习——PHP

2019-03-25  本文已影响0人  哈尼橘橘

What's PHP ?

Hypertext Preprocessor(超文本预处理器),是一种脚本语言,PHP脚本在服务器上运行,结果以纯HTML形式返回给浏览器。
PHP可以对服务器上的文件进行操作,也可以对数据库中的数据进行操作。

关于运行的服务器,可以考虑一下phpStudy呀~配置简单易上手

PHP基础语法

<?php   //这是开头
//这是单行注释

header("Content-Type: text/html;charset=utf-8");

/* 这是
多行注释*/

echo "这是用echo直接输出,","可以输出多个字符串,","比print看起来优秀一点","<br>";
print "这是用print直接输出,只能输出一个字符串";

//这是结尾 ?> 

变量及数据类型

变量作用域

example:
<?php
header("Content-Type: text/html;charset=utf-8");

$x = 9; //这是一个全局变量
echo "全局变量x的值为:$x";
echo "<br>";
echo "<br>";

function demo(){
    $y = 12;  //这是一个局部变量
    echo "局部变量y的值为:$y";
    echo "<br>";

    global $x;  //使用global,在函数内引用全局变量
    $z = $x + $y;
    echo "全局变量x和局部变量y的和为:$z";
    echo "<br>";

    $m = $GLOBALS['x'] + 2 * $y;  //也可以用$GLOBALS[]数组的形式,引用全局变量
    echo "第二种引用全局变量方式的结果为:$m";
    echo "<br>";

}

function demo2(){
    static $n = 1;  //这是一个加了static关键字的局部变量
    echo "加了static关键字的局部变量第","$n","次输出是:$n";
    $n++;
    echo "<br>";
}

demo();
echo "<br>";
demo();
echo '<p style="color:red">由此可见,当一个函数完成时,它的所有变量一般都会被删除。</p>';

demo2();
demo2();
demo2();
echo '<p style="color:red">由此可见,加了static的局部变量,每次调用该函数时,会保留前一次被调用结束时的值。</p>';
?>
效果如下:

PHP将所有全局变量存储在数组$GLOBALS[index]的数组中,index保存变量的名称。

PHP对象类似JAVA对象,看一眼就行。

常量

define,类似C语言中的define。语法:
bool define(string $name,mixed $value[, bool $case_insensitive = false])
参数:
name,参数名,必选;
value,参数值,必选;
case_insensitive:大小写敏感,默认为false大小写敏感,可选。

example:
<?php
header("Content-Type: text/html;charset=utf-8");

define("a","Fine");  //默认,大小写敏感
define("B","Fine",false);  //设置为false,大小写敏感
define("C","Fine",true);  //设置为true,大小写不敏感

echo A,"<br>";
echo a,"<br>";

echo B,"<br>";
echo b,"<br>";

echo C,"<br>";
echo c;
?>
运行结果:

运算符

算数运算符、赋值运算符、递增/递减运算符、比较运算符、逻辑运算符、三元运算符与C语言类似。

数组运算符
example:
<?php
$x = array('a' =>"cat", 'b' =>"orange", 'm' =>"fine");
$p = array('a' =>"cat", 'b' =>"orange", 'm' =>"fine");
$y = array('c' =>"rabbit", 'd' =>"white", 'm' =>"fine");
$q = array('c' =>"rabbit",'m' =>"fine", 'd' =>"white");

$z = $x + $y; //合并x、y两个数组;


//var_dump()函数用于输出表达式的类型和值
var_dump($z);  //输出合并后的数组z,做并集
echo "<br>","<br>";
var_dump($x == $y);  //比较两个数组,如果所有键/值对相等,不管顺序是否相同,就返回true
echo "<br>";
var_dump($y ==$q);
echo "<br>","<br>";
var_dump($x === $p);  //比较两个数组,键/值对和顺序完全相同才返回true
echo "<br>";
var_dump($x === $y);
echo "<br>","<br>";
var_dump($x != $y);  //比较两个数组,如果不相等,则返回true
echo "<br>";
var_dump($x <> $y);
echo "<br>";
var_dump($x !== $y);

?>
运行结果:

超全局变量

这是PHP 4.1.0之后系统中自带的变量,在一个脚本的全部作用域中都可用。

$GLOBALS

超级全局变量组。
在前面变量作用域中有提到,这里做一个简单的演示。

<?php
$x = "Flexible";
$y = "Cat";

function globalsDemo(){
    $GLOBALS['z'] = $GLOBALS['x'].$GLOBALS['y']; //z在这里也被定义为全局变量
    echo $z; //这样是不行的,因为z是全局变量
    echo $GLOBALS['z'];
}

globalsDemo();
echo "<br>";
echo $z; //在函数外直接用$z是可以的
?>
运行结果:
$_SERVER

包含了服务器、当前脚本等部分信息,是数组,数组中的项目由Web服务器创建。
示例:

<?php
echo $_SERVER['PHP_SELF'], "<br>"; //返回当前脚本的相对地址
echo $_SERVER['SCRIPT_FILENAME'], "<br>";  //返回当前脚本的绝对地址
echo $_SERVER['SERVER_ADDR'], "<br>";  //返回当前脚本所在服务器的IP地址
echo $_SERVER['SERVER_NAME'], "<br>";  //返回当前运行脚本所在服务器的主机名
echo $_SERVER['SERVER_SOFTWARE'], "<br>";  //返回服务器表示字符串
?>
运行结果:

更多元素及其含义可以需要时找度娘。

$_REQUEST

收集HTML表单提交的数据,不论method为POST还是GET都可以。。
示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>requestDemo</title>
</head>
<body>
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']?>">
        <!--action的值表示,在当前脚本页面显示结果-->

        Lover:<input type="text" name="someone">
        <input type="submit">
    </form>

    <?php
    @$name = htmlspecialchars($_REQUEST['someone']); 
    echo "My lover is ".$name;
    ?>

</body>
</html>
运行结果:
$_POST

收集来自表单中method="post"的表单值,用POST方法的表单发送的值不会在浏览器的地址栏显示,并且发送的信息量也无限制。
示例:

example8.php:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>postDemo</title>
</head>
<body>
    <form action="Hey.php" method="post">
        Who are you?<input type="text" name="fname">
        <input type="submit" value="OK">
    </form>
</body>
</html>
Hey.php:
<?php
    echo "Hey ".$_POST["fname"].", you are soooo pretty~";
?>
运行结果:
$_GET

收集来自表单中method="get"的表单值,用GET方法的表单发送的值会在浏览器的地址栏显示,并且发送的信息不能超过2000个字符。
示例代码仅将上一个示例中的POST改成GET。

运行结果:
$_FILES

用于从客户端向远程服务器上传文件。语法:

$_FILES["file"]["name"]  //客户端上传文件的名称
$_FILES["file"]["type"]  //所上传的文件类型
$_FILES["file"]["size"]  //所上传的文件大小
$_FILES["file"]["temp_name"]  //上传的文件保存在服务器中的临时文件名,无法用putenv()方法设置
$_FILES["file"]["error"]  //和该文件上传相关的错误代码

具体可以扒CTF中的文件上传类题型源码来看,本胖这里就暂时不写了,还不是因为懒

$_ENV

存储了一些系统的环境变量,使用<?php print_r($_ENV); ?>查看,但是因为牵扯到实际的操作系统,所以一般情况下不可能让你查看它的完整列表。

讲道理这样是没问题的,但是我也不知道为什么我的虚拟机里不行,怂的不敢在本机上瞎折腾,各位看官们了解一下就好。

$_COOKIE

cookie一般用来识别用户,使用setcookie()创建cookie,语法:
setcookie(name, value, expire, path, domain)
$_COOKIE变量就是用来获取cookie的值的。
删除cookie时,将过期日期变成过去的时间点就行啦。

这一块的示例,回(随)头(缘)再补吧

$_SESSION

session变量用来临时存储关于单一用户会话的信息,或者更改用户会话的设置。
session工作机制:为每位用户创建一个唯一的UID,并根据这个UID来存储变量。UID存储在cookie中,或者通过URL进行传导。

unset($_SESSION['UID']);  //释放制定的session变量
session_destroy(); //彻底销毁所有的session

包含

俩函数,include和reqire,语法:
include 'filename'; require 'filename';
区别:

今天的白小胖也很优秀(≧∇≦)/

上一篇 下一篇

猜你喜欢

热点阅读