當前位置:首頁 > 綜合實例 > 列表

php ajax 留言板

發布:smiling 來源: PHP粉絲網  添加日期:2014-09-09 10:31:08 瀏覽: 評論:0 

提供一款國人寫的留言板,他是利用了jquery php mysql ajax來實現php ajax 局部刷新留方板實例的喜歡就下載吧,代碼如下:

  1. $link = @mysql_connect($db_host,$db_user,$db_passor die('unable to establish a db connection'); 
  2.  
  3. mysql_query("set names 'utf8'"); 
  4. mysql_select_db($db_database,$link); 
  5.  
  6. class comment 
  7.  private $data = array(); 
  8.  
  9.  public function __construct($row
  10.  { 
  11.   /* 
  12.   / the constructor 
  13.   */ 
  14.    
  15.   $this->data = $row
  16.  } 
  17.  
  18.  public function markup() 
  19.  { 
  20.   /* 
  21.   / this method outputs the xhtml markup of the comment 
  22.   */ 
  23.    
  24.   // setting up an alias, so we don't have to write $this->data every time: 
  25.   $d = &$this->data; 
  26.    
  27.   $link_open = ''
  28.   $link_close = ''
  29.    
  30.   if($d['url']){ 
  31.     
  32.    // if the person has entered a url when adding a comment, 
  33.    // define opening and closing hyperlink tags 
  34.     
  35.    $link_open = '<a href="'.$d['url'].'">'
  36.    $link_close =  '</a>'
  37.   } 
  38.    
  39.   // converting the time to a unix timestamp: 
  40.   $d['dt'] = strtotime($d['dt']); 
  41.    
  42.   // needed for the default gravatar image: 
  43.   $url = 'http://'.dirname($_server['server_name'].$_server["request_uri"]).'/img/default_avatar.gif'
  44.    
  45.   return ' 
  46.    
  47.    <div class="comment"
  48.     <div class="avatar"
  49.      '.$link_open.' 
  50.      <img src="http://www.gravatar.com/avatar/'.md5($d['email']).'?size=50&amp;default='.urlencode($url).'" /> 
  51.      '.$link_close.' 
  52.     </div> 
  53.      
  54.     <div class="name">'.$link_open.$d['name'].$link_close.'</div> 
  55.     <div class="date" title="added at '.date('h:i on d m y',$d['dt']).'">'.date('d m y',$d['dt']).'</div> 
  56.     <p>'.$d['body'].'</p> 
  57.    </div> 
  58.   '; 
  59.  } 
  60.  
  61.  public static function validate(&$arr
  62.  { 
  63.   /* 
  64.   / this method is used to validate the data sent via ajax. 
  65.   / 
  66.   / it return true/false depending on whether the data is valid, and populates 
  67.   / the $arr array passed as a paremter (notice the ampersand above) with 
  68.   / either the valid input data, or the error messages. 
  69.   */ 
  70.    
  71.   $errors = array(); 
  72.   $data = array(); 
  73.    
  74.   // using the filter_input function introduced in php 5.2.0 
  75.    
  76.   if(!($data['email'] = filter_input(input_post,'email',filter_validate_email))) 
  77.   { 
  78.    $errors['email'] = 'please enter a valid email.'
  79.   } 
  80.    
  81.   if(!($data['url'] = filter_input(input_post,'url',filter_validate_url))) 
  82.   { 
  83.    // if the url field was not populated with a valid url, 
  84.    // act as if no url was entered at all: 
  85.     
  86.    $url = ''
  87.   } 
  88.    
  89.   // using the filter with a custom callback function: 
  90.    
  91.   if(!($data['body'] = filter_input(input_post,'body',filter_callback,array('options'=>'comment::validate_text')))) 
  92.   { 
  93.    $errors['body'] = 'please enter a comment body.'
  94.   } 
  95.    
  96.   if(!($data['name'] = filter_input(input_post,'name',filter_callback,array('options'=>'comment::validate_text')))) 
  97.   { 
  98.    $errors['name'] = 'please enter a name.'
  99.   } 
  100.    
  101.   if(!emptyempty($errors)){ 
  102.     
  103.    // if there are errors, copy the $errors array to $arr: 
  104.     
  105.    $arr = $errors
  106.    return false; 
  107.   } 
  108.    
  109.   // if the data is valid, sanitize all the data and copy it to $arr: 
  110.    
  111.   foreach($data as $k=>$v){ 
  112.    $arr[$k] = mysql_real_escape_string($v); 
  113.   } 
  114.    
  115.   // ensure that the email is lower case: 
  116.    
  117.   $arr['email'] = strtolower(trim($arr['email'])); 
  118.    
  119.   return true; 
  120.    
  121.  } 
  122.  
  123.  private static function validate_text($str
  124.  { 
  125.   /* 
  126.   / this method is used internally as a filter_callback 
  127.   */ 
  128.    
  129.   if(mb_strlen($str,'utf8')<1) 
  130.    return false; 
  131.    
  132.   // encode all html special characters (<, >, ", & .. etc) and convert 
  133.   // the new line characters to <br> tags: 
  134.    
  135.   $str = nl2br(htmlspecialchars($str)); 
  136.    
  137.   // remove the new line characters that are left 
  138.   $str = str_replace(array(chr(10),chr(13)),'',$str); 
  139.    
  140.   return $str
  141.  } 
  142.  
  143.  
  144. $comments = array(); 
  145. $result = mysql_query("select * from comments order by id asc"); 
  146.  
  147. while($row = mysql_fetch_assoc($result)) 
  148.  $comments[] = new comment($row); 
  149.  
  150. ?> 
  151.  
  152. <!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"
  153. <html xmlns="http://www.w3.org/1999/xhtml"
  154. <head> 
  155. <meta http-equiv="content-type" content="text/html; charset=gb2312" /> 
  156. <title>simple ajax commenting system | tutorialzine demo</title> 
  157.  
  158. <link rel="stylesheet" type="text/css教程" href="styles.css" /> 
  159. //開源代碼phpfensi.com 
  160. </head> 
  161.  
  162. <body> 
  163.  
  164.  
  165.  
  166.  
  167. <div id="main"
  168.  
  169. <?php 
  170.  
  171. /* 
  172. / output the comments one by one: 
  173. */ 
  174.  
  175. foreach($comments as $c){ 
  176.  echo $c->markup(); 
  177.  
  178. ?> 
  179.  
  180. <div id="addcommentcontainer"
  181.  <p>add a comment</p> 
  182.  <form id="addcommentform" method="post" action=""
  183.      <div> 
  184.          <label for="name">your name</label> 
  185.          <input type="text" name="name" id="name" /> 
  186.              
  187.             <label for="email">your email</label> 
  188.             <input type="text" name="email" id="email" /> 
  189.              
  190.             <label for="url">website (not required)</label> 
  191.             <input type="text" name="url" id="url" /> 
  192.              
  193.             <label for="body">comment body</label> 
  194.             <textarea name="body" id="body" cols="20" rows="5"></textarea> 
  195.              
  196.             <input type="submit" id="submit" value="submit" /> 
  197.         </div> 
  198.     </form> 
  199. </div> 
  200.  
  201. </div> 
  202.  
  203. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
  204. <script type="text/javascript" src="script.js"></script> 
  205.  
  206. </body> 
  207. </html> 

數據庫結構,代碼如下:

  1. -- 
  2. -- table structure for table `comments` 
  3. -- 
  4.  
  5. create table `comments` ( 
  6.   `id` int(10) unsigned not null auto_increment, 
  7.   `namevarchar(128) collate utf8_unicode_ci not null default ''
  8.   `url` varchar(255) collate utf8_unicode_ci not null default ''
  9.   `email` varchar(255) collate utf8_unicode_ci not null default ''
  10.   `body` text collate utf8_unicode_ci not null
  11.   `dt` timestamp not null default '0000-00-00'
  12.   primary key  (`id`) 
  13. ) engine=myisam  default charset=utf8 collate=utf8_unicode_ci;

Tags: php ajax 留言板

分享到:

天气网首页彩吧