使用链接删除文件

时间:2010-05-07 03:39:53

标签: php

我希望通过使用链接而不是按钮来删除数据库中的文件。我怎样才能做到这一点?我需要使用href / unlink或者什么? 我可以做弹出确认,是或否。我知道该怎么做,但我应该把代码放在哪里?

这是系统如何显示所有文件名并直接上传的部分。在每个文件旁边,都会有一个“删除”功能:

$qry = "SELECT * FROM table1 a, table2 b
       WHERE b.id = '".$rs[id]."' AND a.ptkid = '".$rs[id]."' ";
$sql = get_records_sql($qry);
foreach($sql as $rs){ ?>              
        <?echo '<a href="download.php?f='.$rs->faillampiran.'">'. basename($rs->faillampiran).'</a>';
        ?><td><?echo '<a href="">      [Remove]</a>';?></td><?
        ?><br>  
        <? } 
        ?>

谢谢所有

5 个答案:

答案 0 :(得分:3)

这样做的优雅方式是同时使用PHP和JavaScript。 PHP是一种服务器端语言,应尽可能从客户端端删除。一个很好的方法就是基本上创建一个API。

API将是一个删除行的PHP脚本。它在via GET中接受一个变量,并返回一个布尔值,表示“是的,我们删除了行”或“出错了”。我喜欢使用JSON,它在JavaScript中比XML更容易使用,以及jQuery的getJSON函数,这个包使得真的很容易开始。

在.php文件中(稍后我们称之为api.php),如果结果成功则返回成功布尔值。我们在数组上使用PHP的json_encode,并回显结果:

$variable = someFunctonToSanitize($_REQUEST['idToDelete']);
$query_to_run = "delete query using $variable";
$result = mysql_query($query_to_run);
// set headers
header('Content-type: text/json');
header('Content-type: application/json');
// if the query was successful, echo true
if($result) {
   echo json_encode(array("success"=>"true"));
} else { // else echo false
   echo json_encode(array("success"=>"false"));
}

在你的JavaScript中,这里使用jQuery(不鼓励,请参阅下面的评论):

$('#deleteLink').click(function(event) {
   // prevent link from actually going anywhere
   event.preventDefault();
   // Fire off API request
   $.getJSON("api.php?idToDelete=whatever", function(data){
     if(data.success) {
     alert("Item was deleted.");
     } else {
        alert("There was an error");
     }
   });
 });

根据@Col的.post()请求。 Shrapnel和@josh3736的评论(注意:还将$ _GET更改为$ _REQUEST以同时使用):

$.post("api.php", { "idToDelete": "whatever" },
   function(data){
         if(data.success) {
            alert("Item was deleted.");
         } else {
            alert("There was an error");
         }
   }, "json");

在您的HTML中:

<a href="#" id="deleteLink">Delete!</a>

答案 1 :(得分:1)

没有链接或按钮可用于数据库交互。执行此类操作是服务器端代码。您必须了解您的应用程序有3层:

  • HTML表单
  • 服务器端代码
  • 数据库

第一个不能直接与最后一个互动。
因此,一方面,无关紧要,通过链接或按钮,您可以调用服务器端代码(代码保持不变)。
但是,另一方面,有一条规则:

  

使用GET方法(链接)来请求信息和POST(表单/按钮)来修改它。

所以,你不应该使用链接删除文件,因为一些太聪明的机器人可以在一秒钟内擦除你的所有数据库。

关于你在哪里放置代码的问题,只需编写一个php脚本unlink.php,它通过硬编码路径删除文件。然后,在完成此操作后,将此文件设为HTML表单的操作。硬编码的。完成后 - 您可以尝试从数据库生成此表单 这种 - 逐步的方式 - 是开发wab-application的唯一可行方法

答案 2 :(得分:0)

建立链接:

<a href="/delete.php?......">Delete</a>

然后创建一个处理删除的delete.php,并确保您检查会话是否已获得授权

答案 3 :(得分:0)

在PHP中,您使用unlink()删除文件。如果您提供一个接受文件名(或更好,文件ID)作为参数的页面,则可以在文件上调用unlink()。显然,您需要考虑一些严重的安全隐患。

答案 4 :(得分:-1)

要确认删除,请在onclick函数()

中使用它

在href标签中,本身:

<a href="" onclick="return ConfirmDelete();" ></a>

在上部页面使用这样的javascript,

function ConfirmDelete() {
  var confm = window.confirm("Are you sure want to delete this !");
  if(confm == true) {
      return true;
  } else {
      return false;
  }
}

对于删除选项,给出相同的页面链接并传递参数并通过get function

获取参数
<a href='samepagename?deleteid='.<?php echo $id;?>

在这样的参数使用中,

$deleteid = $_GET["deleteid"];