php基礎知識(七)

M函數

實例化系統模型

   

I函數

過濾前臺傳遞過來的數據,防止xss攻擊

 

xss攻擊?

自動驗證是什麼時候被執行的

調用模型的create方法的時候會被調用自動驗證,如果不傳遞參數,會用I函數獲取傳遞過來的數據

 

僞靜態的實際操作

1)加載僞靜態重寫模塊

2)允許所有覆蓋

3)網站根目錄下,創建一個.htaccess文件

 

LoadModule Rewrite_module

Allow all

<ifModule rewrite_module>

   RewriteEngine on

   RewriteRule index.html

</ifModule>

如何選擇定長還是變長的字符串

Char varchar的區別

定長:

      着重於固定的長度,如手機,電話,身份證號

 

區別在於,已經固定好的寬度,免去了判斷寬度的大小,效率會高

對於經常變更的數據,定長不容易有碎片

Varchar(10)是什麼意思?最大能存多少?

Varchar最大能存65530個字符,varchar(10)表示最大能存10個字符的長度,並且字符是變長的。

Utf8 && gbk 分別能存多少個字節

Utf8佔用3個字節,有些超大字符,佔4個字節

 

Gbk的漢字佔用2個字節

Int(4) 和 int(10) 有什麼區別

Int(M)裏的M是顯示的寬度,和存儲沒關係。顯示的寬度只是用於顯示,並不能限制取值範圍和佔用的空間。

不論是int(3)還是int(4),它在數據庫裏存儲的都是4個字節的長度。

在使用int(3)的時候,如果輸入的是10,會默認存爲010;

Int(10)和int(11)有什麼區別,應該就是顯示長度的區別

Php修改http響應

跳轉

Header(location:xxx.php)

 

刷新

Header(refresh:3 ; url=xxxxx)

 

發送圖片

Header(content-type:image/jpg)

 

下載

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

Header(content-type:application/octet-stream)

Header(content-disposition:attachment;filement=美人 )

Session數據到底有什麼

 

Session的機制

 

Session的清除

 

什麼時候用session,什麼時候用cookie

 

Setcookie設置cookie(設置,訪問)

 

Cookie生命週期

 

Cookie生命週期的使用

 

Cookie作用範圍

 

Cookie跨域

 

Cookie特性

 

程序設計要求

內聚性強,耦合性弱

聚:集中,專門圍繞着一個功能

耦:聯繫,與外部的聯繫弱,不受外部環境的影響

對於一個框架學習的理解

 

無限極分類怎麼實現

首先,表中應該有pid的字段,通過這個字段展現出一個層級的關係,再使用遞歸函數,將數據聚合在一起 (id,name,pid)

 

還可以通過字段 path( 0-1 , 0-1-2 , 0-1-2-3 )

 

Json,xml的理解

它們都是數據傳輸的格式

Xml嚴格規範,安全性高;json數據量大,結構簡單

在實際應用中,使用xml格式,傳輸合同的數據到第三方

使用json格式,ajax無刷新,把後臺數據返回給到前端

數據結構

雙向鏈表

映射

數組

隊列

集合

Php擴展的名稱

curl

ftp

iconv

json

mbstring

mysql

mysqli

mysqlnd

openssl

pcntl

pdo

pdo_mysql

redis

session

sockets

xml

獲取文件的行數

wc -l filename

查找文件中包含hello的行

wc -w  filename

把一個文件的內容添加到另一個文件的末尾

cat  22  >>  11

>>追加的意思

查看所有的用戶

cat  /etc/passwd

查找文件中包含hello的行

grep hello filename

排序方法

冒泡排序

快速排序

插入排序

選擇排序

快速排序的實現代碼以及原理

<?php

$arr = [33, 24, 8, 21, 2, 23, 3, 32, 16];

function quickSort($arr)
{
    $count = count($arr);

    if ($count < 2) {
        return $arr;
    }

    $leftArray = $rightArray = array();
    $middle = $arr[0];// 基準值

    for ($i = 1; $i < $count; $i++) {
        // 小於基準值,存入左邊;大於基準值,存入右邊
        if ($arr[$i] < $middle) {
            $leftArray[] = $arr[$i];
        } else {
            $rightArray[] = $arr[$i];
        }
    }

    $leftArray = quickSort($leftArray);
    $rightArray = quickSort($rightArray);

    return array_merge($leftArray, array($middle), $rightArray);
    // 倒序
    // return array_merge($rightArray, array($middle), $leftArray);
}

冒泡排序的實現代碼以及原理

// 冒泡排序
function bubble_sort($arr)
{
    $len = count($arr);
    for ($i = 0; $i < $len -1; $i++) {//循環對比的輪數
        for ($j = 0; $j < $len - $i - 1; $j++) {//當前輪相鄰元素循環對比
            if ($arr[$j] > $arr[$j + 1]) {//如果前邊的大於後邊的
                $tmp = $arr[$j];//交換數據
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $tmp;
            }
        }
    }
    return $arr;
}
$arr = [5,2,4,7,9,4,2,6,8,3];
print_r(bubble_sort($arr));

Get post的數據哪裏來的

 

$_SERVER的數據哪裏來的,從哪裏獲取,怎麼知道遠程服務端的ip

 

遞歸函數的理解

(1-100的累加計算)

Function test( $n ){

    echo $n . ;

 

    If( $n >0 ){

         test( $n-1 );

     }else{

         echo <---->;

     }

 

      echo $n . ;

   }

 

Test(10);

 

10 9 8 7 6 5 4 3 2 1 <----> 1 2 3 4 5 6 7 8 9 10

 

發佈了57 篇原創文章 · 獲贊 1 · 訪問量 3735
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章