Удалить файл onclick с помощью PHP [закрыт]


Я хочу удалить файл, когда пользователь нажимает на ссылку удалить. Но когда я захожу на свою страницу, файл удаляется, и я не знаю, почему:

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

Что я делаю не так?

 4
Author: Nathaniel Ford, 2012-11-08

6 answers

Этот код удалит текущий файл, когда пользователь нажмет на ссылку:

<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__);
    }
?>
 7
Author: Jocelyn, 2012-11-08 19:07:09

Вам необходимо загрузить это действие с помощью 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);
 5
Author: eusoj, 2012-11-08 19:53:04

Это PHP? Вы не можете запустить функцию PHP из javascript. Вместо этого вам нужно загрузить/перенаправить/опубликовать в 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
}
 3
Author: alloyking, 2012-11-08 19:08:11

Вы не понимаете разделения между клиентским и серверным кодом. Javascript не может просто так вызывать PHP. PHP запустится сразу же, как только страница будет создана на сервере, а не сохранена для последующего использования.

Вам нужно будет сделать запрос AJAX, чтобы удалить ONCLICK, или создать новую страницу, такую как /delete/$ID/, которая будет удалена для вас, или, как Джослин только что опередила меня, сделать ту же страницу доступной для удаления, если установлен параметр GET/POST.

Хотя, стоит отметить, что __FILE__ - это файл, в котором находится этот код, поэтому он сам себя убьет.

 3
Author: Josh, 2012-11-08 20:52:28

Вы не можете запустить функцию PHP как событие onclick, javascript. Вам нужно запустить эту функцию следующим образом:

<?php
    if (isset($_GET['delete'])) {
        unlink($_GET['delete']);
    }
?>
<html>
   <a href="?delete=/PATH/TO/FILE">Delete Now</a>
</html>
 2
Author: Darius, 2012-11-08 18:29:41

Вам нужен запрос post, который обрабатывает php... или функция ajax/javascript, которая запускает php-скрипт...

Вот пример с ajax http://www.website-php.com/de/tutorials/treeview/treeview-04.html

 1
Author: Jurudocs, 2012-11-08 18:29:23