• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

实战:发布文章

Data: 2017-02-17 01:53:13Form: JournalClick: 9

# 实战:发布文章


# 一、跳转到添加页面

<button type="button" class="layui-btn" style="float:right;" onclick="add()">
    <i class="layui-icon layui-icon-addition"></i>添加
</button>
function add(){
    window.location.href='/admin/article_add.php';
}

# 二、判断登录状态

<?php
    if(empty($_COOKIE)){
        echo '<script>window.alert("请先登录");window.location.href="login.php";</script>';
        return false;
    }
?>

# 三、输出账号

<a class="fly-nav-avatar">
    <cite class="layui-hide-xs"><?php echo $_COOKIE['account'] ?></cite>
</a>

# 四、添加文章

<form class="layui-form">
    <div class="layui-form-item">
        <label class="layui-form-label">文章标题</label>
        <div class="layui-input-block">
            <input type="text" class="layui-input" name="title" placeholder="请输入文章标题"/>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">图片</label>
        <div class="layui-input-block layui-upload">
            <button type="button" class="layui-btn" id="test1">上传图片</button>
            <div class="layui-upload-list">
                <img class="layui-upload-img" id="demo1" style="width:100px;" />
                <p id="demoText"></p>
            </div>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">详情</label>
        <div class="layui-input-block">
            <textarea class="layui-textarea" name="content" placeholder="请输入详情"></textarea>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">分类</label>
        <div class="layui-input-block">
        <select name="class" lay-verify="required" lay-search="">
            <option value="">请选择分类</option>
            <option value="1">layer</option>
        </select>
        </div>
    </div>
</form>
<?php
    if(empty($_COOKIE)){
        echo '<script>window.alert("请先登录");window.location.href="login.php";</script>';
        return false;
    }
    if(!empty($_POST)){
        $title = $_POST['title'];
        if(empty($title)){
            echo json_encode(['code'=>1,'msg'=>'请输入标题']);
            return false;
        }
        $content = $_POST['content'];
        if(empty($content)){
            echo json_encode(['code'=>1,'msg'=>'请输入详情']);
            return false;
        }
        $class = $_POST['class'];
        $date = date('Y-m-d');
        try{
            $pdo = new PDO('mysql:host=localhost;dbname=boke', 'root' , 'root' , array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';"));
            $sql = "INSERT INTO article (`title`,`img`,`content`,`date`,`class`)VALUES('{$title}','','{$content}','{$date}','{$class}');";

            $stmt = $pdo->prepare($sql);
            $stmt->execute();
            echo json_encode(['code'=>0,'msg'=>'添加成功']);
        }catch (PDOException $e){
            echo json_encode(['code'=>1,'msg'=>'添加失败']);
        }
        return false;
    }
?>

# 五、分类

$pdo = new PDO('mysql:host=localhost;dbname=boke2', 'root' , 'root' , array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';"));
$stmt = $pdo->prepare('SELECT * FROM class ORDER BY sort DESC,id DESC');
$stmt->execute();
$menu = $stmt->fetchAll();
<div class="layui-form-item">
    <label class="layui-form-label">分类</label>
    <div class="layui-input-block">
        <select name="class" lay-verify="required" lay-search="">
        <option value="">请选择分类</option>
        <?php
            foreach($menu as $menu_v){
        ?>
        <option value="<?php echo $menu_v['id'] ?>">
            <?php echo $menu_v['name'] ?>
        </option>
        <?php
            }
        ?>
        </select>
    </div>
</div>

# 六、上传图片

<div class="layui-form-item">
    <label class="layui-form-label">图片</label>
    <div class="layui-input-block layui-upload">
        <button type="button" class="layui-btn" id="test1">上传图片</button>
        <div class="layui-upload-list">
            <img class="layui-upload-img" id="demo1" style="width:100px;" />
        </div>
    </div>
</div>
layui.use(['layer','form','upload'],function(){
    form = layui.form;
    layer = layui.layer;
    upload = layui.upload;
    $ = layui.jquery;

    var uploadInst = upload.render({
        elem: '#test1'
        ,url: 'up_img.php'
        ,before: function(obj){
            obj.preview(function(index, file, result){
                $('#demo1').attr('src', result);
            });
        }
        ,done: function(res){
            if(res.code > 0){
                layer.msg('上传失败',{'icon':2});
            }else{
                layer.msg('上传成功',{'icon':1});
            }
        }
    });
});

# 七、新建文件

变量描述
$_FILES用来获取通过 POST 方法上传文件的相关信息
<?php
    print_r($_FILES);
?>
  • 开启文件上传路径
# 碰到下面错误,开启上传路径
# <b>Warning</b>:  File upload error - unable to create a temporary file in <b>Unknown</b> on line <b>0</b><br />
upload_tmp_dir = C:\Windows\temp

# 八、拷贝图片

函数描述
json_encode对变量进行 JSON 编码
is_dir检查指定的文件是否是目录
iconv字符串按要求的字符编码来转换
mkdir创建目录
move_uploaded_file将上传的文件移动到新位置
<?php
    if ($_FILES['file']['error'] > 0){
        echo json_encode(['code'=>1]);
    }else{
        if (!is_dir('upload/')){
            $res = mkdir(iconv('UTF-8','GBK','upload/'),0777,true);
        }
        move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$_FILES['file']['name']);
        echo json_encode(['code'=>0]);
    }
?>

# 九、随机文件名

$date = time();
move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$date.'.'.$name[1]);

# 十、保存图片

<div class="layui-upload-list">
    <img class="layui-upload-img" id="demo1" style="width:100px;" />
    <!-- 增加隐藏`input`框,存储上传后的图片地址 -->
    <input type="hidden" class="layui-input" id="img" name="img" />
</div>
,done: function(res){
    //如果上传失败
    if(res.code > 0){
        layer.msg('上传失败',{'icon':2});
    }else{
        //上传成功
        $('#img').val(res.data);
        layer.msg('上传成功',{'icon':1});
    }
}
$file = 'upload/'.$date.'.'.$name[1];
move_uploaded_file($_FILES['file']['tmp_name'],$file);

                
                
                
                
                
                
              
Name:
<提交>