4

当用户单击删除链接时,我想删除文件。但是当我转到我的页面时,文件被删除了,我不知道为什么:

echo '<h3><a onclick="'.unlink(__FILE__).'">Delete Now!</a></h3>';

我究竟做错了什么?

4

6 回答 6

8

当用户单击链接时,此代码将删除当前文件:

<h3><a href="?delete=1">Delete Now!</a></h3>

<?php
    if(isset($_GET['delete']))
    {
        unlink(__FILE__);
    }
?>

如果您更喜欢使用 POST 而不是 GET 方法,请使用以下代码:

<form method="post">
   <input name="delete" type="submit" value="Delete Now!">
</form>    

<?php
    if(isset($_POST['delete']))
    {
        unlink(__FILE__);
    }
?>
于 2012-11-08T18:26:59.013 回答
5

您需要通过 Javascript 加载此操作。如果你使用 jQuery,你不能尝试这样的事情

你的 Javascript

<script type="text/javascript">

$('.delete').live('click',function(){ 
  deleteFile( $(this).attr('id') );
});

function deleteFile(id){
    $.ajax({
        url: 'deletefile.php?fileid='+id,
        success: function() {
            alert('File deleted.');
        }
    });
}
</script>

你的 deletefile.php 看起来像这样。

<?php
    $fileid = $_GET['fileid'];
    //HERE IS THE LOGIC TO FIND THE PATH OF YOUR FILE
    unlink($file); //You can add more validations or full paths
?>

并且您的链接必须具有以下结构

printf("<a id='%s' class='delete'>Delete</a>",$youridfile);
于 2012-11-08T18:37:35.380 回答
3

您不了解客户端和服务器代码之间的分离。Javascript 不能像那样调用 PHP。当页面在服务器上构建时,PHP 将立即运行,而不是存储以供以后使用。

您需要发出 AJAX 请求来删除 onClick,或者创建一个像 /delete/$ID/ 这样的新页面,该页面将为您删除,或者,正如 Jocelyn 刚刚击败我的那样,使同一页面能够删除,如果GET / POST 参数已设置。

虽然,值得注意的__FILE__是代码所在的文件,所以它会自杀。

于 2012-11-08T18:27:08.780 回答
3

这是 PHP 吗?您不能从 javascript 中运行 PHP 函数。相反,您需要加载/重定向/发布到 php 文件。

echo '<h3><a href="deleteScript.php" >Delete Now!</a></h3>';

编辑:

function table_exists($tablename, $database = false) {

if(!$database) {
    $res = mysql_query("SELECT DATABASE()");
    $database = mysql_result($res, 0);
}

$res = mysql_query("
    SELECT COUNT(*) AS count 
    FROM information_schema.tables 
    WHERE table_schema = '$database' 
    AND table_name = '$tablename'
");

return mysql_result($res, 0) == 1;

}

if(table_exists('my_table_name')) {
    // do something
}
else {
// do something else
}
于 2012-11-08T18:28:43.397 回答
2

您不能将 PHP 函数作为 onclick、javascript 事件运行。您需要以如下方式运行该功能:

<?php
    if (isset($_GET['delete'])) {
        unlink($_GET['delete']);
    }
?>
<html>
   <a href="?delete=/PATH/TO/FILE">Delete Now</a>
</html>
于 2012-11-08T18:29:41.023 回答
1

您需要一个 php 处理的发布请求...或运行 php 脚本的 ajax/javascript 函数...

这是一个带有 ajax 的示例http://www.website-php.com/de/tutorials/treeview/treeview-04.html

于 2012-11-08T18:29:23.580 回答