php ajax 留言板
提供一款国人写的留言板,他是利用了jquery php mysql ajax来实现php ajax 局部刷新留方板实例的喜欢就下载吧,代码如下:
- $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)
- {
-
-
-
-
- $this->data = $row;
- }
-
- public function markup()
- {
-
-
-
-
-
- $d = &$this->data;
-
- $link_open = '';
- $link_close = '';
-
- if($d['url']){
-
-
-
-
- $link_open = '<a href="'.$d['url'].'">';
- $link_close = '</a>';
- }
-
-
- $d['dt'] = strtotime($d['dt']);
-
-
- $url = 'http://'.dirname($_server['server_name'].$_server["request_uri"]).'/img/default_avatar.gif';
-
- return '
-
- <div class="comment">
- <div class="avatar">
- '.$link_open.'
- <img src="http://www.gravatar.com/avatar/'.md5($d['email']).'?size=50&default='.urlencode($url).'" />
- '.$link_close.'
- </div>
-
- <div class="name">'.$link_open.$d['name'].$link_close.'</div>
- <div class="date" title="added at '.date('h:i on d m y',$d['dt']).'">'.date('d m y',$d['dt']).'</div>
- <p>'.$d['body'].'</p>
- </div>
- ';
- }
-
- public static function validate(&$arr)
- {
-
-
-
-
-
-
-
-
- $errors = array();
- $data = array();
-
-
-
- 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)))
- {
-
-
-
- $url = '';
- }
-
-
-
- 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(!emptyempty($errors)){
-
-
-
- $arr = $errors;
- return false;
- }
-
-
-
- foreach($data as $k=>$v){
- $arr[$k] = mysql_real_escape_string($v);
- }
-
-
-
- $arr['email'] = strtolower(trim($arr['email']));
-
- return true;
-
- }
-
- private static function validate_text($str)
- {
-
-
-
-
- if(mb_strlen($str,'utf8')<1)
- return false;
-
-
-
-
- $str = nl2br(htmlspecialchars($str));
-
-
- $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);
- }
-
- ?>
-
- <!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=gb2312" />
- <title>simple ajax commenting system | tutorialzine demo</title>
-
- <link rel="stylesheet" type="text/css教程" href="styles.css" />
-
- </head>
-
- <body>
-
-
-
-
- <div id="main">
-
- <?php
-
-
-
-
-
- foreach($comments as $c){
- echo $c->markup();
- }
-
- ?>
-
- <div id="addcommentcontainer">
- <p>add a comment</p>
- <form id="addcommentform" method="post" action="">
- <div>
- <label for="name">your name</label>
- <input type="text" name="name" id="name" />
-
- <label for="email">your email</label>
- <input type="text" name="email" id="email" />
-
- <label for="url">website (not required)</label>
- <input type="text" name="url" id="url" />
-
- <label for="body">comment body</label>
- <textarea name="body" id="body" cols="20" rows="5"></textarea>
-
- <input type="submit" id="submit" value="submit" />
- </div>
- </form>
- </div>
-
- </div>
-
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
- <script type="text/javascript" src="script.js"></script>
-
- </body>
- </html>
数据库结构,代码如下:
-
-
-
-
- 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;