PHP基礎教程七之計算器的實現

本節講解的內容

  • 計算器的實現
  • 超全局變量
  • 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代碼進行嵌套,數據和頁面進行一起的開發,什麼模式都沒用到。

總結

計算機的案列幾乎包含了前面的所學,把所有的都化爲己用。學習過得知識要學會運用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章