0

次のような非表示フィールドを持つフォームがあります。

     <form id="myform" method="post" action="/myphp.php">

        <div>
            <label for="name">Name</label>
            <input type="text" id="name" name="name" />
        </div>
        <div>
            <input type="hidden" id="id" name="title" value="Bob's Group (test)" />
        </div>
        <div>     
            <input type="submit" value="Sign up" class="send_button" />
        </div>   


      </form>

非表示の値「タイトル」は、Perch CMS php インライン スクリプトからその値を取得します。この場合は、「ボブのグループ (テスト)」です。

このフォームを処理する php スクリプトは次のようになります。

<?php

// Get and check input
$title = check_input($_POST['title']);
echo "title: $title<br>";

$name = check_input($_POST['name']);

$title = mysql_real_escape_string($title);

// Some sql queries that use $title
?>

出力は次のようになります。

title: ボブのグループ (テスト) title:

つまり、mysql_real_escape_string により、タイトルが空白の文字列になります。

このフォームの値を処理し、使用する安全な SQL 文字列を生成する方法はありますか?

4

2 に答える 2

0

mysql_real_escape_string()MySQLサーバー側です。アクティブなDB接続が必要です。チェックの瞬間に持っているかどうかを確認してください。

アドバイスではなく、メモmysql_escape_string()です。クライアント側です。つまり、アクティブなMySQL接続がなくてもPHPで機能します。

于 2012-09-02T17:21:16.760 に答える
0

msyql_real_escape_string()が機能するには、MySQLへのアクティブな接続が必要です。接続していないため、m_r_e_s()からブール値のFALSEが返される可能性が高く、エラーが発生します。もし、するなら

$title = mysql_real_escape_string($title) or die(msyql_error());
                                         ^^^^^^^^^^^^^^^^^^^^^^

ほとんどの場合、「接続されていません」というエラーメッセージが表示されます。

m_r_e_sが適切にエスケープできるように接続が必要です。基本的に、エスケープする必要のあるメタ文字が何であるかをサーバーに尋ねて、サーバーが適切にジョブを実行できるようにします。

于 2012-09-02T17:21:34.653 に答える