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