PHP создать красивую строку запроса из длинной строки запроса - PullRequest
0 голосов
/ 13 сентября 2011

я хочу создать красивую строку запроса из длинной и понятной строки запроса

например

http://www.domain.com/play.php?a=10&b=20&c=30

Во-первых, это длинная строка запроса, а во-вторых, понятно, что значение a, b & c.

я хочу php функцию, которая преобразует всю строку запроса в a=10&b=20&c=30 в некоторый текст, такой как f4cdret4

и затем я передаю то же самое, что и

http://www.domain.com/play.php?q=f4cdret4

и в play.php я снова конвертирую обратно f4cdret4 в a=10&b=20&c=30

Я пытаюсь найти что-то подобное, но много дней не добиваюсь успеха.

Спасибо

Ответы [ 3 ]

1 голос
/ 13 сентября 2011

Вы можете использовать некоторые функции преобразования строк, чтобы скрыть настоящую строку запроса.Вот простой пример, который я придумал, используя bin2hex и pack

<?php
$str = 'a=10&b=5&c=20&d=6';
$encoded = bin2hex($str);
echo $encoded;
echo "\n";
echo pack("H*",$encoded);
?>

пример Вы можете использовать bin2hex для его кодирования и pack для его декодирования.

1 голос
/ 13 сентября 2011

Это ПЛОХАЯ идея с точки зрения удобства использования. Я как пользователь был бы раздражен с вами. Я рекомендую вам прочитать о URL Design .

Также звучит так, будто вы хотите что-то скрыть от пользователя. Если это так, то небезопасно , если вы делаете что-то вроде

$url .= '?q=' . base64_encode(http_build_query($parms));
0 голосов
/ 13 сентября 2011

Вообще говоря, вы не хотите отделять ваш URL от какого-либо подобия смысла для пользователя, если только вы не значительно сокращаете его для использования в ограниченных по характеру настройках, таких как пост в Твиттере.

Тем не менее, есть несколько способов реализовать это. Вы можете:

  • Предварительно сгенерируйте эти URL-адреса и сохраните строку запроса с перекрестными ссылками в базе данных (используйте «f4cdret4» в качестве уникального индекса, «a = 10 & b = 20 & c = 30» в качестве второго столбца)
  • Разбейте их вместе с каким-то разделителем (a = 10 & b = 20 & c = 30 становится "a10-b20-c30")
  • Используйте htaccess для создания псевдо-каталогов (a = 10 & b = 20 и c = 30 становится "mydomain.com/q/10/20/30")

    RewriteEngine On

    RewriteRule /q/(.*)/(.*)/(.*)$ /page/play.php?a=$1&b=$2&c=$3

...