まず、URL の構成が正しくありません。そのはず:
http://www.domain.com/delete.php?del=25
次に、del
viaGET
を使用して値にアクセスできます。
$del_id = $_GET['del'];
$strSQL = "DELETE FROM records WHERE record_id = $del_id";
mysql_廃止されました。代わりにmysqli_ または (さらに良い) PDO を使用する必要があります。
上記のコードは、mysql インジェクションと呼ばれるものの影響を受けやすくなっています。
経験則として、ユーザーからのデータは絶対に信頼しないでください。あなたがここでやっていることは、誇張なく悲惨なことです。
例:
//GET value: dave
query = " SELECT username, password FROM users WHERE username=$name ";
//Translates to:
query = " SELECT username, password FROM users WHERE username='dave' ";
//malicious input
//GET value: 'OR'1
query = " SELECT username, password FROM users WHERE username=$name ";
//Translates to:
query = "SELECT username, password FROM users WHERE username=''OR'1' ";
ここで厄介なのは、 1 が true と評価されるため、users テーブル内のすべてのユーザー名とパスワードが返されることです!
mysqli_real_escape_string() が救助に
口では言いますが、この関数は、MySQL に適した '\' 引用符を使用してインジェクションの試行を回避することにより、セーフガードを提供します。
したがって、この関数を使用してすべての GET/POST データをポンピングすると、セキュリティのレイヤーが提供されます。
$name = mysqli_real_escape_string($_POST['username'];
うまくいけば、それは理にかなっています。ラプソディゼーションにもかかわらず、代わりにmysqli_real_escape_string()
もう少し洗練されたものを使用することを (ある時点で) 検討することを強くお勧めしPDO
ます。