Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何防止文件被删除_Php_Mysql - Fatal编程技术网

Php 如何防止文件被删除

Php 如何防止文件被删除,php,mysql,Php,Mysql,我正在创建一个网站,我可以编辑文本,并上传我的文本图片。图片上传到服务器,文件路径保存在MySQL数据库中。我做了一个函数来更新内容,包括图片。如果我上传一张新照片,旧照片会从服务器上删除 问题是如果我不上传图片,旧图片仍然会被删除 我刚开始编程,我需要你的帮助 我的代码 <?php include_once('../include/config.php'); include_once('../include/functions.php'); getHeader('Boek updat

我正在创建一个网站,我可以编辑文本,并上传我的文本图片。图片上传到服务器,文件路径保存在MySQL数据库中。我做了一个函数来更新内容,包括图片。如果我上传一张新照片,旧照片会从服务器上删除

问题是如果我不上传图片,旧图片仍然会被删除

我刚开始编程,我需要你的帮助

我的代码

<?php

include_once('../include/config.php');
include_once('../include/functions.php');

getHeader('Boek updaten', 'Schrijf een boek!');

if (isset($_GET['action']) == 'save')
{
    $id = $_GET["id"];
    $boek_naam = $_POST['boek_naam'];
    $boek_text = $_POST['boek_text'];
    $boek_genre = $_POST['boek_genre'];


    $allow = array("jpg", "jpeg", "gif", "png");
    if(isset($_FILES['cover']['name'])) {
        $query = $db->prepare("
                    SELECT `boeken_cover` FROM `boeken` WHERE boeken_id = '$id'");
        $query->execute();
        foreach($query->fetchAll() as $row){
            $old_cover = $row['boeken_cover'];
        }
        chmod($old_cover, 0600);
        unlink($old_cover);
        $imgdir = "../images/";
        $fulldir = $imgdir.$_FILES['cover']['name'];
        if (!!$_FILES['cover']['tmp_name']) {
            $info = explode('.', strtolower($_FILES['cover']['name']));
            if (in_array(end($info), $allow)) {
                if (move_uploaded_file($_FILES['cover']['tmp_name'], $imgdir . basename($_FILES['cover']['name']))) {
                    echo "Foto uploaden gelukt";
                }
            }
        }
        try
        {
            $query=$db->prepare("
                    UPDATE `boeken` SET `boeken_naam` = :naam, `boeken_text` = :text, `boeken_genre` = :genre, `boeken_cover` = :fulldir WHERE `boeken_id` ='$id'");
            $query->bindParam(':naam', $boek_naam);
            $query->bindParam(':text', $boek_text);
            $query->bindParam(':genre', $boek_genre);
            $query->bindParam(':fulldir', $fulldir);
            $query->execute();
            echo "Het boek is geupdated. Klik <a href='index.php'>hier</a> om naar het overzicht te gaan.";
        }
        catch(PDOException $e)
        {
            $sMsg = '<p>
                Regelnummer: '.$e->getLine().'<br/>
                Bestand: '.$e->getFile(). '<br/>
                Foutmelding: '.$e->getMessage().'
                </p>';

            trigger_error($sMsg);
        }
    }
    else{
        try
        {
            $query=$db->prepare("
                    UPDATE `boeken` SET `boeken_naam` = '$boek_naam', `boeken_text` = '$boek_text', `boeken_genre` = '$boek_genre' WHERE `boeken_id` ='$id'");
            $query->execute();
            echo "Het boek is geupdated. Klik <a href='index.php'>hier</a> om naar het overzicht te gaan.";
        }
        catch(PDOException $e)
        {
            $sMsg = '<p>
                Regelnummer: '.$e->getLine().'<br/>
                Bestand: '.$e->getFile(). '<br/>
                Foutmelding: '.$e->getMessage().'
                </p>';

            trigger_error($sMsg);
        }
    }
}

else {
    $id = $_GET["id"];

    try {
        $query = $db->prepare("
                    SELECT * FROM `boeken` WHERE boeken_id = '$id'");

        $query->execute();
    } catch (PDOException $e) {
        $sMsg = "<p>
                Regelnummer: " . $e->getLine() . "<br />
                Bestand: " . $e->getFile() . "<br />
                Foutmelding: " . $e->getMessage() . "
                </p>";

        trigger_error($sMsg);
    }
    while ($rij = $query->fetch(PDO::FETCH_ASSOC)) {
        $boeken_id = $rij["boeken_id"];
        $boeken_naam = $rij["boeken_naam"];
        $boeken_genre = $rij["boeken_genre"];
        $boeken_text = $rij["boeken_text"];
    }

    echo "
        <form name = \"boeken updaten\" action=\"?action=save&id=$id\" method=\"post\" enctype=\"multipart/form-data\">
            <table>
                <tr>
                    <td>Boek naam</td>
                    <td><input type=\"text\" name=\"boek_naam\" value=\"$boeken_naam\" required> </td>
                </tr>
                <tr>
                    <td>Boek genre</td>
                    <td><input type=\"text\" name=\"boek_genre\" value=\"$boeken_genre\" required> </td>
                </tr>
                <tr>
                    <td>Cover</td>
                    <td><input type='file' name='cover' id='cover'></td>
                </tr>
                <tr>
                    <td>Inhoud</td>
                    <td><textarea cols='50' rows='20' name='boek_text'>$boeken_text</textarea></td>
                </tr>
                <tr>
                    <td colspan=\"2\" ><input type=\"reset\" name=\"reset\" value=\"Leeg maken\">
                    <input type=\"submit\" name=\"submit\" value=\"Updaten\"</td>
                </tr>
            </table>
        </form>";
}

getFooter();

?>

如果发布的表单有图片或没有图片,您必须在表单中进行检查

if(!empty($_FILES['NAME_OF_YOUR_INPUT_TYPE_FILE']['tmp_name'])){
unlink($oldFile);
}

此代码包含额外的
将具有反转状态的效果

if (!!$_FILES['cover']['tmp_name']) {
表示
if(不是$\u文件['cover']['tmp\u name']){

只使用一个

if (!$_FILES['cover']['tmp_name']) {

尝试更改以下行

if(isset($_FILES['cover']['name'])) {}


欢迎来到SO,请看一看,非常感谢您提供的提示!我知道我在编程方面还不是很好,但我真的很感谢您的帮助!欢迎您,无论您是否是一名优秀的程序员,我们都会在这里提问。因此,如果您以适当的方式进行编程,就可以了。
if(isset($_FILES['cover']['name']) && !empty($_FILES['cover']['name'])) {}