1

mySQLに新しいレコードを挿入するたびに、regデータの最後に接尾辞として文字「v」を追加する必要があります。

これが私の挿入スクリプトです。クライアントがこのPHPアクションを送信して挿入するときに、文字「v」をregデータに配置することは可能ですか?

<?
$order = "INSERT INTO reg_add ( 
connect_date, 
reg, 
first_name, 
last_name)

VALUES

('$_POST[connect_date]', 
'$_POST[reg]', 
'$_POST[first_name]', 
'$_POST[last_name]')";

$result = mysql_query($order);

if ($result) {

$reg =      $_REQUEST['reg'] ;
$first_name =   $_REQUEST['first_name'];

header("location: reg_add_success.php?reg=" . urlencode($reg) . "&first_name=" . urlencode($first_name));
}
else {
header("location: reg_add_fail.php");
}
?>
4

5 に答える 5

3

あなたがしていることは信じられないほど危険です。基本的に、悪意のあるユーザーにSQLインジェクションを実行するために必要なすべてのものを提供しています。

値を収集し、悪意のあるコードが含まれていないことを検証してから、挿入を実行します(必要なサフィックスを追加します)。

真剣に...これは起こることが保証されている災害です。

これをチェックしてください:http: //www.unixwiz.net/techtips/sql-injection.html

于 2012-04-24T04:45:29.060 に答える
2

まず、文字列に「v」を追加するだけです。

次に、プレーンなmysqlライブラリを使用しないでください。mysqli(MySQLが改善された)ライブラリを使用し、プリペアドステートメントを使用する必要があります。

http://php.net/manual/en/mysqli.prepare.php

そうしないと、コードがSQLインジェクションに対して脆弱になります

于 2012-04-24T05:16:02.280 に答える
0

当然のことながらできます。$_POST[reg] .= 'v';前に追加するだけ$order = "...です。

于 2012-04-24T04:44:56.760 に答える
0
$order = "INSERT INTO reg_add ( 
connect_date, 
reg, 
first_name, 
last_name)

VALUES

('$_POST[connect_date]', 
'{$_POST[reg]}v', 
'$_POST[first_name]', 
'$_POST[last_name]')";
于 2012-04-24T04:44:58.557 に答える
0
$reg = stripslashes($_POST['reg']);
$reg = sprintf("%s%s",$reg,'v');

'".mysql_real_escape_string($reg)."', 

MySQLにINSERTを作成するときは、すべてのVALUEにmysql_real_escape_string()関数が必要です。

于 2012-04-24T04:47:32.027 に答える