在更新PHP表单上取消链接图像

时间:2014-05-06 05:08:07

标签: php content-management-system unlink object-oriented-database

我正在尝试为自己的网站创建一个相当基本的CMS。我尝试创建图像表单,我可以在其中更新字段以及取消链接旧图像文件并附加新的(如果存在)。当我上传新图像然后返回内容管理页面并更新表单的标题或内容时,我的图像会自动取消链接并从本地服务器上的图像文件夹中删除。任何线索可能是为什么?

以下是一些代码......

if (isset($_POST["updateArea"])) {
    $areaID = $_GET["areaID"];
    $area = Web_areas::find_by_id($areaID);
    $area->title = $_POST['area_title'];
    $area->content = $_POST['area_content'];

    if (isset($_FILES['area_upload'])) {
        $old_target_path = SITE_ROOT.DS.'public'.DS.$area->image_path();
        unlink($old_target_path)
        $area->attach_file($_FILES['area_upload']);
        $area->update_image();

            redirect_to("../public/admin/manage_content.php");

    } else { 

        $area->update();
            redirect_to("../public/admin/manage_content.php");
    }

}

areaID是PHP通过URL传递,然后我使用静态find_by_id从数据库中获取信息并将其实例化为对象属性,然后我可以重新分配新值并进行更新。 Update_image()也会调用update()函数,但它也会使用move_uploaded_file()将图像分配给目录。

如果您需要我提供更多信息以帮助解决此问题,请与我们联系。谢谢!

1 个答案:

答案 0 :(得分:0)

发现问题!!当我应该使用is_uploaded_file()时,我在$ _FILE中使用if(isset());所以代码现在看起来像这样,效果很好!

if (isset($_POST["updateArea"])) {
    $areaID = $_GET["areaID"];
    $area = Web_areas::find_by_id($areaID);
    $area->title = $_POST['area_title'];
    $area->content = $_POST['area_content'];

    if (is_uploaded_file($_FILES['area_upload'])) {
        $old_target_path = SITE_ROOT.DS.'public'.DS.$area->image_path();
        unlink($old_target_path);
        $area->attach_file($_FILES['area_upload']);
        $area->update_image();

            $_SESSION['area_message'] = "Area content and image updated successfully";
            redirect_to("../public/admin/manage_content.php");

    } else { 

        $area->update();
            $_SESSION['area_message'] = "Area content updated successfully";
            redirect_to("../public/admin/manage_content.php");

    }

}