Удалить файл onclick с помощью PHP [закрыт]
Я хочу удалить файл, когда пользователь нажимает на ссылку удалить. Но когда я захожу на свою страницу, файл удаляется, и я не знаю, почему:
echo '<h3><a onclick="'.unlink(__FILE__).'">Delete Now!</a></h3>';
Что я делаю не так?
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__);
}
?>
Вам необходимо загрузить это действие с помощью 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);
Это 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
}
Вы не понимаете разделения между клиентским и серверным кодом. Javascript не может просто так вызывать PHP. PHP запустится сразу же, как только страница будет создана на сервере, а не сохранена для последующего использования.
Вам нужно будет сделать запрос AJAX, чтобы удалить ONCLICK, или создать новую страницу, такую как /delete/$ID/, которая будет удалена для вас, или, как Джослин только что опередила меня, сделать ту же страницу доступной для удаления, если установлен параметр GET/POST.
Хотя, стоит отметить, что __FILE__
- это файл, в котором находится этот код, поэтому он сам себя убьет.
Вы не можете запустить функцию PHP как событие onclick, javascript. Вам нужно запустить эту функцию следующим образом:
<?php
if (isset($_GET['delete'])) {
unlink($_GET['delete']);
}
?>
<html>
<a href="?delete=/PATH/TO/FILE">Delete Now</a>
</html>
Вам нужен запрос post, который обрабатывает php... или функция ajax/javascript, которая запускает php-скрипт...
Вот пример с ajax http://www.website-php.com/de/tutorials/treeview/treeview-04.html