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)。这就是防盗链功能。经测试,个别网站似乎可以破解这种防盗链的机制,比如简书,这里就是直接用的新浪博客的的图片链接,简书先访问到外部网站的图片,然后保存到简书自己的服务器上。这也算一种破解防盗链的方法吧。
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');
?>