後端編程語言PHP

 

| 版權聲明:本文爲博主原創文章,未經博主容許不得轉載。

 

1、PHP 簡介php

PHP 是一種建立動態交互性站點的強有力的服務器端腳本語言html

PHP 腳本在服務器上執行。數據庫

什麼是 PHP(超文本預處理器)數組

  • PHP "PHP Hypertext Preprocessor" 的首字母縮略詞
  • PHP 是一種被普遍使用的開源腳本語言
  • PHP 腳本在服務器上執行
  • PHP 沒有成本,可供免費下載和使用

什麼是 PHP 文件?瀏覽器

  • PHP 文件可以包含文本、HTMLCSS 以及 PHP 代碼
  • PHP 代碼在服務器上執行,而結果以純文本返回瀏覽器
  • PHP 文件的後綴是 ".php"

PHP 可以作什麼?服務器

  • PHP 可以生成動態頁面內容
  • PHP 可以建立、打開、讀取、寫入、刪除以及關閉服務器上的文件
  • PHP 可以接收表單數據
  • PHP 可以發送並取回 cookies
  • PHP 可以添加、刪除、修改數據庫中的數據
  • PHP 可以限制用戶訪問網站中的某些頁面
  • PHP 可以對數據進行加密
  • 經過 PHP,您能夠不受限於只輸出 HTML。您還可以輸出圖像、PDF 文件、甚至 Flash 影片。您也能夠輸出任何文本,好比 XHTML XML

爲何使用 PHPcookie

  • PHP 運行於各類平臺(Windows, Linux, Unix, Mac OS X 等等)
  • PHP 兼容幾乎全部服務器(Apache, IIS 等等)
  • PHP 支持多種數據庫
  • PHP 是免費的。請從官方 PHP 資源下載:www.php.net
  • PHP 易於學習,並可高效地運行在服務器端

 

2、PHP 語法網絡

PHP 腳本在服務器上執行,而後向瀏覽器發送回純 HTML 結果。函數

  • PHP 腳本可放置於文檔中的任何位置。
  • PHP 腳本以 <?php 開頭,以 ?> 結尾:
1 <?php
2 // 這是單行註釋
3 # 這也是單行註釋
4 /*
5 這是多行註釋塊
6 它橫跨了
7 多行
8 */
9 ?>
  • PHP 文件的默認文件擴展名是 ".php"
  • PHP 文件一般包含 HTML 標籤以及一些 PHP 腳本代碼。
  • php的邏輯代碼不會輸出,僅僅只會返回執行完畢的結果

 

3、PHP 基礎工具

1.變量

  • 變量以$符號開頭,其後是變量的名稱
  • 變量名稱必須以字母或下劃線開頭
  • 變量名稱不能以數字開頭
  • 變量名稱只能包含字母數字字符和下劃線(A-z0-9 以及_
  • 變量名稱對大小寫敏感
 1 // 變量以`$`符號開頭,其後是變量的名稱
 2 // 變量名稱必須以字母或下劃線開頭
 3 $a;
 4 $b;
 5 $a1;
 6 $_abc;
 7 
 8 // 變量名稱不能以數字開頭
 9 // 變量名稱只能包含字母數字字符和下劃線(`A-z`、`0-9` 以及` _`)
10 // 下面這些是錯誤的變量定義
11 $1;
12 $哈哈;
13 $^&*;
14 
15 //變量名稱對大小寫敏感(`$y` 與`$Y` 是兩個不一樣的變量)
16 // 下面定義的兩個變量是不一樣的,大寫,小寫x
17 $x;
18 $X;

2.內容輸出

  • echo:輸出簡單數據類型,如字符串、數值
  • print_r():輸出複雜數據類型,如數組
  • var_dump():輸出詳細信息,如對象、數組
 1 $arr =array(1,2,'123');
 2 echo'123';
 3 // 結果爲 123
 4 
 5 print_r($arr);
 6 // 結果爲 Array ( [0] => 1 [1] => 2 [2] => 123 )
 7 
 8 var_dump($arr);
 9 /* 結果爲array
10 0 => int 1
11 1 => int 2
12 2 => string '123' (length=3)
13 */

3.數據類型

  • PHP支持的數據類型包括:字符型、整型、浮點型、布爾型、數組、對象、NULL
  • 定義字符串時須要注意:
  • 單引號:`` 內部的內容只是做爲字符串
  • 雙引號:"" 若是內部是PHP的變量,那麼會將該變量的值解析
  • 字符串鏈接:不一樣於JavaScript,PHP中使用.進行鏈接
  • gettype() 檢測數據類型
  • is_string() 是不是字符
  • is_array() 是不是數組
 1 // 字符串
 2 $str = '123';
 3 
 4 // 字符串鏈接
 5 $str2 = '123'.'哈哈哈';
 6 
 7 // 字符串
 8 
 9 // 整數
10 $numA = 1; //正數
11 $numB = -2;//負數
12 
13 // 浮點數
14 $x = 1.1;
15  
16 // 布爾
17 $a = true;
18 $b = false;
19 
20 // 數組
21 $arr = array('123',123)

4.運算符

  • 基本與Javascript語法一致
  • 算數運算符: +,-,/,*,%
  • 賦值運算符: x = y,x += y,x -= y 
  • . 號表示連接符
  • 分支、循環語句
  • Javascript基本一致
  • foreach()
  • switch()
1 <?php
2 $x=10;
3 $y=6;
4 echo ($x + $y); // 輸出 16
5 echo ($x - $y); // 輸出 4
6 echo ($x * $y); // 輸出 60
7 echo ($x / $y); // 輸出 1.6666666666667
8 echo ($x % $y); // 輸出 4
9 ?>

 

5.函數

  • Javascript基本一致
  • 函數名對大小寫不敏感
  • 默認參數
  • 文件引入
  • include 引入失敗後程序繼續執行
  • require 引入失敗後程序終止執行
 1 // 基礎語法
 2 function functionName() {
 3   這裏寫代碼
 4 }
 5 
 6 // 無參數 無返回值的函數
 7 function sayhi(){
 8     echo "Hello World";
 9 }
10 
11 // 有參數 無返回值的函數
12 function sayName($name){
13     echo $name.'你好哦';
14 }
15 
16 // 調用
17 sayName('小狐狸');
18 
19 // 有參數,參數有默認值的函數
20 function sayFood($food='西蘭花'){
21     echo $food.'好好吃';
22 }
23 
24 // 調用
25 sayFood('西葫蘆');// 若是傳入參數,就使用傳入的參數
26 sayFood();// 若是不傳入參數,直接使用默認值
27 
28 // 有參數,有返回值的函數
29 function sum($a,$b){
30     return $a+$b
31 }
32 sum(1,2);// 返回值爲1+2 = 3

6.超全局變量

  • $_GLOBALS ---引用全局做用域中可用的所有變量
  • $_SERVER ---這種超全局變量保存關於報頭、路徑和腳本位置的信息。
  • $_GET ---用於收集提交 HTML 表單 (method="get") 以後的表單數據。$_GET 也能夠收集 URL 中的發送的數據。
  • $_POST ---普遍用於收集提交 method="post" HTML 表單後的表單數據。$_POST 也經常使用於傳遞變量。
  • $_REQUEST ---用於收集 HTML 表單提交的數據。
  • $_FILES ---經過使用 PHP 的全局數組 $_FILES,你能夠從客戶計算機向遠程服務器上傳文件。
  • $_COOKIE
  • $_SESSION
  • $_ENV

 

7.表單處理

  • 表單name屬性的是用來提供給服務端接收所傳遞數據而設置的
  • 表單action屬性設置接收數據的處理程序
  • 表單method屬性設置發送數據的方式
  • *當上傳文件是須要設置 enctype="multipart/form-data"
  • $_GET接收 get 傳值
  • $_POST接收 post 傳值
  • $_FILES接收文件上傳

GET POST 都建立數組(例如,array( key => value, key2 => value2, key3 => value3, ...))。此數組包含鍵/值對,其中的鍵是表單控件的名稱,而值是來自用戶的輸入數據。

1$_GET 是經過 URL 參數傳遞到當前腳本的變量數組。

2$_POST 是經過 HTTP POST 傳遞到當前腳本的變量數組。

什麼時候使用 GET

經過 GET 方法從表單發送的信息對任何人都是可見的(全部變量名和值都顯示在 URL 中)。GET 對所發送信息的數量也有限制。限制在大於 2000 個字符。不過,因爲變量顯示在 URL 中,把頁面添加到書籤中也更爲方便。

GET 可用於發送非敏感的數據。

註釋:毫不能使用 GET 來發送密碼或其餘敏感信息!

什麼時候使用 POST

經過 POST 方法從表單發送的信息對其餘人是不可見的(全部名稱/值會被嵌入 HTTP 請求的主體中),而且所發送信息的數量也無限制

此外 POST 支持高階功能,好比在向服務器上傳文件時進行 multi-part 二進制輸入。

不過,因爲變量未顯示在 URL 中,也就沒法將頁面添加到書籤。

提示:開發者偏心 POST 來發送表單數據。

<form> 標籤的 enctype 屬性規定了在提交表單時要使用哪一種內容類型。在表單須要二進制數據時,好比文件內容,請使用 "multipart/form-data"

<input> 標籤的 type="file" 屬性規定了應該把輸入做爲文件來處理。舉例來講,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。

 

8.header

header()函數 用來向客戶端(瀏覽器)發送報頭,若是出現中文沒法顯示,能夠嘗試在PHP代碼頂部添加以下代碼

header("content-type:text/html; charset=utf-8");

瀏覽器訪問http服務器,接收到響應時,會根據響應報文頭的內容進行一些具體的操做,php,咱們可以使用 header來設置這些內容

1設置文本編碼

設置編碼格式爲:utf-8

header('content-type:text/html; charset= utf-8');

2設置頁面跳轉

設置跳轉到百度首頁

header('location:http://www.baidu.com');

3設置頁面間隔刷新

header('refresh:3; url=http://www.xiaomi.com');

 

4、PHP 表單

1.PHP_GET數據獲取

PHP,若是想要獲取經過get方法提交的數據,能夠經過$_GET對象來獲取

HTML代碼: 下面就是一個簡單的表單代碼,將數據提交到01.php,使用get的方式

1 <form action="01.php" method="get" >
2   <label for="">姓名:
3       <input type="text" name= "userName"></label>
4       <br/>
5   <label for="">郵箱:
6       <input type="text" name= "userEmail"></label>
7       <br/>
8       <input type="submit" name="">
9 </form>

PHP代碼:

<?php
    echo "<h1>GET_PAGE</h1>";
    echo 'userName:'.$_GET['userName'];
    echo '<br/>';
    echo 'userEmail:'.$_GET['userEmail'];
 ?>

2.PHP_POST數據獲取

PHP,若是想要獲取經過post方法提交的數據,能夠經過$_POST對象來獲取

HTML代碼: 下面就是一個簡單的表單代碼,將數據提交到02.php,使用post的方式(注意:代碼中的method改成post)

1 <form action="02.php" method="post" >
2   <label for="">姓名:
3       <input type="text" name= "userName"></label>
4       <br/>
5   <label for="">郵箱:
6       <input type="text" name= "userEmail"></label>
7       <br/>
8       <input type="submit" name="">
9 </form>

PHP代碼:

1 <?php
2     echo "<h1>POST_PAGE</h1>";
3     echo 'userName:'.$_POST['userName'];
4     echo '<br/>';
5     echo 'userEmail:'.$_POST['userEmail'];
6  ?>

3.POST&GET錯誤處理

當咱們直接訪問POST&GET頁面時因爲並無傳遞任何數據,會由於$_GET$_POST不存在對應的key而報錯.

處理方式1:

使用array_key_exists(key, 數組)函數來進行判斷

參數1: 要檢測的key字符串

參數2: 檢驗的數組

    if(array_key_exists('name', $_GET)){

        //若是有數據 再去讀取

    }else{

        // 反之 能夠執行一些 其餘的邏輯

    }

 

5、PHP 保存上傳文件

php中上傳的文件,會先以臨時文件的方式保存起來,咱們將其移動到其餘的位置便可

1.$_FILE

php中 可以經過$_FILE 獲取上傳的文件

瀏覽器端部分代碼

  • 假定瀏覽器在form表單中以下標籤
  • 1form提交數據需使用post提交
  • 2form提交數據時,需在form表單中添加enctype=multipart/form-data屬性
1 <form action='xx.php' method='post' enctype='multipart/form-data'>
2     <input type='file' name='icon'>
3     <input type='submit'>
4 </form>

服務端代碼:

  • $_FILES用法跟$_GET,$_POST相似,都是關係型數組
  • #_FILE['key']:能夠獲取對應上傳的文件,這裏的key跟提交時的name相對應
  • #_FILE['key']['name'] 能夠獲取上傳的文件名
  • #_FILE['key']['tmp_name']能夠獲取上傳的文件保存的臨時目錄
1 <?php
2 // 能夠打印 $_FILES的全部信息
3 print_r($_FILES);
4 ?>

2.move_uploaded_file(移動文件)

上傳的臨時文件,一會就會被自動刪除,咱們須要將其移動到保存的位置

move_uploaded_file參數:

參數1:移動的文件

參數2:目標路徑

move_uploaded_file($_FILES['photo']['tmp_name'], './images/test.jpg');

 

6、PHP設置上傳文件大小

在使用wamp過程當中,若是想要修改上傳的文件顯示,須要如何設置呢?

修改php.ini

1.步驟:

  • 左鍵點擊wamp
  • 選擇php
  • 在彈出的窗口中選擇php.ini
  • 在打開的文件中進行修改(修改步驟以下)
  • 修改完畢,保存並重啓wamp

2.修改內容:

使用文本編輯工具的搜索功能找到下列選項 進行修改

設置文件最大上傳限制(值的大小能夠根據需求修改)

  • file_uploads = On   ;                    是否容許上傳文件 On/Off 默認是On
  • upload_max_filesize = 32M ;        上傳文件的最大限制
  • post_max_size = 32M ;               經過Post提交的最多數據

 

考慮網絡傳輸快慢,這裏修改一些參數

  • max_execution_time = 30000      ; 腳本最長的執行時間 單位爲秒
  • max_input_time = 600            ; 接收提交的數據的時間限制 單位爲秒
  • memory_limit = 1024M            ; 最大的內存消耗
相關文章
相關標籤/搜索