GET 不一樣的是,使用POST的時候,數據不是附在URL後面傳遞,而是要做爲獨立的行來傳遞 ,此時還必需要發送一個Content Length 標題 以標明數據長度,隨後一個空白行,而後就是實際傳送的數據,網頁的表單一般是用POST來傳送的
表單中get 與 post 提交方法的區別?
1.get是吧參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應
在URL中能夠看到
post 是經過HTTP post 機制,將表單內各個字段與其內容放置在HTML HEADER 內一塊兒傳送到ACTION屬性
所指的URL地址。用戶看不到這一過程
2.對於get 方式,服務器端用Request.QueryString 獲取變量的值,對於post方式,服務器用Request.From 獲取提交的數據
3.get 傳送的數據量較小,不能大於2kb,post 傳送的數據量較大,通常被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5 中爲100KB
foo() 和 @foo()之間有什麼區別
@foo()控制錯誤輸出
線性表和順序表的區別?
1.線性表包括順序表和鏈表
2.順序表中的元素的地址是連續的,鏈表裏面節點的地址不是連續的,是經過指針連起來的
什麼是數據庫索引,主鍵索引,惟一索引的區別,索引的缺點是什麼?
索引用來快速地尋找那些具備特定值得記錄。
主鍵索引和惟一索引的區別:
主鍵是一種惟一性索引,但它必須指定位「PRIMARY KEY」每一個表只能有一個主鍵
惟一索引引列的全部值都只能出現一次,即必須惟一
索引的缺點:
1.建立索引和維護索引要耗費時間,這種時間隨着數量的增長和增長
2.索引須要佔物理空間, 除了數據表佔數據空間以外,每個索引還要佔必定的物理空間
若是要創建聚簇索引,須要的空間就會更大
3.當對錶中的數據進行增長。刪除、修改的時候。索引也要動態的維護,這樣就下降了數據的維護速度
瀏覽器IE 和非IE瀏覽器的劃分,區別是什麼?
IE瀏覽器值得是使用IE內核的瀏覽器,對一些W3C標準的網頁代碼支持不是很好
非IE瀏覽器指的是沒有使用IE內核的瀏覽器,對W3C標準的網頁代碼有很好的支持
數據庫中的事務是什麼?
事務(transaction)是做爲一個單元的一組有序數據庫操做。若是組中的全部操做都成功
則認爲事務成功,即時只有一個操做失敗,事務也不成功。若是全部操做完成,則事務提交,其
修改將做用於其餘數據庫進程,若是一個操做失敗,則事務將回滾,該事務全部操做影響都將取消
解釋:左連接,右連接,內連接,索引
1.內鏈接僅選出兩張表中互相匹配的記錄,所以,這會致使有時咱們須要的的記錄沒有包含進來
內部連接是兩個表中都必需要有連接字段的對應值的記錄,數據才能檢索出來
2.左連接和右連接都是外部鏈接,也就是區別於內部 鏈接,它對不知足條件的行並非像內部鏈接同樣將
數據徹底過濾掉,而是保留一部分數據,行數不會減小
3.左鏈接是隻要左邊表中有記錄,數據就能檢索出來,而右邊有的記錄必要再左邊表中有的記錄才能被檢索
出來
4.右鏈接是隻要右邊表中有記錄,數據就能檢索出來
五、全鏈接則會返回兩個表中的全部記錄
簡述 xx中無限分類的實現原理
https://blog.csdn.net/fwkjdaghappy1/article/details/7645313
1.數據庫分類表的設計: id字段 、父id字段、類名稱字段、path字段
2.path字段存當前分類的路徑,格式:0,分類id,自己id
3.查詢分類:select * from 分類表 order by path asc;
4.這樣就查出來每一個分類及其對應的子類。
MyISAM InnoDB BDB Merge Memory Example Federated Archive CSV Blackhole MaxDB
什麼是模板技術、可以使HTML和PHP分離開使用的模板?
模板技術就是使程序的邏輯代碼和界面分開的技術
可以使HTML 和PHP分開
實現中文字符串截取無亂碼的方法
Mb_substr()
數據庫索引有基類,分別是什麼?何時該用索引?
普通索引,主鍵索引,惟一索引
並不是全部的數據庫都以相同的方式使用索引,做爲通用規則,只有當常常查詢列中
的數據時才須要在表上建立索引
寫幾個魔術方法並說明做用?
__call() 當調用不存在的方法時會自動調用的方法
__autoload() 在實例化一個還沒有被定義的類時會自動調用其方法來加載類文件
__set() 當給未定義的變量賦值時會自動調用的方法
__get()當獲取未定義變量值時會自動調用的方法
__construct()構造方法,實例化類時自動調用的方法
__unset() 當對一個未定義變量調用unset()時自動調用的方法
__isset() 當對一個未定義變量調用issset()方法時自動調用的方法
__clone()克隆一個對象
__tostring()當輸出一個對象時自動調用的方法
$request、$post $get $cookie $session $file 的意思是什麼?
它們都是php預約義變量
$_request 用來獲取post 或 get 方式提交的值
$_post 用來獲取post 方式提交的值
$_get 用來獲取get方式提交的值
$_cookie 用來獲取cookie存儲的值
$_session 用來獲取session存儲的值
$_file 用來獲取上傳文件表單的值
數組中下表最好是什麼類型,爲何
數組的下標最好是數字類型,數字類型的處理速度快
++i 和 i++哪一個效率高,爲何
++i 效率比 i++效率高,由於++i少了一個返回i 的過程
magic quotes gpc() / magic quotes runtime() 的意思是什麼
magic quotes gpc() 是 php配置文件中的,若是設置爲on 則會自動POST
GET COOKIE 中的字符串進行轉義 ,在‘以前加\
magic_quotes_runtime() 是php中的函數,若是參數爲TURE則會數據庫中
提取出來的單引號,雙引號,反斜線自動加上反斜槓進行轉義
框架中什麼是單一入口和多入口,單一入口的優缺點?
1.多入口就是經過訪問不一樣的文件來完成用戶請求
單一入口只web程序全部的請求都指向一個腳本文件的
2.單一入口更容易控制權限,方便對HTTP請求 能夠進行安全性檢查
缺點:url看起來不那麼美觀,特別是對搜索引擎來講不友好
你對Memcache的理解,優勢有哪些
Memcache 是一種緩存技術,在必定的時間內將動態網頁解析以後保存到文件,
下次訪問時動態網頁就直接調用這個文件,而沒必要再從新訪問數據庫。
使用memcached作緩存的好處是: 提升網站訪問速度,減輕高併發時服務器的壓力
優勢:穩定,配置簡單,多機分佈式存儲,速度快
web應用中,數據庫的讀取頻率遠高於寫入頻率,如何優化MySQL而應對這種情景
使用memcached 緩存技術,將動態數據緩存到文件,訪問動態頁面時直接
調用緩存文件,而沒必要從新訪問數據庫,這樣就減小了查詢數據庫的次數
若是網站的訪問量很大,能夠吧數據庫讀寫服務器分開,使用多態服務器去處理數據庫
查詢,使用較少的服務器去處理數據庫的寫入和修改
數據庫設計時,常遇到的性能瓶頸有哪些,常有的解決方案?
瓶頸主要有:
1.磁盤搜索優化的方法是:將數據分佈在多個磁盤上
2.磁盤讀/寫 優化的方法是:從多個磁盤並行讀寫
3.cpu 週期優化方法:擴展內存
4.內存寬帶
請舉例說明在你的開發過程當中用什麼方法來加快頁面的加載速度
要用到服務器資源時纔打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態
圖片等大文件單獨服務器,使用代碼優化工具
描述一下大流量高併發量網站的解決方案
1.確認服務器硬件是否足夠支持當前的流量
2.使用memcache 緩存技術,將動態數據緩存到內存中,動態網頁直接調用這些文件,而沒必要再訪問數據庫
三、禁止外部的盜鏈
4.外部網站的圖片或者文件盜鏈每每會帶來大量負載壓力,所以應該嚴格限制外部對自身圖片或者文件盜鏈,
目前能夠簡單經過refer 來控制盜鏈,apache本身就能夠經過配置來禁止盜鏈
5.控制大文件的下載 大文件的下載會佔用很大的流量,對於非SCSI硬盤來講會消耗,使得網站響應能力降低
6.使用不一樣的主機分流主要流量,使服務器均衡負載
7.使用流量統計軟件 在網站上安裝一個流量統計軟件,能夠即時知道哪些地方耗費了大量流量
哪些頁面須要進行優化
8.分庫分表
9.Sphinx全文搜索引擎
如何設計或配置Mysql 才能達到高效使用的目的
1.數據庫設計方面,設計結構良好的數據庫,運行部分數據冗餘
選取最適用的字段屬性,儘量把字段設置爲NOT NULL 這樣在查詢的時候,數據庫
不用去比較NULL值
2.系統架構設計方面,表散列,把海量數據散列到幾個不一樣表裏面,集羣,數據庫查詢和寫入分開
寫高效sql語句,適用連接(join)來代替子查詢
使用聯合(union)來代替手動建立的臨時表
所得皆必須,只從數據庫取必須的數據
必要的時候用不一樣的存儲引擎,好比Innodb能夠減小死鎖,HEAP能夠提升一個數量級的查詢速度
使用事務
使用外健,使用索引
設定網站的用戶數量在千萬級,可是活躍用戶的數量只有1%,如何經過優化數據庫提升活躍用戶的訪問速度
咱們能夠根據用戶的活躍程度,把活躍的用戶提取出來放到另一張表裏面,每次活躍的用戶登陸
的時候就直接到活躍用戶表中進行查詢,這樣就提升了數據庫查詢速度
瞭解XSS攻擊嗎 如何防止
XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權模式去執行攻擊者構造的腳本,
而後利用不安全的Acticex控件執行惡意的行爲
使用htmlspecialchars()函數對提交的內容進行過濾,使字符串裏面的特殊符號實體化
SQL注入漏洞產生的緣由,如何防止
SQL注入產生的緣由:程序開發過程當中不注意規範書寫sql 語句和對特殊字符進行過濾,致使
客戶端能夠經過全局變量POST 和GET提交一些SQL語句正常執行
防止SQL注入
1.開啓配置文件中的magic_quotes_gpc 和 magic_quotes_runtime 設置
magic_quotes_gpc 開啓後將自動把用戶提交的sql語句的查詢進行轉換 把'轉換爲\ 對sql注入有有重大做用
2.執行sql語句時使用addslashes進行sql 語句轉換
3.sql語句書寫儘可能不要省略小引號和單引號
4.過濾掉sql語句中的一些關鍵字
5.提升數據庫表和字段的命名技巧,對一些重要的字段根據程序的特定命名,取不易被猜到的
6.php配置文件中設置register_globals 爲OFF 關閉全局變量註冊
7.控制錯誤信息,不要再瀏覽器上輸出錯誤信息,將錯誤信息寫到日誌文件中
PHP加速模式/擴展? 調試工具
Zend Optimizer 加速擴展
調試工具: xdebug
經常使用MYSql命令
show databases
show tables
Insert into xx values()
update xx set 字段 = xx where
delete from xx where
select * from xx where xx order by desc/asc limit ..
group by ,, having ...
進入mysql 管理命令行的命令
Mysql -uroot -p
顯示系統變量和值
show variables
請寫出 5個經常使用的unix操做命令
- ls -l 以長格式的形式查看當前目錄下全部可見文件的詳細屬性
- tar zxvf xxx.tgz -c 指定目錄 解壓到指定目錄
- tar czvf xxx.tgz 指定目錄 壓縮到指定目錄
- Cat 一次顯示整個文件 從鍵盤建立一個文件 合併爲一個文件
- mkdir 建立目錄
- rm 刪除
請寫出如下5個UNIX系統配置文件/服務的做用
/etc/passwd : 用戶信息文件,其中包含用戶名,用戶是否有密碼,用戶ID及用戶所屬組
/etc/hosts :主機數據庫,包括IP地址,主機名 或域名 別名等信息,在此文件中添加記錄可繞過dns
/etc/fstab :保存了系統全部分區信息的配置文件
crontab 計劃任務命令
Sshd 遠程鏈接管理命令
請寫出5個經常使用的SQL操做關鍵字
select update delete insert into create group by order by
請列出5個經常使用的PHP操做 MuSQL的函數
一、Mysql_connect()
二、Mysql_select_db()
三、Mysql_query()
四、Mysql_fetch_row()
五、Mysql_close()
什麼是時間戳?如何取得當前時間戳?
時間戳是從1970年1月1日 00:00:00到指定日期的秒數
獲取當前時間戳;time()
有一個網頁地址,好比PHP開發資源網主頁:,如何獲得它的內容
獲取網頁內容:
$url = ""
$str = file_get_contents($url)
簡述如何獲得當前執行腳本路徑,包括所獲得的參數
$_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URL'] ;取得當前頁面的完整路徑和參數
取得參數: $_SERVER['QUERY_STRING']
如何用php的環境變量獲得一個網頁地址的內容,ip地址又要怎麼樣獲得?
echo $_server["PHP_SELF"];
echo $_server["SERVER_ADDR"]
求兩個日期的差數
$begin = strtotime("")
$end = strtotime("")
echo ($end - $begin) /(24*3600)
給一個變量賦值爲0123,可是輸出該變量的值老是爲其餘數字?
php解釋器會把以0開始的數字當作是八進制,因此他的值會變爲八進制
php裏面如何定義一個常量(constant)
經過define()指令 列如 define("".100)
在php裏面能夠對string "10" 和整型11進行比較嗎
能夠,php內部實現會把全部東西轉換成整型
在什麼狀況下須要用endif來結束條件語句
當if語句後面跟的是冒號:而不是大括號時
優化MYSQL數據庫的方法
1.選取最適用的字段屬性,儘量減小定義字段長度,儘可能把字段設置NOT null,列如省份,性別最好設置爲enum
2.使用鏈接(join)來代替子查詢
3.使用union來代替手動建立的臨時表
4.事務處理
5.鎖定表,優化事務處理
6.使用外鍵,優化鎖定表
PHP加速模式/擴展? 調試工具
Zend Optimizer 加速擴展
調試工具: xdebug
經常使用MYSql命令
show databases
show tables
Insert into xx values()
update xx set 字段 = xx where
delete from xx where
select * from xx where xx order by desc/asc limit ..
group by ,, having ...
進入mysql 管理命令行的命令
Mysql -uroot -p
顯示系統變量和值
show variables
請寫出 5個經常使用的unix操做命令
- ls -l 以長格式的形式查看當前目錄下全部可見文件的詳細屬性
- tar zxvf xxx.tgz -c 指定目錄 解壓到指定目錄
- tar czvf xxx.tgz 指定目錄 壓縮到指定目錄
- Cat 一次顯示整個文件 從鍵盤建立一個文件 合併爲一個文件
- mkdir 建立目錄
- rm 刪除
請寫出如下5個UNIX系統配置文件/服務的做用
/etc/passwd : 用戶信息文件,其中包含用戶名,用戶是否有密碼,用戶ID及用戶所屬組
/etc/hosts :主機數據庫,包括IP地址,主機名 或域名 別名等信息,在此文件中添加記錄可繞過dns
/etc/fstab :保存了系統全部分區信息的配置文件
crontab 計劃任務命令
Sshd 遠程鏈接管理命令
請寫出5個經常使用的SQL操做關鍵字
select update delete insert into create group by order by
請列出5個經常使用的PHP操做 MuSQL的函數
一、Mysql_connect()
二、Mysql_select_db()
三、Mysql_query()
四、Mysql_fetch_row()
五、Mysql_close()
什麼是時間戳?如何取得當前時間戳?
時間戳是從1970年1月1日 00:00:00到指定日期的秒數
獲取當前時間戳;time()
有一個網頁地址,好比PHP開發資源網主頁:,如何獲得它的內容
獲取網頁內容:
$url = ""
$str = file_get_contents($url)
簡述如何獲得當前執行腳本路徑,包括所獲得的參數
$_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URL'] ;取得當前頁面的完整路徑和參數
取得參數: $_SERVER['QUERY_STRING']
如何用php的環境變量獲得一個網頁地址的內容,ip地址又要怎麼樣獲得?
echo $_server["PHP_SELF"];
echo $_server["SERVER_ADDR"]
求兩個日期的差數
$begin = strtotime("")
$end = strtotime("")
echo ($end - $begin) /(24*3600)
給一個變量賦值爲0123,可是輸出該變量的值老是爲其餘數字?
php解釋器會把以0開始的數字當作是八進制,因此他的值會變爲八進制
php裏面如何定義一個常量(constant)
經過define()指令 列如 define("".100)
在php裏面能夠對string "10" 和整型11進行比較嗎
能夠,php內部實現會把全部東西轉換成整型
在什麼狀況下須要用endif來結束條件語句
當if語句後面跟的是冒號:而不是大括號時
優化MYSQL數據庫的方法
1.選取最適用的字段屬性,儘量減小定義字段長度,儘可能把字段設置NOT null,列如省份,性別最好設置爲enum
2.使用鏈接(join)來代替子查詢
3.使用union來代替手動建立的臨時表
4.事務處理
5.鎖定表,優化事務處理
6.使用外鍵,優化鎖定表
請以空格爲間隔,拆分字符串,組成數組$fruit,
數組中因此元素都用小寫字母,並按照字母前後次序排序
<?php
class sort {
private $str;
public function __construct($str) {
$this->str=strtolower($str);
}
private function explodes() {
if(empty($this->str)) return array();
$arr=explode(" ",$this->str);
return is_array($arr)?$arr:array($arr);
}
public function sort() {
$explode=$this->explodes();
sort($explode);
return $explode;
}
}
$str='Apple Orange Banana Strawberry';
$sortob=new sort($str);
print_r($sortob);
var_dump($sortob->sort());
php程序使用utf-8編碼,如下程序輸出結果是什麼?
中文佔兩個字符
寫一個函數,儘量高效的,從一個標準的url中取出文件擴展名
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']); //解析url 返回組成部
$ext = explode(".",file);//返回路徑中文件名部分
return $ext[1];
}
使用五種以上方式獲取一個文件的擴展名
function get_ext1($file_name){
return strrchr($file_name,'.'); //函數查找字符串在另外一個字符串中最後一次出現的位置,並返回從該位置到字符串結尾的全部字符。
}
function get_ext2($file_name){
return substr($file_name,strrpos($file_name, ‘.’));
//先找出最後後一次出現的位置,再截取從該位置開始到結尾的字符串
}
function get_ext3($file_name){
return array_pop(explode(‘.’, $file_name));
//array_pop() 函數刪除數組中的最後一個元素。
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
//pathinfo() 函數以數組的形式返回關於文件路徑的信息。
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));
}