【www.gdgbn.com--留言】
*/
代码如下$link = @mysql_connect($db_host,$db_user,$db_pass) or die("unable to establish a db connection");
mysql_query("set names "utf8"");
mysql_select_db($db_database,$link);
class comment
{
private $data = array();
public function __construct($row)
{
/*
/ the constructor
*/
$this->data = $row;
}
public function markup()
{
/*
/ this method outputs the xhtml markup of the comment
*/
// setting up an alias, so we don"t have to write $this->data every time:
$d = &$this->data;
$link_open = "";
$link_close = "";
if($d["url"]){
// if the person has entered a url when adding a comment,
// define opening and closing hyperlink tags
$link_open = "";
$link_close = "";
}
// converting the time to a unix timestamp:
$d["dt"] = strtotime($d["dt"]);
// needed for the default gravatar image:
$url = "http://".dirname($_server["server_name"].$_server["request_uri"])."/img/default_avatar.gif";
return "
".$link_open."
".$link_close."
".$link_open.$d["name"].$link_close."
".date("d m y",$d["dt"])."
".$d["body"]."
";
}
public static function validate(&$arr)
{
/*
/ this method is used to validate the data sent via ajax.
/
/ it return true/false depending on whether the data is valid, and populates
/ the $arr array passed as a paremter (notice the ampersand above) with
/ either the valid input data, or the error messages.
*/
$errors = array();
$data = array();
// using the filter_input function introduced in php 5.2.0
if(!($data["email"] = filter_input(input_post,"email",filter_validate_email)))
{
$errors["email"] = "please enter a valid email.";
}
if(!($data["url"] = filter_input(input_post,"url",filter_validate_url)))
{
// if the url field was not populated with a valid url,
// act as if no url was entered at all:
$url = "";
}
// using the filter with a custom callback function:
if(!($data["body"] = filter_input(input_post,"body",filter_callback,array("options"=>"comment::validate_text"))))
{
$errors["body"] = "please enter a comment body.";
}
if(!($data["name"] = filter_input(input_post,"name",filter_callback,array("options"=>"comment::validate_text"))))
{
$errors["name"] = "please enter a name.";
}
if(!empty($errors)){
// if there are errors, copy the $errors array to $arr:
$arr = $errors;
return false;
}
// if the data is valid, sanitize all the data and copy it to $arr:
foreach($data as $k=>$v){
$arr[$k] = mysql_real_escape_string($v);
}
// ensure that the email is lower case:
$arr["email"] = strtolower(trim($arr["email"]));
return true;
}
private static function validate_text($str)
{
/*
/ this method is used internally as a filter_callback
*/
if(mb_strlen($str,"utf8")<1)
return false;
// encode all html special characters (<, >, ", & .. etc) and convert
// the new line characters to
tags:
$str = nl2br(htmlspecialchars($str));
// remove the new line characters that are left
$str = str_replace(array(chr(10),chr(13)),"",$str);
return $str;
}
}
$comments = array();
$result = mysql_query("select * from comments order by id asc");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new comment($row);
}
?>
css教程" href="styles.css" />
/*
/ output the comments one by one:
*/
foreach($comments as $c){
echo $c->markup();
}
?>
add a comment
<script type="text/网页特效" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
数据库教程结构
代码如下--
-- table structure for table `comments`
--
create table `comments` (
`id` int(10) unsigned not null auto_increment,
`name` varchar(128) collate utf8_unicode_ci not null default "",
`url` varchar(255) collate utf8_unicode_ci not null default "",
`email` varchar(255) collate utf8_unicode_ci not null default "",
`body` text collate utf8_unicode_ci not null,
`dt` timestamp not null default "0000-00-00",
primary key (`id`)
) engine=myisam default charset=utf8 collate=utf8_unicode_ci;