您当前的位置: 首页 > 网站编程 > PHP教程 > 简单实用方便的ajax评论完整代码

简单实用方便的ajax评论完整代码

作者:xiaoxiao 来源:未知 发布时间: 2013-11-12 09:29 点击:
简单的ajax评论完整代码 数据库结构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` varcha

简单实用方便的ajax评论完整代码

    简单的ajax评论完整代码
  
  数据库结构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 CURRENT_TIMESTAMP,
  
  PRIMARY KEY  (`id`)
  
  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
  
  演示
  
  PHP
  
  [php]
  
  <?php
  
  // Error reporting:
  
  error_reporting(E_ALL^E_NOTICE);
  
  include "conn.php";
  
  include "comment.class.php";
  
  /* (PS:^_^不错的php学习交流群:276167802,验证:csl,有兴趣的话可以加入进来一起讨论)
  
  /   Select all the comments and populate the $comments array with objects
  
  */
  
  $comments = array();
  
  $result = mysql_query("SELECT * FROM comments ORDER BY id ASC");
  
  while($row = mysql_fetch_assoc($result))
  
  {
  
  $comments[] = new Comment($row);
  
  }
  
  ?>
  
  PHP
  
  [php]
  
  <div id="main">
  
  <?php
  
  /*
  
  /   Output the comments one by one:
  
  */
  
  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>
  
  submit.php
  
  PHP
  
  [php]
  
  <?php
  
  // Error reporting:
  
  error_reporting(E_ALL^E_NOTICE);
  
  include "conn.php";
  
  include "comment.class.php";
  
  /*
  
  /   This array is going to be populated with either
  
  /   the data that was sent to the script, or the
  
  /   error messages.
  
  /*/
  
  $arr = array();
  
  $validates = Comment::validate($arr);
  
  if($validates)
  
  {
  
  /* Everything is OK, insert to database: */
  
  mysql_query("   INSERT INTO comments(name,url,email,body)
  
  VALUES (
  
  '".$arr['name']."',
  
  '".$arr['url']."',
  
  '".$arr['email']."',
  
  '".$arr['body']."'
  
  )");
  
  $arr['dt'] = date('r',time());
  
  $arr['id'] = mysql_insert_id();
  
  /*
  
  /   The data in $arr is escaped for the mysql query,
  
  /   but we need the unescaped variables, so we apply,
  
  /   stripslashes to all the elements in the array:
  
  /*/
  
  $arr = array_map('stripslashes',$arr);
  
  $insertedComment = new Comment($arr);
  
  /* Outputting the markup of the just-inserted comment: */
  
  echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
  
  }
  
  else
  
  {
  
  /* Outputtng the error messages */
  
  echo '{"status":0,"errors":'.json_encode($arr).'}';
  
  }
  
  ?>
  
  comment.class.php
  
  PHP
  
  [php]
  
  <?php
  
  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 = '<a href="'.$d['url'].'">';
  
  $link_close =  '</a>';
  
  }
  
  // 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 '
  
  <div class="comment">
  
  <div class="avatar">
  
  '.$link_open.'
  
  <img src="" />
  
  '.$link_close.'
  
  </div>
  
  <div class="name">'.$link_open.$d['name'].$link_close.'</div>
  
  <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div>
  
  <p>'.$d['body'].'</p>
  
  </div>
  
  ';
  
  }
  
  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 <br> tags:
  
  $str = nl2br(htmlspecialchars($str));
  
  // Remove the new line characters that are left
  
  $str = str_replace(array(chr(10),chr(13)),'',$str);
  
  return $str;
  
  }
  
  }
  
  ?>
  
  以上是本文关于ajax评论的完整代码,希望本文对广大php开发者有所帮助,感谢阅读本文。

分享到:
本文"简单实用方便的ajax评论完整代码"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4