2016-08-28 5 views
3

私はプロセスの従業員休暇記録のためにPHPアプリケーションを構築しています。このアプリケーションでは、メイン画面にデータベースレコードとアクションボタンが表示されます。ユーザーがアクションボタンをクリックすると、テーブルからデータベースIDを取得し、別のファイルを参照してレコードを削除し、同じページにリダイレクトします。このメカニズムは、HTML _GETメソッドを使用して実装されました。つまり誰でもURLフィードの行IDを見ることができ、誰かが別の行IDでこのURLを要求した場合、PHPファイルは他のセキュリティ対策が行われていないのでそのレコードを削除します。また、このアプリケーションはどんな種類のセッションも使用していません。投稿と同じPHPページでデータベースを削除する処理

これは上記のタスクのhrefコードです。どのように私は別のPHPにリダイレクトすることなく、同じPHPファイル内rejectoneタスクを実行することができます

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>"; 

、これは私は2つの質問

1を持っている私のrejectone.phpコード

<?php 
$lid =$_GET['id']; 
include 'database.php'; 
$accval = "Accept"; 
try { 
    $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = '$lid'"; 
    $stmt = $con->prepare($query); 
    $stmt->bindParam(1, $id); 
    $stmt->execute(); 
} 

catch(PDOException $exception){ 
    die('ERROR: ' . $exception->getMessage()); 
} 
header("refresh:0;url=bs.php");   
?> 

です)ファイル

2.)jejectone.phpファイルをまだ使用している場合、getメソッドの代わりにHTML _POSTメソッドを使用してデータを転送するにはどうすればよいですか

ありがとうございます!ただ、あなたのサイト上でのjQueryを含めていない場合は、あなたがあなたのページにこのスクリプトを追加することによってそれを行うことができます

echo '<a href="javascript:;" class="btn btn-danger btn-xs m-r-1em delete-item" primary-key="'.$lvid.'">Cancal</a>'; 

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>"; 

答えて

0

まず第一に、あなたの行を変更します </head>タグ

<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script> 

を閉じる前に、このJavaScriptファイルのトンを追加、あなたのページの下部oをちょうど</body>

<script type="text/javascript"> 

$(document).ready(function(){ 
    $(document).on('click', '.delete-item', function(e){ 

     e.preventDefault(); 
     if(!confirm('Are you sure you want to delete this item?')) return false; 

     $.post('bs.php', {'id': t.attr('primary-key'), 'delete_item': 1}, function(e){ 
      window.location = 'bs.php'; 
     }) 

    }) 
}) 

</script> 

を閉じる前にbs.phpが、これらの変更を行うためにあなたのrejectone.phpをコピーします。

if(isset($_POST['delete_item'])) 
{ 
    $lid = (int)$_POST['id']; 
    include 'database.php'; 
    $accval = "Accept"; 
    try { 
     $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = :lid "; 
     $stmt = $con->prepare($query); 
     $stmt->bindParam(':lid', $lid); 
     $stmt->execute(); 
    } 

    catch(PDOException $exception){ 
     die('ERROR: ' . $exception->getMessage()); 
    } 

} 

それであること。

+0

完全な回答ありがとうございます。何とかこれは動作していません。ボタンのWebページをクリックするとjavascriptの確認が表示されますが、行が更新されませんでした –

+0

PDOの 'bindParam'が更新されました。 –

+0

これを実行すると、FireFoxのコンソールウィンドウに「ReferenceError:t is not defined」というエラーが表示されます –

-2

ajax postメソッドを使用します。詳細については、サンプルコードを含む受け入れられたソリューションの完全な例を参照してください。Delete MySQLi record without showing the id in the URL jqueryを使用すると、ページからそのレコードが削除され、より優れたUIエクスペリエンスが得られます。

+0

答えと一緒に例を挙げてください。 [他の場所にリンクが入っているだけで本当に "良い答え"ですか?](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) – Novocaine

+0

私は重複を避けるために、受け入れたソリューションURLでコメントを更新しました。それは理にかなっていますか ? – Senthil

関連する問題