您的位置:首页 > Web前端

前端PHP入门-005-爱情是常量还是变量

2016-08-07 10:50 387 查看
常量


常——汉语字面为:长久,经久不变。

常量那就好翻译了:长久不变的值。



常量的
使用范围非常广泛


我们在以后,定义我们的工作目录、定义一些特点的帐户密码、版本号等我们都会使用到常量。所以这一块的知识,非常重要。

常量在代码中的定义、书写方式:

define(常量名,常量值)

规则说明

常量值只能为上一章中我们讲到的标量

常量名可以小写,但是通常
大写


常量名可以不加引号,但是通常
加上引号


在字符串中调用常量的时候,
必须在引号外面


常量名建议只用
字母
下划线


代码实验室

定义和调用一次常量试试

<?php

define('MY_NAME','码迷码迷吽');


//页面输出

echo MY_NAME;


//下面是错误的调用方式

echo '我的名字是MY_NAME';


//正确的调用方式该这么写

echo '我的名字是' . MY_NAME;

?>

[/code]

注意项目实验

<?php

//其实可以小写,但是不好区分,所以我们规定通常大写

define('pangge',true);

echo pangge;


//常量可以在外面不加引号

define(PANG,'不要对未来迷茫,迷茫的时候静下心来coding');

echo PANG;


//---------------上面的代码建议忘记-------------------//


define('PANGSIR','coding很难,找个地方!');

echo PANGSIR;


//只能用标量 -- 去看看数据类型那章

//我在后面用了一个数组,大家学一下就行,会报错的哟

define('BIAO',array(1,2,3));

?>

[/code]

系统常量


简单接触几个系统常量,内置的常量很重要



常量说明
LINE
当前所在的行
FILE
当前文件在服务器的路径
FUNCTIOIN
当前函数名
CLASS
当前类名
METHOD
当前成员方法名
PHP_OSPHP运行的操作系统
PHP_VERSION当前PHP的版本
TRAIT
Trait 的名字,php5.4新加
DIR
文件所在的目录
NAMESPACE
当前命名空间的名称(区分大小写)

defined()
函数来做安全机制


简单看,简单报,不用掌握



defined()我们来学习这种用法,主是是为了防止其他人绕过安全检查文件。

函数:defined(常量)

功能:向函数的括号后面传入常量,如果常量定义了就返回true,否则返回false

【情景模拟】假设,我们的这套在线电子商城的软件需要付钱,检查是否付费是通过对软件授权检查来完成的,而文件version.php中就有检查授权的功能,我们在软件中规定,没有授权检查文件version.php就不能使用这个软件。所有的代码都包含了version.php。并且为了防止有人盗版,我还可以把version.php的
代码进行了加密


一个文件中间有版本号,版本声明和授权声明。文件名为version.php

一个文件中有具体的业务功能。例如:用户注册/登录等,文件名为users.php

我们该怎么做呢?——也就是说不包含 version.php文件就不让,执行users.php之后的代码。

version.php文件

<?php


//此处是检查是否是否授权的业务部份代码xxxx

define('AUTH',true);


//略过模拟代码xxx行,验证等等

?>

[/code]

users.php文件

<?php

//尝试将include 'version.php'这一行代码注释后再执行看看,对比结果

include 'version.php';


if(!defined('AUTH')){

echo '非法!非法!你尝试跳过授权文件';

exit;

}


//模拟后面用户注册和用户登陆的代码xxx行

echo '用户注册';

?>

[/code]

实验结果可知:version.php必须要包含 ,不然不会显示后面的echo '用户注册';


include 很重要

defined 很重要



# 可变变量


可变变量,这个词解释的太过于高大上,又叫作变量的变量。

可变变量其实就是——已声明的变量前,再上
变量符




代码:

<?php 

//定义了一个变量叫作 $pang 将$pang这个变量的值设为字符串的sir

$pang = 'sir';

//定义了一个【变量】$sir。将他的值设置为胖先生

$sir = '胖先生';


//$$pang 就是`可变变量`:在已声明的变量$pang前又加上了一个变量符

echo$$pang;

?>

[/code]

代码解释

$$pang

${$pang} 分成两块来看

${'pang'} 把变量$pang解释成了sir

$sir 而$sir也是一个变量对应的值是:胖先生

[/code]

猜一猜,(^__^) 嘻嘻……

<?php

$pang = 'sir';

$sir = 'wo';

$wo = 'big';

$big = 'love';

$love = 'wu';

$wu = 'di';

$di = '大爱无敌,请打赏';

//别运行,自己去推理一下代码。也写几个可变变量玩玩吧!

echo $$$$$pang;

?>

[/code]

偷偷说一句: WEB前端的各位学生,看一看就行了!


外部变量


别问为什么?就像你为什么要吃饭的问题一样?

PHP的外部变量是PHP在使用过程中
规定好
的一些变量。

这个变量的规定是这样规定的,就这样使用。



代码实验室

1.经典示例:注册 user.html

<html>

<head>

</head>


<body>

<form action="reg.php" method="get">

<input type="text" name="account" />

<input type="password" name="password" />

<input type="submit" value="提交数据" />

</form>

</body>

</html>

[/code]

没有什么可说的:

在这段代码的主要意思是把用户和密码,采用get方法,将数据发送给reg.php(在上面代码的第6行规定的)。

reg.php想办法接收用户传过来的 account 和 password 这两个值

注:

1.注意地址栏的变化

2.表单想要传递数据,控件包含name属性


2.外部变量:$_GET


$_GET 的主要作用是将得到
get
传值的数据。

method='get' 这就是get请求



程序处理:reg.php

<?php

//$_GET后面加上中括号,将 account 作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="account" /> 的值

$account = $_GET['account'];

echo $account.'<br />';//胶水


//$_GET['password'] 得到表单<input type="text" name="password" /> 的值

$password = $_GET['password'];

echo $password.'<br />';

?>

[/code]

结果说明:



图文代码分析

reg.php后面跟了一个?(问号)

表单里面的 account 变在了地址栏里面

表单面 account 的值输入的是 pangsir,在 account 后面跟了个=(等号)输入的值

account(名字)= pangsir(值) 后面的密码是 password(名字)=lovephp(值),中间有&(and符)分开

密码是可见的,那怎么样保证安全呢。让我在注册的过程当中,密码不在地址栏里面被人看到呢?

这个时候我们需要使用到post传值,
post传值是在地址栏中不可见的


同样上面例子的代码我们进行修改,html代码如下:

<html>

<head>

</head>


<body>

<!-- 这一行method 对应的值改为了post -->

<form action="reg.php" method="post">

<input type="text" name="account" />

<input type="password" name="password" />

<input type="submit" value="提交" />

</form>

</body>

</html>

[/code]

第二个外部变量: $_POST

<?php

$account = $_POST['account'];

echo '您的输入的账号为: '.$account.'<br />';


$password = $_POST['password'];

echo '请保管好你的密码: '.$password.'<br />';

?>

[/code]

运行结果:



代码继续说:

reg.php后的?(问号)不见了。后面的account和password也不见了。那他怎么传递数据的呢?

它是通过我们看不见的浏览器的请求头文件传递的数据。所以在URL(网址)栏不可见。

:附录中有如何通过火狐浏览器的
firebug
查看传递结果的演示过程。这一块都是HTTP协议规定的传送方式。

除此之外,我们还有$_REQUEST来接收数据。现在我们这样处理:

将php代码段中的POST全改为" role="presentation" style="position: relative;">POST全改为POST全改为_REQUEST,代码如下:

第三个外部变量: $_REQUEST

<?php

$account = $_REQUEST['account'];

echo $account.'<br />';


$password = $_REQUEST['password'];

echo $password.'<br />';

?>

[/code]


分别测试get和post请求,使用这种方式



通过上面的实验你会发现$_REQUEST即可以接收get传值也可以接收post传值。

邪恶了!大小通吃!


超全局外部变量

全局变量名功能说明
$_COOKIE
得到会话控制中cookie传值
$_SESSION
得到会话控制中session的值
$_FILES
得到文件上传的结果
$_GET
得到get传值的结果
$_POST
得到post传值的结果
$_REQUEST
即能得到get的传值结果,也能得到Post传值的结果
了解含义,以后讲解超全局的含义


变量引用


变量引用很多老师喜欢来用C语言的指针来去讲解。

我们作为有这么多年开发和教学经验的人来说——大多数学习PHP的人来说根本不了解C语言。

使用C语言一指针来讲解变量引用,我们觉得画蛇填足。并且,不利于没有C语基础的朋友们学习。



关于变量引用的知识点,请以我们的讲解为理解的基准:

我们来测试两端,方便我们的测试

第一段代码

<?php


$fo = 5;

//$fo的值为5,将5赋值

$bar = $fo;

//$bar的值原来为5,现在将值改为6

$bar = 6;

//$bar的结果为6

echo $bar.'<br />';

//$fo的结果为5

echo $fo.'<br />';

?>

[/code]

第二段代码

<?php


$fo = 5;

//注意,加上了一个&符哟

$bar = &$fo;


$bar = 6;

//$bar的结果为6

echo $bar.'<br />';

//$fo的结果为6

echo $fo.'<br />';


?>

[/code]

为什么两个结果都变成6了呢?

我经常跟大家这样来举例。我们可以这样来想象:
一个变量名,对应了一个数据值


如下图:



而加上
&
(and 符后),把变量指向同一个存值空间了,如下图:




也就是不论fo或" role="presentation" style="position: relative;">fo或fo或bar的值如何发生变化,fo变" role="presentation" style="position: relative;">fo变fo变bar也变,bar发生变化," role="presentation" style="position: relative;">bar发生变化,bar发生变化,fo也会发生变化。



来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: