今天写某网站新闻评论数调用的程序,首页将需要查询的新闻ID 用JS形式传递给php (<script language=”javascript” src=”http://***.com/*.php?id=1,2,3,4,5”></script>)
php 页面没有验证GET过来的参数 直接就去数据库查询, select * from `table_name` where id IN ($_GET[’id’])
如果GET传过来的是:0); delete from `table_name`; 会怎么样? 如果传过来的要是 0); DROP TABLE `table_name`;
还好在没有铸成大错之前被同事发现,否则想哭都来不及;
解决:对GET过来的参数 使用 foreach intval 下。
一定一定要认真检查接收到的数据。
<?php
if($_POST['button']){
echo '文件名称:'.$_FILES['fileinfo']['name'];
echo "<br />";
echo '文件大小:'.sizecount($_FILES['fileinfo']['size']);
}
function sizecount($filesize) {
if($filesize >= 1073741824) {
$filesize = round($filesize / 1073741824 * 100) / 100 . ' GB';
} elseif($filesize >= 1048576) {
$filesize = round($filesize / 1048576 * 100) / 100 . ' MB';
} elseif($filesize >= 1024) {
$filesize = round($filesize / 1024 * 100) / 100 . ' KB';
} else {
$filesize = $filesize . ' Bytes';
}
return $filesize;
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input type="file" name="fileinfo" id="fileinfo" />
<input type="submit" name="button" id="button" value="提交" />
</form>
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
$url = file_get_contents('http://www.baidu.com');
preg_match('|<title>(.*?)</title>|is', $url, $row );
echo $row[1];
<?php
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
//$str .= "有,还是没有啊 ~????";
if(preg_match("/[\x80-\xff]./", $str)){
echo '有';
}else{
echo '没有';
}
?>
<?php
$pic_url = $dir = $name = $newName = '';
$pic_url = $_GET['pic_url'];
$dir = dirname(__FILE__).'/get_pic/';
最近要给discuz论坛升级, 数据库是mysql4.0,mysql4.0以前的低版本不支持编码,数据都是Latin1编码的。新版论坛计划采用mysql5.1,gbk编码。
因为mysql版本相差太大,直接复制数据库文件的方法肯定不行,只能采用mysqldump。
步骤:
1. 将mysql4.0中数据导出成sql文件
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------






