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)."', 

在将 INSERT 插入 MySQL 期间,每个 VALUE 都必须具有 mysql_real_escape_string() 函数。

于 2012-04-24T04:47:32.027 回答