[TOC]
## 表單提交get和post?
get 請求一般用于向服務端獲取數據,post 一般向服務端提交數據
get 傳輸的參數在 url 中,傳遞參數大小有限制,post 沒有大小限制,
get 不安全,post 安全性比get高
get請求在服務端用Request.queryString 接受 ,post 請求在服務端用Requset.form 接收。
?
## echo(),print(),print_r()的區別
echo是PHP語句, print和print_r是函數,語句沒有返回值,函數可以有返回值(即便沒有用)
print() 只能打印出簡單類型變量的值(如int,string)
print_r() 可以打印出復雜類型變量的值(如數組,對象)
echo 輸出一個或者多個字符串
?
?
**echo()**
可以一次輸出多個值,多個值之間用逗號分隔。echo是語言結構(language construct),而并不是真正的函數,因此不能作為表達式的一部分使用。
?
**print()**
函數print()打印一個值(它的參數),如果字符串成功顯示則返回true,否則返回false。
?
**print_r()**
可以把字符串和數字簡單地打印出來,而數組則以括起來的鍵和值得列表形式顯示,并以Array開頭。但print\\\_r()輸出布爾值和NULL的結果沒有意義,因為都是打印"\\\\n"。因此用var\\\_dump()函數更適合調試。
?
**var_dump()**
判斷一個變量的類型與長度,并輸出變量的數值,如果變量有值輸的是變量的值并回返數據類型。此函數顯示關于一個或多個表達式的結構信息,包括表達式的類型與值。數組將遞歸展開值,通過縮進顯示其結構。
?
## 語句include和require?
1、加載失敗的處理方式不同
include與require除了在處理引入文件的方式不同外,最大的區別就是:
include在引入不存在的文件時,產生一個警告且腳本還會繼續執行,
require則會導致一個致命性錯誤且腳本停止執行。
?
2、include()是有條件包含函數,而 require()則是無條件包含函數。
?
`if(FALSE){`
`include?'file.php';?//file.php不會被引入`
`}`
?
`if(FALSE){`
`require?'file.php';?//file.php將會被引入`
`}`
?
3、文件引用方式
?
include有返回值,而require沒有
?
`$retVal?=?include(’somefile.php’);`
`if(!empty($retVal)){`
`echo?"文件包含成功";`
`}else{`
`echo?"文件包含失敗";`
`}`
?
可以用include_once,require_once代替,表示文件只引入一次,引入之后則不在引入,作為優化點.
?
## composer是什么?Composer和PHP有什么關系?
?
Composer是PHP的一個依賴(dependency)管理工具,在我們的項目中聲明所依賴的外部工具庫(libraries),Composer 可以幫助我們安裝這些依賴的庫文件。Composer可以全局安裝也可以局部安裝,默認不是全局安裝的,是基于指定項目的某個目錄進行安裝的。
?
## session與cookie的區別是什么?
1、保持狀態:
?
cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式。
2、使用方式:
(1)cookie機制:如果不在瀏覽器中設置過期時間,cookie被保存在內存中,生命周期隨瀏覽器的關閉而結束,這種cookie簡稱會話cookie。如果在瀏覽器中設置了cookie的過期時間,cookie被保存在硬盤中,關閉瀏覽器后,cookie數據仍然存在,直到過期時間結束才消失。
?
Cookie是服務器發給客戶端的特殊信息,cookie是以文本的方式保存在客戶端,每次請求時都帶上它
?
(2)session機制:當服務器收到請求需要創建session對象時,首先會檢查客戶端請求中是否包含sessionid。如果有sessionid,服務器將根據該id返回對應session對象。如果客戶端請求中沒有sessionid,服務器會創建新的session對象,并把sessionid在本次響應中返回給客戶端。通常使用cookie方式存儲sessionid到客戶端,在交互中瀏覽器按照規則將sessionid發送給服務器。如果用戶禁用cookie,則要使用URL重寫,可以通過response.encodeURL(url) 進行實現;API對encodeURL的結束為,當瀏覽器支持Cookie時,url不做任何處理;當瀏覽器不支持Cookie的時候,將會重寫URL將SessionID拼接到訪問地址后。
?
3、存儲內容:
?
cookie只能保存字符串類型,以文本的方式;session通過類似與Hashtable的數據結構來保存,能支持任何類型的對象(session中可含有多個對象)
?
4、存儲的大小:
?
cookie:單個cookie保存的數據不能超過4kb;
?
session大小沒有限制。
?
5、安全性:
?
cookie:針對cookie所存在的攻擊:Cookie欺騙,Cookie截獲;
session的安全性大于cookie。
## 為什么session的安全性大于cookie?
?
1. sessionID存儲在cookie中,若要攻破session首先要攻破cookie;
2. sessionID是要有人登錄,或者啟動session_start才會有,所以攻破cookie也不一定能得到sessionID;
3. 第二次啟動session_start后,前一次的sessionID就是失效了,session過期后,sessionID也隨之失效。
4. sessionID是加密的
5. 綜上所述,攻擊者必須在短時間內攻破加密的sessionID,這很難。
?
## session與cookie的應用場景有哪些?
?
cookie:
(1)判斷用戶是否登陸過網站,以便下次登錄時能夠實現自動登錄(或者記住密碼)。如果我們刪除cookie,則每次登錄必須從新填寫登錄的相關信息。
(2)保存上次登錄的時間等信息。
(3)保存上次查看的頁面。
(4)瀏覽計數。
?
session:
?
Session用于保存每個用戶的專用信息,變量的值保存在服務器端,通過SessionID來區分不同的客戶。
?
(1)網上商城中的購物車。
(2)保存用戶登錄信息。
(3)將某些數據放入session中,供同一用戶的不同頁面使用。
(4)防止用戶非法登錄。
- 消息隊列
- 為什么要用消息隊列
- 各種消息隊列產品的對比
- 消息隊列的優缺點
- 如何保證消息隊列的高可用
- 如何保證消息不丟失
- 如何保證消息不會重復消費?如何保證消息的冪等性?
- 如何保證消息消費的順序性?
- 基于MQ的分布式事務實現
- Beanstalk
- PHP
- 函數
- 基礎
- 基礎函數題
- OOP思想及原則
- MVC生命周期
- PHP7.X新特性
- PHP8新特性
- PHP垃圾回收機制
- php-fpm相關
- 高級
- 設計模式
- 排序算法
- 正則
- OOP代碼基礎
- PHP運行原理
- zavl
- 網絡協議new
- 一面
- TCP和UDP
- 常見狀態碼和代表的意義以及解決方式
- 網絡分層和各層有啥協議
- TCP
- http
- 二面
- TCP2
- DNS
- Mysql
- 鎖
- 索引
- 事務
- 高可用?高并發?集群?
- 其他
- 主從復制
- 主從復制數據延遲
- SQL的語?分類
- mysqlQuestions
- Redis
- redis-question
- redis為什么那么快
- redis的優缺點
- redis的數據類型和使用場景
- redis的數據持久化
- 過期策略和淘汰機制
- 緩存穿透、緩存擊穿、緩存雪崩
- redis的事務
- redis的主從復制
- redis集群架構的理解
- redis的事件模型
- redis的數據類型、編碼、數據結構
- Redis連接時的connect與pconnect的區別是什么?
- redis的分布式鎖
- 緩存一致性問題
- redis變慢的原因
- 集群情況下,節點較少時數據分布不均勻怎么辦?
- redis 和 memcached 的區別?
- 基本算法
- MysqlNew
- 索引new
- 事務new
- 鎖new
- 日志new
- 主從復制new
- 樹結構
- mysql其他問題
- 刪除
- 主從配置
- 五種IO模型
- Kafka
- Nginx
- trait
- genergtor 生成器
- 如何實現手機掃碼登錄功能
- laravel框架的生命周期