Mysql 使用spé;ci&xE2;URL中的l字符
我正在开发一个可以让人们创建自己的翻译器的软件。他们可以选择URL的名称,并将其发送到数据库,我使用.htaccess重定向Mysql 使用spé;ci&xE2;URL中的l字符,mysql,url,urlencode,Mysql,Url,Urlencode,我正在开发一个可以让人们创建自己的翻译器的软件。他们可以选择URL的名称,并将其发送到数据库,我使用.htaccess重定向website.com/nameofirtranslator 致: website.com/translator.php?name=intertranslator的名称 这是我的问题: 最近,我注意到有人创建了一个名为->“LAEFÊVËŠI”的翻译人员 但是当它被处理(发布到一个php文件,然后mysqli\u real\u escape\u string)并添加到数据库
website.com/nameofirtranslator
致:
website.com/translator.php?name=intertranslator的名称
这是我的问题:
最近,我注意到有人创建了一个名为->“LAEFÊVËŠI”的翻译人员
但是当它被处理(发布到一个php文件,然后mysqli\u real\u escape\u string
)并添加到数据库时,它显示为简单的“LAEFVI”-因此您可以看到特殊字符丢失在某处
我不太确定该怎么办,但我认为有两条路:
website.com/LAEFÊVËŠI
这样的url-服务器可以解释吗
EDIT1:我注意到,在这个问题上,堆栈溢出将我标题中的特殊字符转换为../使用URL中的特殊字符
!这似乎是一个很好的解决方案,我想我可以制作一个函数,将特殊字符(如-)转换为它们的普通等价物(如-)?我想我会忽略其他字符,比如/#@',&
?现在我想起来了,一定有一些相当标准/良好的实践策略来解决这样的问题
EDIT2:事实上,现在我想起来了(更多)-我真的希望这个东西能被任何语言的人使用(不仅仅是英语),所以我真的很想在URL中有特殊的字符。说到这里,我刚刚发现Google不会将
解读为a
,所以如果我不将字母翻译成普通字符,人们可能很难找到LAEFÊVËŠI
译者。啊!好吧,在那疯狂的书信之后德,事情是这样的:
- 发现我正在用PHP
preg\u replace()
删除所有非字母数字字符
- 更改了
preg\u replace
,因此它只删除空格并使用rawurlencode()
:
$name=mysqli\u real\u escape\u string($con,rawurlencode(preg\u replace(“/\s/”,“”,$name));
- 现在一切都在数据库中编码,安全可靠
- 使用此重写规则
RewriteRule^([^/]+)$process.php?name=$1[B]
- 绕圈子跑了两个小时,觉得我的重写错了,因为我得到了“找不到页面”
- 意识到
process.php
没有rawurlencode()
来读取名称
$name=rawurlencode($\u GET['name']);
现在它起作用了
求爱!
睡眠时间。可能是重复的我对这个答案有点太新手了,对不起。我几乎不知道unicode是什么。编辑:它确实有帮助,只是让我一路忙个不停等等,现在我很困惑——关于这个问题的第三个答案是,URL中的unicode字符
等于これは、これを日本人のテキストです代码>?服务器是否有从日语到英语的逐字翻译?这是如何工作的?也许这需要一个新的问题…编辑:哦,没关系,这是错误的。堆栈溢出不关心url中问题id后面的内容。所以,基本上,我不知道发生了什么。嗯?等等,我只是使用这个urlencode()
功能,dn一切都能正常工作吗?