PHP develops simple guestbook encapsulated database class
Earlier we mentioned setting up a class LyDB that uses a database.
Here we encapsulate all the SQL and paging functions and call them directly later:
<?php class LyDB{ var $_host="localhost"; var $_user="root";// var $_password="root"; var $_database="test"; var $page_size=3; var $link; public function __construct(){ //連接數(shù)據(jù)庫 date_default_timezone_set('PRC'); $this->link = mysqli_connect($this->_host,$this->_user,$this->_password,$this->_database); if (!$this->link) { die('Could not connect to MySQL: ' . mysqli_connect_error()); } } public function __destruct(){ mysqli_close($this->link); } public function insert($nickname,$avatar,$message) //添加留言內(nèi)容到數(shù)據(jù)庫 { $message=str_replace ("<" , "<" , $message); //str_replace() 函數(shù)以其他字符替換字符串中的一些字符(區(qū)分大小寫)。 $message=str_replace (">" , ">" , $message); $message=str_replace ("\n" , " " , $message); $message=trim($message); //trim() 函數(shù)移除字符串兩側(cè)的空白字符或其他預定義字符。 $lytime=date("Y-m-d H:i:s"); $sql="insert into ly (nickname,message,avatar,lytime)values('$nickname','$message','$avatar','$lytime')"; $query=mysqli_query($this->link,$sql); if($query){ return true; } else { return false; } } public function reply($id,$reply){ $message=str_replace ("<" , "<" , $reply); $message=str_replace (">" , ">" , $message); $message=str_replace ("\n" , " " , $message); $message=trim($message); $reply=$message; $retime=date("Y-m-d H:i:s"); $sql="update ly set reply='$reply', retime='$retime' where id=$id"; $query=mysqli_query($this->link,$sql); if($query)return true; else return false; } public function delete_by_id($id){ //刪除留言 $sql="delete from ly where id=$id"; mysqli_query($this->link,$sql); } public function select_page_info(){ //分頁 $sql = "select count(*) as pagecount from ly"; $query = mysqli_query($this->link,$sql); $row = mysqli_fetch_assoc($query); $ly_count=$row["pagecount"]; $page_count=($ly_count%$this->page_size==0)?($ly_count/$this->page_size):($ly_count/$this->page_size+1); $page_info=array("ly_count"=> $ly_count,"page_count"=>(int)$page_count,"page_size"=>$this->page_size); return $page_info; } public function select_all_result(){ //查詢顯示留言 $sql="select * from ly order by id desc"; $query=mysqli_query($this->link,$sql); return $query; } public function select_page_result(&$page_no){ //上一頁,下一頁,首頁,末頁 $page_info=$this->select_page_info(); if(!isset($page_no))$page_no=1; else if($page_no<1)$page_no=1; else if($page_no>$page_info["page_count"])$page_no=$page_info["page_count"]; $first=($page_no-1)*$this->page_size; $sql="select * from ly order by id desc limit $first,$this->page_size "; $query=mysqli_query($this->link,$sql); $page_result=array("page_data"=>$query,"page_info"=>$page_info,"page_no"=>$page_no); return $page_result; } } ?>
Give this class file A name: lydb.class.php
Administrator login and permission judgment also create a called class authority.class.php file
<?php class Authority{ static public function check_insert(){ //聲明公共變量 //檢查是否具有添加留言權(quán)限 return true; } static public function check_delete(){ //檢查是否具有delete權(quán)限 if(isset($_SESSION["username"]) && $_SESSION["username"]=="admin") return true; else return false; } } ?> <?php class User{ static public function validate($username,$password){ // static public 聲明公共變量 if("admin"==$username && "12345"==$password){ return true; } else return false; } } ?>
and then directly reference it on the front-end page. Can:
<?php require_once("lydb.class.php");?> <?php require_once("authority.class.php");?>
require_once() statement includes and runs the specified file during script execution (in layman terms, the files in brackets will be executed once). This behavior is similar to the require() statement, the only difference is that if the code in the file is already included, it will not be included again.