这是08年初刚接触PHP一年多时,在一家公司面试过程中写的一个简单的 “留言本” ,写了点库函数:包括安全过滤,类似 Discuz!的翻页的。下面看正文:
老实说,这次面试完后就上机,有点突如其来,闻所未闻,令人防不胜防。何况两个月都没摸过PHP了,在函数库上有点遗忘。但是呢,凭借手上写代码的非一般的感觉,偶还是把它搞定了。
本来这个东西有点简单,但是偏偏没有现成的东西可用,所以不得不构造了下面这个函数库,这里拿出来献丑了。
一、先建表:
CREATE TABLE IF NOT EXISTS `yhl_words` (
`id` int(9) NOT NULL auto_increment,
`uname` varchar(50) collate utf8_unicode_ci default NULL,
`uwords` text collate utf8_unicode_ci,
`utime` int(10) default NULL,
`uip` varchar(15) collate utf8_unicode_ci default NULL,
`ureferer` varchar(255) collate utf8_unicode_ci NOT NULL,
`uangent` varchar(255) collate utf8_unicode_ci NOT NULL,
`ifhide` tinyint(1) default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
二、编写基础库函数(ps:没有使用过框架,所以好多东西都是手来)
<?php
/**
* 基础函数库
* @author YangHuaLiang yhl.lxrm@gmail.com
*/
function_exists("entry") or die("Forbbiden!");
function global_filter($global_var)
{
if (is_array($global_var) && !empty($global_var))
{
foreach($global_var as $key=>$val)
{
if (is_array($global_var))
$global_var[$key] = addslashes($val);
else
$global_var[$key] = global_filter($val);
}
}else{
$global_var = addslashes($global_var);
}
return $global_var;
}
class DB
{
function DB($dbhost,$dbname,$dbuser,$dbpass)
{
$cnn = mysql_connect($dbhost,$dbuser,$dbpass);
if (!mysql_select_db("$dbname",$cnn) )
{
die("db $dbhost canot be select");
}
}
function fetch_array($rs/*,$type="assocc"*/)// 忘了辅助索引咋拼写了
{
$reslt = mysql_fetch_array($rs/*,$type*/);
if ($reslt)
return $reslt ;
else
return false;
}
function query($sql)
{
$ret = mysql_query($sql);
if ( ! $ret )
{
return false;
}else{
return $ret;
}
}
function get_one($sql)
{
$ret = mysql_query("$sql");
if ( ! $ret )
{
return false;
}else{
$ret_arr = mysql_fetch_array($ret);
return $ret_arr;
}
}
}
// return page string
function page_maker($records,$page=1,$perpage=3,$url)
{
$page_string = NULL;
page_filter($page);
page_filter($records);
$page_string = "一共<strong><font color=#00FF00>{$records}</font></strong>条记录";
$url = strpos($url,"?") ? $url : $url . "?";
if ( $records > 0 )
{
$page_pre = $page - 1; //向前翻
$page_next = $page + 1; // 向后翻
$num_of_page_step = 5; // 向前/后翻 的步长
$page_all = ceil($records/$perpage); // 应向上取整,两个函数记不太清了
$page > $page_all && $page = $page_all;
$page_pre > $page_all && $page = $page_all;
$page_next > $page_all && $page_next = $page_all;
$page_string .= "<div class="page"><a href="" >首页</a> <a href="$url&page=$page_pre"><<</a> ";
// 生成分页字符串
$page_current = $page;
if ( $num_of_page_step < $page_all)
{
for($i = 1 ; $i <= $num_of_page_step;++$i,++$page_current)
{
if ( $page_current <= $page_all)
$page_string .= "<a href="{$url}&page={$page_current}">{$page_current}</a> ";
else
break;
}
}
$page_string .= " <a href="{$url}&page=$page_next">>></a> <a href="{$url}&page={$page_all}">尾页</a></div>";
}
return $page_string;
}
// 敏感字符过滤
function words_filter($words)
{
global $_ARRAY_FILTER;
$new_words = $words;
// 查找并替换
// 需另开一个敏感字符配置文件,用数组保存
// 这里仅给出例子
if (is_array($_ARRAY_FILTER))
{
if (empty($_ARRAY_FILTER))
{
return $new_words;
} else {
foreach ($_ARRAY_FILTER as $arr_wd)
{
if (strpos($words,$arr_wd[0]))
$new_words = str_replace("$wd[0]",$wd[1],$words);
}
}
}
return $new_words;
}
function page_filter($val)
{
$val = intval($val);
$val <1 && $val = 1;
return $val;
}
?>