0

私はプロジェクトのバックエンドに取り組んでおり、このスニペットに小さな問題があります

if (isset($_POST['id'])) {
    $cat_delete = "DELETE FROM category WHERE categoryid='".$_POST['id']."' ";
    $cat_delete_ex = mysql_query($cat_delete);}`

しかし、id が post で設定されている場合、何も起こりません。

を削除すると、mysqlクエリが機能しています

if (isset($_POST['id']))

誰にもアイデアがありますか?

4

2 に答える 2

1

あなたのメソッドが安全かどうかはわかりませんが、私はこのようにします.

編集: ID を扱っているため、改訂を行いました。ID は数値のみであると想定するため、エスケープする代わりに、数値以外のすべてを削除します。これは、あなたの状況により適しているかもしれません。また、関数をクラスに変換したので、スクリプトをいくつかのタイプのサニタイズ文字列に再利用できます。たぶん、私もやり過ぎだから、わかりません。ADD、OCDなど。そのせいです:)

$postID = isset($_POST['id']) ? sanitize::ID($_POST['id']) : '';

if (sanitize::email("test@example.com")){
    echo "Real email";
} else {
    echo "Fake email";
}

if ($postID != ''){
    $cat_delete = "DELETE FROM category WHERE categoryid='".$postID."' "; 
    $cat_delete_ex = mysql_query($cat_delete);
}

class sanitize{
    function ID($string){
        $string = preg_replace('/[^0-9,]|,[0-9]*$/','',$string);
        return $string;
    }
    # I added another sanitize function so you can see what you can do
    # with it. Add phone numbers, domain names, etc... Each one could
    # be called with sanitize::{FUNCTION}
    function email($string){
        if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $string)) {
            return false;
        }
        $email_array = explode("@", $string);
        $local_array = explode(".", $email_array[0]);
        for ($i = 0; $i < sizeof($local_array); $i++) {
            if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",$local_array[$i])) return false;
        }
        if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
            $domain_array = explode(".", $email_array[1]);
            if (sizeof($domain_array) < 2) return false;
            for ($i = 0; $i < sizeof($domain_array); $i++) {
                if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) return false;
            }
        }
        return true;
    }
}
于 2012-10-29T11:45:04.013 に答える
0

id に post を使用していてよろしいですか?

<form action="action.php?id=hereistheid"

これにより、ID が $_POST ではなく $_GET に含まれます。次はチェック

$id=(int)$_POST['id'];
if($id)
{
//do smth
}
于 2012-10-29T11:56:38.910 に答える