1. 如何進行防 SQL 注入
1.表單盡量用 post,表單判斷控制走 get,因為 get 比 post 速度快
2.用$_SERVER[HTTP_REFERER]判斷提交者的源頭
3.開啟 addslashes,在’,“,\頭加\,addslashes默認就是開啟的是為了讓含有單雙引號和反斜杠的sql語句正常執行
4.密碼一定設置 md5 加密
5.采用預處理,先解析sql,再綁定參數
6.服務器本身的安全(web+mysql)
2. 如何防止盜鏈
1.服務器上防止
Apache 和 nginx 做 rewrite 基于源來做判斷阻止盜鏈
2.代碼防止
在頁面加判斷語句,用$_SERVER[HTTP_REFERER]檢測請求頁面的域名或者ip,如果不是同域請求,就提示錯誤。比如復制一個新浪博客的美女圖片(如圖1)鏈接的地址,在自己的網站中使用,圖片會顯示如下(如圖2)。這就是防盜鏈功能。經測試,個別網站似乎可以破解這種防盜鏈的機制,比如簡書,這里就是直接用的新浪博客的的圖片鏈接,簡書先訪問到外部網站的圖片,然后保存到簡書自己的服務器上。這也算一種破解防盜鏈的方法吧。
圖1
圖2
3. 下面代碼的執行結果是什么?
<?php
echo 1+2+"3+4+5";
?>
答案是6
echo 1+2
是3
echo "3+4+5"
是3,因為"3+4+5"
是字符串,看的是第一個數值,強制轉類型是(int)"3+4+5"
把3+4+5強制轉為數值類型,結果是3。所以答案是6.
4. http狀態碼
- 200正常相應
- 302地址重定向,一般是通過rewrite實現
- 304緩存未過期
- 403權限不足
- 404訪問的頁面不存在
- 服務器內部錯誤
5. 如何讓禁用cookie的客戶端還可以實現session數據共享?
打開php配置文件php.ini
把session.use_trans_sid = 0,修改為 =1。a鏈接的后面會自動帶上session_id
6. 用 PHP 實現冒泡排序,將數組$a = array()按照從小到大的方式進行排序。
<?php
$arr=array(1,323,66,85,200,2,16);
function mysort($arr){
for($i=0;$i<count($arr)-1;$i++){
for($j=0;$j<count($arr)-1;$j++){
if($arr[$j]>$arr[$j+1]){
$a=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$a;
}
}
}
return $arr;
}
$newArr=mysort($arr);
echo "<pre>";
print_r($newArr);
echo "</pre>";
7. 寫一個把含有下劃線的字符串轉為駝峰樣式的字符串:
<?php
function transform($str){
return str_replace(' ', '', ucwords(str_replace('_', ' ', $str)));
}
echo transform('index_php_function');
?>