2017-09-26 9 views
0

私はこのページでphpページを持っていますmysqlのデータを同じページのテーブルに表示しています。私はHTML形式の検索とその結果検索は同じページにも表示されます。PHPボタンやリンクをクリックした後に検索結果に戻る

この表の各行にはアイコンdeleteがあります。このアイコンをクリックすると、mysqlデータベースからこの行の情報が削除されます。

この私の削除コード

if(isset($_GET['delete'])){ 
    $deleteid=secure($_GET['delete'],"num"); 
    $checkQuery=mysqli_query($conn,"select column from table where column='$deleteid' limit 1")or die(mysqli_error($conn)); 
    if(mysqli_num_rows($checkQuery)==1){ 
     dbRowDelete("table","WHERE column='$deleteid'"); 
     header("location:gm-tasks.php?msg=8"); 
    }else{ 
     header("location:gm-tasks.php"); 
    } 
} 

私のショーデータと検索コードの例:

if(!isset($_POST['submit']) || isset($_POST['clear'])){ 
//show all data 
} 

if(isset($_POST['submit'])) { 
//Show search results 
} 

私の質問は、私は、検索結果にバックアップする行を削除することができた後、どのようにです。

私はすべてのデータを表示するために削除したくありません。私は削除された行なしで検索の結果を表示したいだけです。

私はこの$_SERVER['http_referrer'];を試してみましたが、それはあなたがPOSTを持っている私の問題

+2

あなたのコードは潜在的にSQLインジェクション攻撃の脆弱性があります。パラメーター化された照会とプリペアドステートメントを使用して、悪意のある入力値を使用して攻撃者がデータベースを侵害しないようにする必要があります。 http://bobby-tables.comでは、PHP/mysqliを使用して質問を安全に書く方法のいくつかの例と、リスクの説明を示します。 unsanitisedデータをSQLに直接挿入しないでください。 – ADyson

+1

あなたの質問については、検索結果が最初にどのように表示されるかわからないため、戻って返す方法については言えません。おそらく、最新の検索に関連するいくつかのパラメータを渡すか保存する必要があります。 – ADyson

+1

データを変更するために 'GET'を使うのは悪い習慣です。 'GET'パラメータは、データの取得にのみ*使用する必要があります。 – IsThisJavascript

答えて

5

を解決し、後方GETしませんでした。

  • GETは安全です。あなたは物事を削除するためにGETを使うべきではありません。 POSTは危険です。あなたは物事を削除するためにPOSTを使うべきです(それはDELETEです。これは通常のフォーム提出では実用的ではありません)。 (これはHTTP仕様に準拠しています)。
  • GETは情報を取得するように設計されています。データを表示するために検索するときは、GETを使用する必要があります。
  • GETはURLにデータを格納するため、リンクすることができます。 POSTは行いません。検索結果にリンクする必要があります。
+0

大丈夫あなたが取得するために私の検索フォームを変更し、どのデータを削除するために投稿を使用して –

+0

私の検索結果? –

+0

検索結果には独自のURLがあり、リンクすることができます。リファラーがその仕事をする可能性があります。または、隠された入力を持つPOSTデータ内の現在のページのURLをエンコードすることもできます。 – Quentin

関連する問題