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__);
    }
?>

GETメソッドの代わりにPOSTを使用する場合は、次のコードを使用してください。

<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は、ページがサーバー上に構築されるとすぐに実行され、後で使用するために保存されることはありません。

onClickを削除するには、AJAXリクエストを作成するか、/ 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が処理するPOSTリクエストが必要です...またはphpスクリプトを実行するajax/javascript関数...

これはajaxの例ですhttp://www.website-php.com/de/tutorials/treeview/treeview-04.html

于 2012-11-08T18:29:23.580 に答える