php常數和變數之用常數限制使用者跳過某些文件

常-漢語字面為:長久,經久不變。

常數就好翻譯了:長久不變的值。

【重點知識】知識層級我們定義為:默寫級

常數的使用範圍非常廣泛。我們在以後,定義我們的工作目錄、定義一些特點的帳戶密碼、版本號碼等我們都會使用到常數。所以這一塊的知識,非常重要。

常數在程式碼中的定義、書寫方式:

define(常數名,常數值)

##註:

1.常數值只能為上一章我們講到的標量。

    2.常數名可以小寫,但是通常大寫

    3.常數名可以不加引號,但通常加上引號。

    4.在字串中呼叫常數的時候,必須在引號外

    5.常數名建議只用字母和底線

我們用程式碼來實驗一下:

1.定義並呼叫一次常數試試看

<?php

define('MY_NAME','PHP中文网');

echo MY_NAME;
//下面是错误的调用方式
echo '我的名字是MY_NAME';
//正确的调用方式该这么写
echo '我的名字是' . MY_NAME;
?>

2.注意專案實驗

<?php
//其实可以小写,但是不好区分,所以我们规定通常大写
define('xiaoxie',true);
echo xiaoxie;

//常量可以在外面不加引号
define(YH,'不要对未来迷茫,迷茫的时候静下心来coding');
echo YH;

//只能用标量,我在后面用了一个数组,大家学一下就行,会报错的哟
define('BIAO',array(1,2,3));

?>

此外,系統也為我們準備了一些內建的常數。這些常量都是規定好的。我們先熟悉幾個,還有更多的系統常數我們學習完上冊,入門後再慢慢的增加和學習。

常數名稱說明##LINE##目前類別名稱目前成員方法名稱PHP_OSPHP運行的作業系統目前PHP的版本Trait 的名字,php5.4新加#檔案所在的目錄## NAMESPACE
#LINE#目前所在的行
FILE#目前檔案在伺服器的路徑
FUNCTIOIN目前函數名稱
#CLASS
METHOD
PHP_VERSION
TRAIT
DIR
######目前命名空間的名稱(區分大小寫)############

defined()函數來做安全機制

這裡知識,可以眼前不用掌握。學習完函數後,再來看本部程式碼也可以。

defined()我們來學習這種用法,主是為了防止其他人繞過安全檢查檔案。

函數:defined(常數)
功能:向函數的括號後面傳入常數,如果常數定義了就回傳true,否則回傳false

【情境模擬】假設,我們的這套線上電子商城的軟體需要付錢,檢查是否付費是透過對軟體授權檢查來完成的,而文件version.php中就有檢查授權的功能,我們在軟體中規定,沒有授權檢查文件version. php就不能使用這個軟體。所有的程式碼都包含了version.php。而且為了防止有人盜版,我還可以把version.php的程式碼進行了加密。

我們有兩個檔案:

1.一個檔案中間有版本號,版本宣告和授權宣告。檔案名稱為version.php

2.一個檔案中有具體的業務功能。例如:使用者註冊、登陸等,檔案名稱為users.php

我們該怎麼做呢? ——也就是說不包含 version.php檔案就不讓,執行users.php之後的程式碼。

我們來進行實驗:
version.php檔案

<?php

//此处是检查是否是否授权的业务部份代码xxxx
define('AUTH',true);

//略过模拟代码xxx行

?>

users.php

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

if(!defined('AUTH')){
   echo '非法!非法!你尝试跳过授权文件';
   exit;
}


//模拟后面用户注册和用户登陆的代码xxx行
echo '用户注册';
?>

實驗結果可知:version.php必須包含,不然不會顯示後面的echo '用戶註冊';


include
讀音:[ɪnˈklud]
解釋:包含

version
讀音:[ˈvɜ:ʃn]
解釋:版本

user
讀音:[ˈjuzɚ]
解釋:使用者
複數:users

define
讀音:[dɪˈfaɪn]
解釋:規定

函數:include('傳入檔案路徑和檔案名稱')
功能:這個函數的功能是傳入指定路徑的文件,讓PHP包含進來執行
注意:在後面的章節中會特別解說和實驗include

繼續學習
||
<?php define('MY_NAME','PHP中文网'); echo MY_NAME; //下面是错误的调用方式 echo '我的名字是MY_NAME'; //正确的调用方式该这么写 echo '我的名字是' . MY_NAME; ?>