我得到了一个数据库,我不能修改它的内容。一切都很顺利,直到我通过链接传递URL中的一些变量,其中一个变量中的撇号(即"Frank's Used Cars")导致后面的变量不被传递。
这是当前正在传递的内容:
&var1=600&miles=44000&var2=Frank它应该是这样的:
&var2=600&miles=44000&var2=Frank's%20Used%20Cars%20&var3=111111111正如我所说的,问题在于撇号。我已经尝试在PHP myadmin上将数据库中的'dealer‘字段更改为'utf8_swedish_ci’,并且在MySQL连接排序规则中也将其从‘latin1_瑞典_ci’更改为这个字段。
显然,如果我去掉撇号,一切都很好,但我不能这样做。任何帮助都是最好的!
echo"<td>";
echo$row->var1;
echo"</td>";
echo"<td>";
echo$row->var2;
echo"</td>";
echo"<td>";
echo$row->dealer;
echo"</td>";
echo"<td><a href='look.php?price=$row->price&miles=$row->miles&dealer=$row->dealer'>More Info</a>动态url链接:
echo"<td>";
$url="look.php?make=".urlencode($row->make)."&model=".urlencode($row->model)."&colour=".urlencode($row->colour)."&Reg=".urlencode($row->Reg)."&miles=".urlencode($row->miles)."&price=".urlencode($row->price)."®ion=".urlencode($row->region)."&miles=".urlencode($row->miles);
echo"$urlHTML=htmlspecialchars($url)";
echo "<a href=\"$urlHTML\">More Info</a>";
echo"</td>";发布于 2013-08-19 20:49:57
提到了SQL注入,提到了urlencode,但从你的问题中还不清楚数据是在哪里被破坏的。
但是解决方案是相同的,不管它发生在哪里:
要将数据写入URL,请使用urlencode。
要将数据写入HTML,请使用htmlentities()
要将数据写入XML,请使用htmlspecialchars()
要将字符串数据写入7位电子邮件,请使用quoted_printable_encode()
要将二进制数据写入电子邮件,请使电子邮件MIME和base64对数据进行编码或使用uuencode()
要将数据写入MySQL查询字符串,请使用mysqli_real_escape_string()或参数绑定
..。
发布于 2012-04-12 06:38:50
请参阅this function。它会让你,在你构造了你的url字符串之后,自动转义它,这样问题就不会出现--或者许多其他类似的问题。
发布于 2012-04-12 15:59:44
首先,在URL中有一些字符需要转义,所以使用urlencode来建立您的url。
$url="look.php?price=".urlencode($row->price).
"&miles=".urlencode($row->miles).
"&dealer=".urlencode($row->dealer);这将确保您的URL按预期工作。这应该可以解决您的特定问题,但是如果您想生成有效的HTML (为什么不这样做呢?)您可以使用htmlspecialchars对HTML进行编码
$urlHTML=htmlspecialchars($url);
echo "<td><a href=\"$urlHTML\">More Info</a>";https://stackoverflow.com/questions/10114956
复制相似问题