php实战一个小评论系统

先看一下实战结果,下面再分享实战过程


image.png

准备:phpStorm+wampserver+chrome浏览器+准备好的前端代码、js、css、图片(下面没框住的部分都是准备好的)


image.png

1、数据库连接公共部分 connect.php

errno){
        // 连接错误数>1 输出错误
        die("Connect Error: " + $mysqli->error);
    }else{
        $mysqli->set_charset("utf8");
    }

2、写Comment类

data=$data;
    }
    /**
     * 检测用户输入的数据
     * @param array $arr
     * @return boolean
     */
    public static function validate(&$arr){

        if(!($data['email']=filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL))){
            $errors['email']='请输入合法邮箱';
        }
        if(!($data['url']=filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL))){
            $url='';
        }
        // 检测判断使用回调函数
        if(!($data['content']=filter_input(INPUT_POST,'content',FILTER_CALLBACK,array('options'=>'Comment::validate_str')))){
            $errors['content']='请输入合法内容';
        }
        if(!($data['username']=filter_input(INPUT_POST,'username',FILTER_CALLBACK,array('options'=>'Comment::validate_str')))){
            $errors['username']='请输入合法用户名';
        }

        // 数组范围 options设置成1到5
        $options=array(
            'options'=>array(
                'min_range'=>1,
                'max_range'=>5
            )
        );
        if(!($data['face']=filter_input(INPUT_POST,'face',FILTER_VALIDATE_INT,$options))){
            $errors['face']='请选择合法头像';
        }

        if(!empty($errors)){
            $arr=$errors;
            return false;
        }
        $arr=$data;
        // 邮箱字母转小写
        $arr['email']=strtolower(trim($arr['email']));
        return true;
    }

    /**
     * 过滤用户输入的特殊字符
     * @param string $str
     * @return boolean|string
     */
    public static function validate_str($str){
        // gb2312中,strlen计算字符长度时,一个中文字符算2个长度。 utf8 一个中文字符算3个长度
        if(mb_strlen($str,'UTF8')<1){
            return false;
        }
        $str=nl2br(htmlspecialchars($str,ENT_QUOTES));
        return $str;
    }

    /**
     * 显示评论内容
     * @return string
     */
    public function output(){
        $link_start = '';
        $link_end = '';
        if($this->data['url']){
            $link_start="";

            $link_end="";
        }
        $dateStr=date("Y年m月d日 H:i:s",$this->data['pubTime']);
        $res=<<
            
{$link_start} {$link_end}
{$link_start} {$this->data['username']} {$link_end}
{$dateStr}

{$this->data['content']}

EOF; return $res; } }

3、doAction.php 先检测用户提交的数据,检测通过后才入库提交。

prepare($sql);
        $arr['pubTime'] = time();
        $mysqli_stmt->bind_param("sssssi",$arr['username'],$arr['email'],$arr['url'],$arr['face'],$arr['content'],$arr['pubTime']);
        $mysqli_stmt->execute();

        $comment = new Comment($arr);
        echo json_encode(array('status'=>1,'html'=>$comment->output()));
    }else{
        echo '{"status":0,"errors":'.json_encode($arr).'}';
    }

4、index.php,在每次刷新首页时需要显示数据信息,先查询评论,再显示出来

query($sql);
if($mysqli_result&& $mysqli_result->num_rows>0){
    while($row=$mysqli_result->fetch_assoc()){
        $comments[]=new Comment($row);
    }
}
?>



    
    Document
    


    

慕课网评论系统

output(); } } ?>
                   

你可能感兴趣的:(php实战一个小评论系统)