Я пытаюсь понять, как я должен работать с символами в URLs
, это потому, что я создаю сайт, где пользователь может хранить контент и переходить на страницу контента, вводя его имя в URL
.
так, что-то вроде Wikipedia
или Last.FM
веб-сайта.
Я вижу на сайте, пользователь может написать что-то вроде<a href="http://it.wikipedia.org/wiki/Trentem%C3%B8ller" rel="nofollow noreferrer">http://it.wikipedia.org/wiki/Trentemøller</a>
и страница художника может дойти.
после загрузки страницы, если я скопирую URL, который я вижу, записанный как:<a href="http://it.wikipedia.org/wiki/Trentem%C3%B8ller" rel="nofollow noreferrer">http://it.wikipedia.org/wiki/Trentemøller</a>
но если я вставлю его в текстовый редактор, он будет вставлен как<a href="http://it.wikipedia.org/wiki/Trentem%C3%B8ller" rel="nofollow noreferrer">http://it.wikipedia.org/wiki/Trentem%C3%B8ller</a>
, поэтому символ ø
вставляется как %C3%B8
, конечно, то же самое относится и к URL-адресам, подобным этому (страница художника Такеши Кобаяси)
<a href="http://www.last.fm/music/%E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2" rel="nofollow noreferrer">http://www.last.fm/music/小林武史</a>
<a href="http://www.last.fm/music/%E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2" rel="nofollow noreferrer">http://www.last.fm/music/%E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2</a>
Если я цифрую первую или вторую, страница работает в любом случае, почему?
Я думаю, что я должен что-то сделать с .htacces
и mod_rewrite
, но яя не уверен, что специальные символы автоматически преобразуются в специальные символы url?
, а затем, как я могу разрешить PHP делать правильный запрос с именем содержимого?
, если яу меня есть таблица типа
table_users
- username
- age
- height
- weight
- sex
- email
- country
Я могу с помощью mod_rewrite
написать адрес, например <a href="http://mysite.com/user/bob" rel="nofollow noreferrer">http://mysite.com/user/bob</a>
, чтобы получить username
боб от table_users
, но как насчет <a href="http://mysite.com/user/%E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2" rel="nofollow noreferrer">http://mysite.com/user/小林武史</a>
?
здесь я показываю простой пример того, что я думаю сделать:
#.htaccess
RewriteEngine On
RewriteRule ^(user/)([a-zA-Z0-9_+-]+)([/]?)$ user.php?username=$2
<?php
// this is the page user.php
// this is the way I use to get the url value
print $_REQUEST["username"];
?>
это работает, но ограничено [a-zA-Z0-9 _ + -], как быть более совместимымсо всеми символами, как у других, без потерь слишком много безопасности?
Кто-нибудь знал, как избежать неприятностей?