タイトルの表現が悪くて申し訳ありません。この状況を他に何と呼べばいいのかわかりません。
これが私のジレンマです。楽しみのために、人々がバトルフィールド 3 サーバーの名前、プラットフォーム、および場所を送信できるように、口コミに頼る必要がなくなるように、ちょっとしたことをしています。
この古いコードは正常に動作し、レコードを削除してその仕事をします。
<?php
mysql_connect('localhost', 'root', 'pass');
mysql_select_db('database');
$server_secret = mysql_real_escape_string($_POST['secret_initial']);
$server_confirm = mysql_real_escape_string($_POST['secret_verify']);
if ($server_secret == $server_confirm) {
echo "Both matched.";
if ((strlen($server_secret) < 6) and (strlen($server_verify) < 6)) {
echo "Password too short.";
} else {
echo "Password is of proper length.";
$sql = "DELETE FROM `servers` WHERE secret='" . sha1($server_secret) . "'";
mysql_query($sql) or die("Couldn't delete record. " . mysql_error());
}
} else {
echo "Mismatch.";
}
?>
ただし、これを使用すると:
<?php
mysql_connect('localhost', 'root', 'pass');
mysql_select_db('database');
// Create variables from form
$server_secret = mysql_real_escape_string($_POST['secret_initial']);
$server_confirm = mysql_real_escape_string($_POST['secret_verify']);
// Check for verification
if ($server_secret == $server_confirm) {
// Delete from database
$sql = "DELETE FROM `servers` WHERE secret='" . sha1($server_secret) . "'";
if (mysql_query($sql) or die("Couldn't delete record. " . mysql_error()) {
$success = true;
} else {
$success = false;
}
}
?>
$success が false の場合でも、常に true として報告されます。また、シークレットと検証の両方が正しい場合でも、MySQL データベースからエントリが削除されないことも混乱を招きます。
古いバージョンでも問題なく動作します。それが私を困惑させるものです。
成功を確認するために使用したのと同じ方法 ( if (mysql_query($sql)
) は、挿入には問題なく機能し、失敗した場合は実際にフィードバックを返しますが、レコードを削除しようとすると、何らかの理由で常に成功が報告されます。
誰かがここで私を助けることができれば、本当に感謝しています。
注意: 私は PHP/MySQL の初心者なので、ご容赦ください。