基础语法复习——PHP

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"]  //和该文件上传相关的错误代码
  • 在表单中需要上传文件时,用enctype属性规定提交表单时要使用的内容类型。文件内容属于二进制数据,所以需要使用multpart/form-data。
  • 允许用户上传文件是由很大的安全风险的,在编写上传脚本时最好加上文件的上传限制。

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

$_ENV

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

  • 如果非要看的话,那么,打开php.ini
  • 改成EGPCS,就OK了。

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

$_COOKIE

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

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

$_SESSION

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

  • 在php中使用session必须在<html>标签前加上<?php session_start(); ?>,这样就会向服务器注册用户的会话,为用户会话分配一个UID;
  • 存储和获取session变量的值都是使用$_SESSION变量完成,_SESSION['UID']
  • 销毁session时,可以用unset()释放指定的session变量,也可以用session_destroy()函数彻底销毁session。
unset($_SESSION['UID']);  //释放制定的session变量
session_destroy(); //彻底销毁所有的session

包含

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

  • include一般放在程序的流程控制中,当程序执行遇到时才会引用;require一般放在PHP文件的最前面,在程序执行前就导入要引用的文件。
  • include引入的文件有错误时,不会中断,继续执行,返回一个警告;require引入的文件有错误时,执行终端,返回一个错误。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • PHP语言是一门后端语言(Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源...
    PHPer_阅读 471评论 1 2
  • 第3章学习了如何编写JavaScript代码来动态修改网页内容。 虽然JavaScript功能很强大,可以修改网页...
    学哥量化交易学习阅读 809评论 1 2
  • 1.PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用...
    黄花菜已凉阅读 3,543评论 1 6
  • 转自陈明乾的博客,可能有一定更新。 转原文声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、...
    C86guli阅读 4,679评论 6 72
  • 你的喜好凸显了你的性格,有的人喜欢喝茶,性格如茶般甘醇,宁静; 有的人喜欢书法,性格如笔尖的字一般,行云流水,有棱...
    爱雪琪琪阅读 330评论 0 1