首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Apostrophe问题

PHP Apostrophe问题
EN

Stack Overflow用户
提问于 2012-04-12 06:36:15
回答 4查看 3.2K关注 0票数 2

我得到了一个数据库,我不能修改它的内容。一切都很顺利,直到我通过链接传递URL中的一些变量,其中一个变量中的撇号(即"Frank's Used Cars")导致后面的变量不被传递。

这是当前正在传递的内容:

代码语言:javascript
复制
&var1=600&miles=44000&var2=Frank

它应该是这样的:

代码语言:javascript
复制
&var2=600&miles=44000&var2=Frank's%20Used%20Cars%20&var3=111111111

正如我所说的,问题在于撇号。我已经尝试在PHP myadmin上将数据库中的'dealer‘字段更改为'utf8_swedish_ci’,并且在MySQL连接排序规则中也将其从‘latin1_瑞典_ci’更改为这个字段。

显然,如果我去掉撇号,一切都很好,但我不能这样做。任何帮助都是最好的!

代码语言:javascript
复制
                            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链接:

代码语言:javascript
复制
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)."&region=".urlencode($row->region)."&miles=".urlencode($row->miles);
            echo"$urlHTML=htmlspecialchars($url)"; 
            echo "<a href=\"$urlHTML\">More Info</a>";
            echo"</td>";
EN

回答 4

Stack Overflow用户

发布于 2013-08-19 20:49:57

提到了SQL注入,提到了urlencode,但从你的问题中还不清楚数据是在哪里被破坏的。

但是解决方案是相同的,不管它发生在哪里:

  1. 始终在数据离开的位置对数据进行转义
  2. 始终根据数据的去向使用适当的方法进行转义

要将数据写入URL,请使用urlencode。

要将数据写入HTML,请使用htmlentities()

要将数据写入XML,请使用htmlspecialchars()

要将字符串数据写入7位电子邮件,请使用quoted_printable_encode()

要将二进制数据写入电子邮件,请使电子邮件MIME和base64对数据进行编码或使用uuencode()

要将数据写入MySQL查询字符串,请使用mysqli_real_escape_string()或参数绑定

..。

票数 1
EN

Stack Overflow用户

发布于 2012-04-12 06:38:50

请参阅this function。它会让你,在你构造了你的url字符串之后,自动转义它,这样问题就不会出现--或者许多其他类似的问题。

票数 0
EN

Stack Overflow用户

发布于 2012-04-12 15:59:44

首先,在URL中有一些字符需要转义,所以使用urlencode来建立您的url。

代码语言:javascript
复制
$url="look.php?price=".urlencode($row->price).
   "&miles=".urlencode($row->miles).
   "&dealer=".urlencode($row->dealer);

这将确保您的URL按预期工作。这应该可以解决您的特定问题,但是如果您想生成有效的HTML (为什么不这样做呢?)您可以使用htmlspecialchars对HTML进行编码

代码语言:javascript
复制
$urlHTML=htmlspecialchars($url); 
echo "<td><a href=\"$urlHTML\">More Info</a>";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10114956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档