ユーザーが削除リンクをクリックしたときにファイルを削除したい。しかし、自分のページに移動すると、ファイルが削除され、理由がわかりません。
echo '<h3><a onclick="'.unlink(__FILE__).'">Delete Now!</a></h3>';
私は何が間違っているのですか?
このコードは、ユーザーがリンクをクリックすると現在のファイルを削除します。
<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__);
}
?>
このアクションは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);
クライアントコードとサーバーコードの分離を理解していません。JavascriptはそのようにPHPを呼び出すことはできません。PHPは、ページがサーバー上に構築されるとすぐに実行され、後で使用するために保存されることはありません。
onClickを削除するには、AJAXリクエストを作成するか、/ delete / $ ID /のような新しいページを作成して削除するか、Jocelynが私を殴ったように、同じページを削除できるようにする必要があります。 GET/POSTパラメータが設定されています。
ただし、それがそのコードが含まれているファイルであることに注意する価値がある__FILE__
ので、それはそれ自体を殺すでしょう。
これは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
}
PHP関数をonclick、javascriptイベントとして実行することはできません。次のような方法でその関数を実行する必要があります。
<?php
if (isset($_GET['delete'])) {
unlink($_GET['delete']);
}
?>
<html>
<a href="?delete=/PATH/TO/FILE">Delete Now</a>
</html>
phpが処理するPOSTリクエストが必要です...またはphpスクリプトを実行するajax/javascript関数...
これはajaxの例ですhttp://www.website-php.com/de/tutorials/treeview/treeview-04.html