本節講解的內容
- 計算器的實現
- 超全局變量
- html中嵌套php代碼
前言
PHP語言是開發服務器端的語言,是對數據的處理,PHP的開發不可避免的要與前臺的頁面進行交互,從而進行數據的傳遞。那我們是怎麼從前臺獲取數據並傳遞到後臺的呢?它們利用http協議進行信息的傳輸。可以看另外一邊博客http://blog.csdn.net/li741350149/article/details/52621814。
而今天的計算器的案例,設計到數據的前後臺數據的傳輸。它的大致功能是在前臺的頁面填寫數據,提交到後臺,後臺處理完數據,再返回到前臺。
計算器的實現
前臺的一個html頁面CalculatingMachine.php
<?php
$value = isset($_GET['value']) ? $_GET['value'] : '';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>計算器的實現</title>
</head>
<style type="text/css">
.cm{
text-align:center;
margin-top:100px;
line-height:30px;
}
</style>
<body>
<div class = 'cm'>
<form action="NumCount.php" method="post">
數字1:<input type="text" name="num1"><br>
數字2:<input type="text" name="num2"><br>
<select name = 'oper'>
<option value = 'plus'>+</option>
<option value = 'subtract'>-</option>
<option value = 'multiply'>*</option>
<option value = 'divided'>/</option>
</select><br>
<input type="submit" value="計算">
</form>
<p><?php echo $value;?></p>
</div>
</body>
</html>
前臺頁面是對用戶的輸入數據通過post方式傳遞到後臺的NumCount.php,在前臺的文件後綴名是php結尾的,這是因爲當後臺處理的數據傳到前臺進行數據的顯示,最重要的一點,以php爲後綴名的文件可以寫html代碼,但是以html爲後綴名的文件不可以寫php代碼(可以在配置文件中設置);
後臺的處理頁面:NumCount.php
<?php
//引入運算的函數
require_once './function.php';
//從html頁面得到數據
$num1 = isset($_POST['num1']) ? $_POST['num1'] : 0;
$num2 = isset($_POST['num2']) ? $_POST['num2'] : 0;
$oper = isset($_POST['oper']) ? $_POST['oper'] : '';
//判斷是否是數字
if(!is_numeric($num1) || !is_numeric($num2)){
echo "<script>alert('請輸入數字')</script>";
Header("Refresh:0;url = ./CalculatingMachine.php");
}
//得到計算後的值
$value = 0;
//通過switch判斷是那種運算
switch($oper){
case 'plus':
$value = plus($num1,$num2);
break;
case 'subtract':
$value = subtract($num1,$num2);
break;
case 'multiply':
$value = multiply($num1,$num2);
break;
case 'divided':
$value = divided($num1,$num2);
break;
default:
echo '';
}
//把計算後的值傳遞給前臺。
Header("Refresh:0;url = ./CalculatingMachine.php?value={$value}");
後臺的接受頁面,因爲是通過post方式進行數據的提交,所以可以通過超全局變量$_POST[]得到數據,並進行數據的驗證,當不是數字的時候,彈出對話框進行提示,並通過header跳轉到前臺。
在後臺對數據的操作函數是封裝到了一個文件中的,通過引入文件進行使用,
運算的函數封裝到一個文件中:function.php
<?php
//加
function plus($num1,$num2){
return $num1 + $num2;
}
//減
function subtract($num1,$num2){
return $num1 - $num2;
}
//乘
function multiply($num1,$num2){
return $num1 * $num2;
}
//除
function divided($num1,$num2){
return $num1 / $num2;
}
前臺的頁面:
後臺處理數據後傳到前臺:
超全局變量
在上面的後臺的代碼中可以看到接受數據是通過超全局變量$_POST[],進行接受數據的。那麼在PHP中什麼是超全局變量,他們又有什麼作用?
PHP 中的許多預定義變量都是“超全局的”,這意味着它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行 global $variable; 就可以訪問它們。
PHP中超全局的分類:
$GLOBALS 一個包含了全部變量的全局組合 數組 。變量的名字就是數組的鍵。這就表示其在腳本的所有作用域中都是可用的。不需要在函數或方法中用 global $variable; 來訪問它。
<?php $a = 12; //整型 $str = '超全局變量'; $arr = array(1,2,3,4); //數組 var_dump($GLOBALS['a']); echo '<br>'; var_dump($GLOBALS['str']); echo '<br>'; var_dump($GLOBALS['arr']);
可以看到在上面中超全局變量$GLOBALS自動保存了代碼中的變量。
$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數組。這個數組中的項目由 Web 服務器創建。不能保證每個服務器都提供全部項目;服務器可能會忽略一些,或者提供一些沒有在這裏列舉出來的項目。
這個超全局變量和http協議也有些關係,在這個變量中,我們可以得到我們在進行數據傳輸時的一些信息。<?php echo $_SERVER['SERVER_ADDR']; ......結果....... 127.0.0.1
上面只是server中的其中一個值而已,得到服務器的ip地址,別的值可以查看幫助文檔。
$_GET[] 通過 URL 參數傳遞給當前腳本的變量的數組。 在網頁的傳輸數據是,常用的有兩種方式,一個GET和一個POST,而這個超全局變量就是保存通過GET方式傳的值
$_POST[] 通過 HTTP POST 方法傳遞給當前腳本的變量的數組,當通過POST方式傳遞數據的時候,這個超全局變量就會接受
- $_REQUEST[],在上面兩個超全局變量根據不同的傳遞方式,存儲不同的值,而這個變量是兩種傳遞方式的數值都會保存。
以下的超全局變量在以後中會慢慢介紹
- $_FILES[] 文件上傳變量,通過 HTTP POST 方式上傳到當前腳本的項目的 數組 。 在後面的文件上傳時,再詳細介紹。
- $_COOKIE[] 通過 HTTP Cookies 方式傳遞給當前腳本的變量的 數組
- $_SESSION[] 當前腳本可用 SESSION 變量的數組。更多關於如何使用的信息,可以通過 Session 函數進行了解。
上面的就是PHP中的超全局變量,在開發中我們會隨時和他們打交道。
html中嵌入php代碼
在上面計算器的前臺代碼中我們可以看到,當數據處理完傳遞到前臺後,通過在p標籤中寫php代碼來顯示數據。從中我們可以看到php是怎麼嵌套在html代碼中
<?php code?>
在這裏的開發都是php代碼和html代碼進行嵌套,數據和頁面進行一起的開發,什麼模式都沒用到。
總結
計算機的案列幾乎包含了前面的所學,把所有的都化爲己用。學習過得知識要學會運用。