0

これは私が少し前に尋ねた質問に似ていますが、これは何の答えも引き付けていないようだったので、もう一度やり直します。

私はあなたがログインする予約システムを持っています、そしてあなたのユーザー名はという名前のクッキーに保存されています$_COOKIE['ID_my_site']。ユーザーがフライトを予約した後に実行されるスクリプトがあり、すべての詳細をテーブル(という名前OABS_customers)に格納します。これは正常に機能しますが、機能しない1つの行は、username行に追加$_COOKIE['ID_my_site']される行です。

テーブルの構造は次のとおりです。

名前タイプ(長さ)Nullデフォルト

name varchar(60)nononameはありません
address1 varchar(60)noaddressなし
address2 varchar(60)noaddress2なし
county varchar(60)nocountyはありません
郵便番号varchar(32)郵便番号なし
顧客tinyint(4)いいえ       
座席varchar(11)いいえ0
番号tinyint(4)いいえ0
class varchar(11)nonoclassなし
username varchar(60)nousernameなし

先ほど言ったように、すべてが正常に機能しますがusername、デフォルト値の.が表示される列がありますnousername。これは私が使用しているコードです。

$query = "INSERT INTO OABS_customers (username) VALUES ('$user')";

ここで$user = $_COOKIE['ID_my_site'](上記のスクリプトの前に定義されています)。

誰かがこの問題を手伝ってくれるなら、私はそれを大いに感謝します。

4

2 に答える 2

2

エスケープされていない、ユーザーが生成した文字列をSQLクエリに入れないでください。悪意のあるユーザーによってCookieが変更される可能性があり、これがSQLインジェクションにつながります。mysql_real_escape_string($user)文字列をエスケープするために使用します。

$_COOKIE['ID_my_site']それが空でないことを確認してください

mysql_query("INSERT INTO OABS_customers (username) VALUES ('". mysql_real_escape_string($user) ."')");
于 2012-05-17T18:45:18.330 に答える
0

MySQLクエリですべてがうまくいきます...

mysql> INSERT INTO data (username) VALUES ('random');
Query OK, 1 row affected (0.08 sec)

mysql> select * from data;
+----+----------+
| id | username |
+----+----------+
|  1 | random   |
+----+----------+
1 row in set (0.00 sec)

値が空のように見えます。$COOKIEクエリを実行すると、PHPは空の文字列をusername値に割り当てます。MySQLは空の値が渡されたことを確認し、デフォルト値をusername列に書き込みます

于 2012-05-17T18:38:58.287 に答える